- Changed the exit code from 1 to 0 for
lswhen used with an empty bucket. Exits with 1 if the bucket is non-existent. (#722) @Z9n2JktHlZDmlhSvqc9X2MmL3BwQG7tk
- Added prefix and wildcard support to
catcommand. (#716) @occasionallydavid - Added
headcommand. (#682) @yitzhaklevi - Added go 1.22 support. (#764) @lizzzcai
- Added
meta-directiveflag tocpcommand. (#666 #711) @GordonGustafson @arosu
- Upgraded alpine base image to 3.18. (#661) @embik
- Upgraded aws-sdk-go to v1.44.298. (#684) @matan129
- Upgraded lanrat/extsort to v1.0.2 (#717) @gkowarzyk
- Changed signaling channels by replacing
chan boolwithchan struct{}for efficiency. (#733)
- Fixed the
cpcommand to work with the--content-typeflag when performing a copy operation from S3 to S3. (#738) - Fixed a bug in
synccommand where objects in Glacier storage at the destination were being overwritten during synchronization (#712) @stevenmcastano - Fixed a bug in
synccommand where source objects with absolute paths failed to match destination paths, causing unnecessary copying during each sync operation.(#676) @bounlu
- Fixed
cpandpipeto not omit some of the metadata flags. (#657)
- Fixed incorrect
s5cmd versionoutput (#650)
- Added
pipecommand. (#182) - Added
presigncommand. (#634) @zemul - Added file types to
selectqueries with more range of options to set during the query. (#494) - Added
--content-dispositionflag tocpcommand. (#569) - Added
--show-fullpathflag tolscommand. (#596) - Added
--show-progressflag tocpcommand. (#51) - Added
--metadataflag tocpandpipecommands to set arbitrary metadata for the objects. (#537) - Added
--includeflag tocp,rm, andsynccommands. (#516) - Added
--content-dispositionflag tocpcommand. (#569)
- Implemented concurrent multipart download support for
catcommand. (#245) - Upgraded minimum required Go version to 1.19. (#583)
ListObjectsV2S3 API is enabled for Google Cloud Storage. (#617)- Added installation instructions for FreeBSD. (#573) @ehaupt
- Added
ppc64lesupport. (#552) @mgiessing
- Fixed a bug that causes
synccommand with whitespaced flag value to fail. (#541) ataberkgrl - Fixed a bug introduced with
external sortsupport insynccommand which preventssyncto an empty destination with--deleteoption. (#576) - Fixed a bug in
synccommand, which previously caused the command to continue running even if an error was received from the destination bucket. (#564) - Fixed a bug that causes local files to be lost if downloads fail. (#479)
- Fixed a bug where
cpcommand could not upload a non-regular file to remote destination. (#618) - Fixed a crash where a file or a remote object is removed or renamed after it is listed to be operated on. (#620)
- Adjacent slashes in key are no longer removed when uploading to remote. Before
s5cmd cp file.txt s3://bucket/a//b///c/would copy tos3://bucket/a/b/c/file.txtbut now tos3://bucket/a//b///c/file.txt.(#459) --endpoint-urlwill not accept URLs without scheme such asexample.com. Instead, it will give an error and ask for an url with a scheme; eitherhttp://example.comorhttps://example.com(#496).
- Added
--content-typeand--content-encodingflags tocpcommand. (#264) - Added
--profileflag to allow users to specify a named profile. (#353) - Added
--credentials-fileflag to allow users to specify path for the AWS credentials file instead of using the default location. - Added
--all-versionsflag tols,rm,duandselectsubcommands to apply operation on(/over) all versions of the objects. (#475) - Added
--version-idflag tocat,cp/mv,rm,duandselectsubcommands to apply operation on(/over) a specific versions of the object. (#475) - Added
bucket-versioncommand to configure bucket versioning. Bucket name alone returns the bucket versioning status of the bucket. Bucket versioning can be configured withsetflag. (#475) - Added
--rawflag tocatandselectsubcommands. It disables the wildcard operations. (#475) - Added
bench.pyscript under newbenchmarkfolder to compare performances of two different builds of s5cmd. (#471)
- Disable AWS SDK logger if log level is not
trace. (#460) - Allow adjacent slashes to be used as keys when uploading to remote. (#459)
- Debian packages are provided on releases page (#380)
- Upgraded minimum required Go version to 1.17.
- The sync command uses
external sortinstead ofinternalsort. This change reduces RAM usage from ~10 GB to ~1.5 GB forsyncoperation of a directory containing 1,000,000 files at a cost of speed (20% slower for 1,000,000 objects). For smaller directories (~50,000 files) there is no significant change in speed. (#483) - Improve auto-completion support of s5cmd for
zshandbash, start supportingpwshand stop the support forfish. Now s5cmd can complete bucket names, s3 keys in a bucket and the local files. However,install-completionflag no longer installs the completion script to*rcfiles instead it merely gives instructions to install autocompletion and provides the autocompletion script (#500).
- Fixed a bug where (
--stat) prints unnecessarily when used with help and version commands (#452) - Changed cp error message to be more precise. "given object not found" error message now will also include absolute path of the file. (#463)
- Fixed a bug where some part of the destination path is removed by
cpandsyncsubcommands (#360) - Fixed a bug where proxy is not being used when
--no-verify-sslflag is used. (#445) - Fixed
unknown url formaterror when object key also includess3://e.g.s5cmd ls s3://foo/bar/s3://baz(#449) - Fixed a bug where the local file created for the download operation was not deleted if the download fails in Windows. (#348)
- Dropped inline comment feature for
runcommand. Previously s5cmd supported a command with an inline comment likels s3://bucket/object.gz # inline comment. (#309) - Changed homebrew installation command on macOS. Users can install s5cmd via
brew install peak/tap/s5cmd. (#356) - Print usage errors to stderr instead of stdout and do not show help text on usage error. (#399)
- Working directory of the Docker image changed to
/awsfrom/. (#412)
- Added
synccommand to synchronize two given buckets, prefixes, or objects. (#3) - Added AWS Single Sign-On (SSO) profiles support. (#385)
- Added
--force-glacier-transferflag toselectcommand. (#346) - Added
--ignore-glacier-warningsflag tocp,mvandselectcommands. (#346) - Added
--request-payerflag to includex-amz-request-payerin header while sending GET, POST and HEAD requests. (#297) @Kirill888 - Added
--use-list-objects-v1flag to force using S3 ListObjects API instead of ListObjectsV2 API. (#405) @greenpau - Added trace log level(
--log=trace) which enables SDK debug logs.(#363)
- Upgraded minimum required Go version to 1.16.
- Fixed a bug about precedence of region detection, which auto region detection would always override region defined in environment or profile. (#325)
- Fixed a bug where errors did not result a non-zero exit code. (#304)
- Print error if the commands file of
runcommand is not accessible. (#410) - Updated region detection call to use current session's address resolving method (#314)
- Fixed a bug where lines with large tokens fail in
runcommand.syncwas failing when it finds multiple files to remove. (#435, #436) - Print usage error if given log level(
--log) is not valid. (#430) - Fixed a bug where (
--stat) is ignored when log level is error. (#359)
- Added
selectcommand. It allows to select JSON records from objects using SQL expressions. (#299) @skeggse - Added
rbcommand to remove buckets. (#303) - Added
--excludeflag tocp,rm,ls,duandselectcommands. This flag allows users to exclude objects with given pattern. (#266) - Added
--rawflag tocpandrmcommands. It disables the wildcard operations. It is useful when an object contains glob characters which interfers with glob expansion logic. (#235) - Added
--cache-controland--expiresflags tocpandmvcommands. It adds support for setting cache control and expires header to S3 objects. (#318) @tombokombo - Added
--force-glacier-transferflag tocpcommand. It forces a transfer request on all Glacier objects. (#206) - Added
--source-regionanddestination-regionflags tocpcommand. It allows overriding bucket region. (#262) @kemege
- Added
MacPortsinstallation option. (#311) @manojkarthick - Added
S3_ENDPOINT_URLenvironment variable (#343) @Dexus - Prevent retries if a token related error is received (#337)
- Change the order of precedence in URL expansion in file system. Glob (*) expansion have precedence over directory expansion. (#322)
- Fixed data race for concurrent writes for expand (#330)
- Fixed concurrent writes to the flags list of run command (#335)
- Fixed options usage on mv command (#338)
- Added global
--no-sign-requestflag. API requests won't be signed and credentials won't be used if this option is provided. It is useful for accessing public buckets. (#285)
- If retryable errors are received during command execution, users now can see what's happening under the hood. (#261)
- Update documentation about the AWS_PROFILE environment variable. (#275) @davebiffuk
- Fixed a bug where write-bit was required to upload a file. (#258)
- Fixed a bug where object could not be found if S3 key contains certain special characters. (#279) @khacminh
s5cmdexits with code1if given command is not found. It was0before. (#295)
- Statically link
s5cmdin Docker image (#250)
With this release, s5cmd automatically determines region information of destination buckets.
- Added global
--dry-runoption. It displays which command(s) will be executed without actually having a side effect. (#90) - Added
--statoption fors5cmdand it displays program execution statistics before the end of the program output. (#148) - Added cross-region transfer support. Bucket regions are inferred, thus, supporting cross-region transfers and multiple regions in batch mode. (#155)
- Fixed incorrect MIME type inference for
cp, give priority to file extension for type inference. (#214) - Fixed error reporting issue, where some errors from the
lsoperation were not printed.
- Requests to different buckets not allowed in
rmbatch operation, i.e., throw an error. - AWS S3
RequestTimeTooSkewedrequest error was not retryable before, it is now. (205) - For some operations errors were printed at the end of the program execution. Now, errors are displayed immediately after being detected. (#136)
- From now on, docker images will be published on Docker Hub. (#238)
- Changed misleading 'mirroring' examples in the help text of
cp. (#213)
With this release, Windows is supported.
- Dropped storage class short codes display from default behaviour of
lsoperation. Instead, use-sflag withlsto see full names of the storage classes when listing objects.
- Added Server-side Encryption (SSE) support for mv/cp operations. It uses customer master keys (CMKs) managed by AWS Key Management Service. (#18)
- Added an option to show full form of storage class when listing objects. (#165)
- Add access control lists (ACLs) support to enable managing access to buckets and objects. (#26)
- Fixed infinite repetition issue on mv/cp operations which would occur if the destination matched the source wildcard. (#168)
- Fixed windows filepath issue, where backslashes should be treated as the path delimiter. (#178)
- All tests pass on windows, by converting and treating file paths to UNIX filepath format.
- Fixed a transfer issue where the object path contains particular regex metacharacters. (#111) @brendan-matroid
- Correctly parse object paths that contain whitespaces in run-mode. (#111) @brendan-matroid
- Retry when connection closed by S3 unexpectedly. (#189) @eminugurkenar
This is a major release with many breaking changes.
- Dropped
getcommand. Users could get the same effect withs5cmd cp <src> .. - Dropped
nested commandsupport. - Dropped
!command. It was used to execute shell commands and was used in conjunction with nested commands. s5cmd -fands5cmd -f -usage has changed tos5cmd run.runcommand accepts a file. If not provided, it'll listen for commands from stdin.- Exit code for errors was
127. It is1now. - Dropped
exitcommand. It was used to change the shell exit code and usually a part of the nested command usage. - Dropped local->local copy and move support. (#118)
- All error messages are sent to stderr now.
-versionflag is changed toversioncommand.- Dropped
batch-rmcommand. It was not listed in the help output. Now that we support variadic arguments, users can remove multiple objects by providing wildcards or multiple arguments tos5cmd rmcommand. (#106) - Virtual host style bucket name
resolving
is enabled by default for S3 and GCS. If you provide a custom endpoint via
--endpoint-urlflag (other than GCS and S3 transfer acceleration),s5cmdwill fall back to thepath-style. (#92) - Listing a non-existent object will return exit code
1, instead of0. (#23) -ds,-dw,-usand-uwglobal flags are no longer available. Multipart concurrency and part size flags are now part of thecp/mvcommand. New replacement flags are--concurrency | -cand--part-size | -p. (#110)- s5cmd
cpcommand follows symbolic links by default (only when uploading to s3 from local filesystem). Use--no-follow-symlinksflag to disable this feature. (#17) - Dropped
-parentsflag from copy command. Copy behaviour has changed to preserve the directory hierarchy as a default. Optional-flattenflag is added to flatten directory structure. (#107) - Dropped
-vvverbosity flag.--logflag is introduced.
- Added
mbcommand to make buckets. (#25) - Added
--jsonflag for JSON logging. (#22) - Added S3 transfer acceleration support. (#40)
- Added Google Cloud Storage support. (#81)
- Added
catcommand to print remote object contents to stdout (#20)
- Correctly set
Content-Typeof a file on upload operations. (#33) - Fixed a bug where workers are unable to consume job if there are too many outstanding wildcard expansion requests. (#12, #58)
- Pre-compiled binaries are provided on releases page (#21)
- AWS Go SDK is updated to support IAM role for service accounts. (#32)
- For copy/move operations,
s5cmdnow creates destination directory if missing. - Increase the soft limit of open files to 1000 and exits immediately when it encounters
too many open fileserror. (#52)
- Use go modules.
- Update minimum required Go version to 1.13.
- Fix bug in brew install.
- Update travis configuration.
- Integrate Travis CI.
- Add option to disable SSL verification.
- Add endpoint url flag to support S3 compatible services.
- Use client's endpoint in GetSessionForBucket.
- Upgrade minimum required Go version to 1.7.
- Use 50mb chunks by default.
- Add human-readable output option -H.
- Implement "command -h".
- Refactor retryable error handling.
- Autodetect bucket region in command completion.
- Add HomeBrew formula.
- Add -s and -u options to overwrite files if sizes differ or files are lastly modified.
- Use constructor for *JobArgument.
- Add -dlw, -dlp and -ulw configuration options for worker pool.
- Fix get/cp without 2nd param or exact destination filename.
- Implement shell auto completion.
- Add context support for batch AWS requests.
- Implement "s5cmd get".
- Reduce idle-timer values.
- Add option -vv to log parser errors verbosely.
- Implement "du -g" to group by storage class.
- Use Go bool type instead of aws.Bool on recoverer.
- Make RequestError retryable.
- Implement verbose output (-vv flag).
- Add godoc for error types.