{"id":37229171,"url":"https://github.com/mobydeck/s3-cli","last_synced_at":"2026-01-15T03:31:31.944Z","repository":{"id":332003211,"uuid":"1132435419","full_name":"mobydeck/s3-cli","owner":"mobydeck","description":"Console S3 client","archived":false,"fork":false,"pushed_at":"2026-01-12T00:19:08.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-12T04:43:22.325Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mobydeck.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-12T00:17:14.000Z","updated_at":"2026-01-12T00:18:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mobydeck/s3-cli","commit_stats":null,"previous_names":["mobydeck/s3-cli"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mobydeck/s3-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mobydeck%2Fs3-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mobydeck%2Fs3-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mobydeck%2Fs3-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mobydeck%2Fs3-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mobydeck","download_url":"https://codeload.github.com/mobydeck/s3-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mobydeck%2Fs3-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28442285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:55:22.719Z","status":"online","status_checked_at":"2026-01-15T02:00:08.019Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-15T03:31:31.252Z","updated_at":"2026-01-15T03:31:31.932Z","avatar_url":"https://github.com/mobydeck.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `s3` — a console S3 client\n\n`s3` is a command-line utility for performing common S3 operations from your terminal.\n\nIt’s a hard fork of [`s3-cli`](https://github.com/koblas/s3-cli), inspired by [`s3cmd`](https://github.com/s3tools/s3cmd), and aims to be a practical drop-in replacement for many everyday workflows.\n\n## Features\n\n- Compatible with [`s3cmd`](https://github.com/s3tools/s3cmd)’s config file format\n- Supports a subset of `s3cmd` commands and flags, including:\n  - `put`, `get`, `del`, `ls`, `sync`, `cp`\n  - smarter path handling for `get`/`put`/`cp` (copy to/from S3, and S3↔S3)\n- Faster directory syncs by uploading multiple files in parallel (better bandwidth utilization)\n- Multipart uploads for large files, with parallel part uploads (via the SDK’s S3 manager)\n- More efficient CPU and local resource usage\n\n## Install\n\nDownload a binary from the GitHub Releases page.\n\n## Configuration\n\n`s3` supports both `s3cmd`-style config files (`.s3cfg` / `~/.s3cfg`) and the standard AWS shared config files (`~/.aws/config` and `~/.aws/credentials`).\n\n### `.s3cfg` / `~/.s3cfg` (s3cmd format) and profiles\n\nThe `.s3cfg` / `~/.s3cfg` file is an INI file with one or more sections. Credentials and settings are loaded from the selected section (profile). If no profile is specified, `s3` uses the `[default]` section.\n\nExample `~/.s3cfg`:\n\n```ini\n[default]\naccess_key = foo\nsecret_key = bar\n\n[profile1]\naccess_key = foo1\nsecret_key = bar1\n```\n\nSelect a profile via CLI:\n\n```bash\ns3 --profile profile1 cp file1 s3://bucket/file1\ns3 -p profile1 cp file1 s3://bucket/file1\n```\n\nOr via environment variable:\n\n```bash\nAWS_PROFILE=profile1 s3 cp file1 s3://bucket/file1\n```\n\n### Config file resolution order\n\nIf you do not pass `--config`, `s3` will try config files in this order:\n\n1. `./.s3cfg` (current working directory), if present\n2. `~/.s3cfg`\n\nTo use a different config file path explicitly:\n\n```bash\ns3 --config /path/to/s3cmd.conf ...\n```\n\n### Fallback to `~/.aws` shared config\n\nIf credentials are not provided via `~/.s3cfg` and not provided via environment variables, `s3` falls back to the AWS SDK’s standard credential and config resolution (including `~/.aws/config`, `~/.aws/credentials`, and `AWS_PROFILE`).\n\n### Region\n\nYou can override the AWS region used for requests with `--region` (or `AWS_REGION` / `AWS_DEFAULT_REGION`):\n\n```bash\ns3 --region us-east-1 ls\nAWS_REGION=us-east-1 s3 ls\n```\n\nWhen using a custom `--endpoint`, the client does not attempt AWS bucket region discovery.\n\n## Usage and command reference\n\nIn general, command flags and behavior are guided by `rsync` and common Unix CLI conventions.\n\n### Endpoint override\n\nYou can override the S3 endpoint used for requests with `--endpoint` / `-e` (useful for S3-compatible servers like MinIO):\n\n```bash\ns3 --endpoint https://custom-s3.example.com cp file1 s3://bucket/file1\ns3 -e https://custom-s3.example.com cp file1 s3://bucket/file1\n```\n\nNotes:\n\n- `s3` uses path-style bucket addressing for S3 connections.\n- If you don’t provide explicit credentials in `.s3cfg` / `~/.s3cfg` (or via `--access-key` / `--secret-key`), the AWS SDK credential chain may be used (including `~/.aws/credentials` / `~/.aws/config`). When talking to a non-AWS endpoint, you typically want credentials that exist on that server.\n\n### `cp`\n\nCopy files to and from S3.\n\nExamples:\n\n```bash\ns3 cp /path/to/file s3://bucket/key/on/s3\ns3 cp s3://bucket/key/on/s3 /path/to/file\ns3 cp s3://bucket/key/on/s3 s3://another-bucket/some/thing\n```\n\n### `get`\n\nDownload a file from S3 (alias for `cp`).\n\n### `put`\n\nUpload a file to S3 (alias for `cp`).\n\n### `del`\n\nDelete an object or a “directory” prefix on S3.\n\nExample:\n\n```bash\ns3 del [--recursive] s3://bucket/key/on/s3/\n```\n\n### `rm`\n\nAlias for `del`.\n\n```bash\ns3 rm [--recursive] s3://bucket/key/on/s3/\n```\n\n### `sync`\n\nSync between a local directory and S3.\n\n```bash\ns3 sync [--delete-removed] /path/to/folder/ s3://bucket/key/on/s3/\n```\n\n### `mv`\n\nMove an object already stored in S3.\n\nExample:\n\n```bash\ns3 mv s3://sourcebucket/source/key s3://destbucket/dest/key\n```\n\n## `s3cmd` compatibility\n\n### Implemented\n\n- `s3cmd mb s3://BUCKET`\n- `s3cmd rb s3://BUCKET`\n- `s3cmd ls [s3://BUCKET[/PREFIX]]`\n- `s3cmd la`\n- `s3cmd put FILE [FILE...] s3://BUCKET[/PREFIX]`\n- `s3cmd get s3://BUCKET/OBJECT LOCAL_FILE`\n- `s3cmd del s3://BUCKET/OBJECT`\n- `s3cmd rm s3://BUCKET/OBJECT`\n- `s3cmd du [s3://BUCKET[/PREFIX]]`\n- `s3cmd cp s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]`\n- `s3cmd modify s3://BUCKET1/OBJECT`\n- `s3cmd sync LOCAL_DIR s3://BUCKET[/PREFIX]` or `s3cmd sync s3://BUCKET[/PREFIX] LOCAL_DIR`\n- `s3cmd info s3://BUCKET[/OBJECT]`\n\n### Not yet implemented (for broader compatibility)\n\n- `s3cmd restore s3://BUCKET/OBJECT`\n- `s3cmd mv s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]`\n- `s3cmd setacl s3://BUCKET[/OBJECT]`\n- `s3cmd setpolicy FILE s3://BUCKET`\n- `s3cmd delpolicy s3://BUCKET`\n- `s3cmd setcors FILE s3://BUCKET`\n- `s3cmd delcors s3://BUCKET`\n- `s3cmd payer s3://BUCKET`\n- `s3cmd multipart s3://BUCKET [Id]`\n- `s3cmd abortmp s3://BUCKET/OBJECT Id`\n- `s3cmd listmp s3://BUCKET/OBJECT Id`\n- `s3cmd accesslog s3://BUCKET`\n- `s3cmd sign STRING-TO-SIGN`\n- `s3cmd signurl s3://BUCKET/OBJECT \u003cexpiry_epoch|+expiry_offset\u003e`\n- `s3cmd fixbucket s3://BUCKET[/PREFIX]`\n- `s3cmd ws-create s3://BUCKET`\n- `s3cmd ws-delete s3://BUCKET`\n- `s3cmd ws-info s3://BUCKET`\n- `s3cmd expire s3://BUCKET`\n- `s3cmd setlifecycle FILE s3://BUCKET`\n- `s3cmd dellifecycle s3://BUCKET`\n- `s3cmd cflist`\n- `s3cmd cfinfo [cf://DIST_ID]`\n- `s3cmd cfcreate s3://BUCKET`\n- `s3cmd cfdelete cf://DIST_ID`\n- `s3cmd cfmodify cf://DIST_ID`\n- `s3cmd cfinvalinfo cf://DIST_ID[/INVAL_ID]`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmobydeck%2Fs3-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmobydeck%2Fs3-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmobydeck%2Fs3-cli/lists"}