Releases: peak/s5cmd
v2.3.0
Changelog
v2.3.0 - 16 Dec 2024
Breaking changes
- Changed the exit code from 1 to 0 for
ls
when used with an empty bucket. Exits with 1 if the bucket is non-existent. (#722) @Z9n2JktHlZDmlhSvqc9X2MmL3BwQG7tk
Features
- Added prefix and wildcard support to
cat
command. (#716) @occasionallydavid - Added
head
command. (#682) @yitzhaklevi - Added go 1.22 support. (#764) @lizzzcai
- Added
meta-directive
flag tocp
command. (#666 #711) @GordonGustafson @arosu
Improvements
- 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 bool
withchan struct{}
for efficiency. (#733)
Bugfixes
- Fixed the
cp
command to work with the--content-type
flag when performing a copy operation from S3 to S3. (#738) - Fixed a bug in
sync
command where objects in Glacier storage at the destination were being overwritten during synchronization (#712) @stevenmcastano - Fixed a bug in
sync
command where source objects with absolute paths failed to match destination paths, causing unnecessary copying during each sync operation.(#676) @bounlu
v2.2.2
v2.2.1
v2.2.0
v2.2.0 - 21 Aug 2023
Features
- Added
pipe
command. (#182) - Added
presign
command. (#634) @zemul - Added file types to
select
queries with more range of options to set during the query. (#494) - Added
--include
flag tocp
,rm
, andsync
commands. (#516) - Added
--show-progress
flag tocp
command. (#51) - Added
--content-disposition
flag tocp
command. (#569) - Added
--show-fullpath
flag tols
command. (#596) - Added
--metadata
flag tocp
andpipe
commands to set arbitrary metadata for the objects. (#537)
Improvements
- Implemented concurrent multipart download support for
cat
command. (#245) - Upgraded minimum required Go version to 1.19. (#583)
ListObjectsV2
S3 API is enabled for Google Cloud Storage. (#617)- Added installation instructions for FreeBSD. (#573) @ehaupt
- Added
ppc64le
support. (#552) @mgiessing
Bugfixes
- Fixed a bug that causes
sync
command with whitespaced flag value to fail. (#541) ataberkgrl - Fixed a bug introduced with
external sort
support insync
command which preventssync
to an empty destination with--delete
option. (#576) - Fixed a bug in
sync
command, 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
cp
command 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)
v2.1.0
Changelog
Breaking changes
- 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.txt
but now tos3://bucket/a//b///c/file.txt
.(#459) --endpoint-url
will not accept URLs without scheme such asexample.com
. Instead, it will give an error and ask for an url with a scheme; eitherhttp://example.com
orhttps://example.com
(#496).
Features
- Added
--content-type
and--content-encoding
flags tocp
command. (#264) - Added
--profile
flag to allow users to specify a named profile. (#353) - Added
--credentials-file
flag to allow users to specify path for the AWS credentials file instead of using the default location. - Added
--all-versions
flag tols
,rm
,du
andselect
subcommands to apply operation on(/over) all versions of the objects. (#475) - Added
--version-id
flag tocat
,cp
/mv
,rm
,du
andselect
subcommands to apply operation on(/over) a specific versions of the object. (#475) - Added
bucket-version
command to configure bucket versioning. Bucket name alone returns the bucket versioning status of the bucket. Bucket versioning can be configured withset
flag. (#475) - Added
--raw
flag tocat
andselect
subcommands. It disables the wildcard operations. (#475) - Added
bench.py
script under newbenchmark
folder to compare performances of two different builds of s5cmd. (#471)
Improvements
-
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 sort
instead ofinternal
sort. This change
reduces RAM usage from ~10 GB to ~1.5 GB forsync
operation 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
zsh
andbash
, start supportingpwsh
and stop the support forfish
. Now s5cmd can complete bucket names, s3 keys in a bucket and the local files. However,install-completion
flag no longer installs the completion script to*rc
files instead it merely gives instructions to install autocompletion and provides the autocompletion script (#500).
Bugfixes
- 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
cp
andsync
subcommands (#360) - Fixed a bug where proxy is not being used when
--no-verify-ssl
flag is used. (#445) - Fixed
unknown url format
error 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)
v2.1.0-beta.1
Changelog
- c02fdb6 Add a packaging badge (#439)
- 914e701 Add benchmark script to compare two different builds of s5cmd (#471)
- 36d74f6 Add installation instructions for conda (#468)
- 6e3fc4f Change cp error not being descriptive (#463)
- 38b0fdf Make it possible to override content-type and content-encoding from CLI arguments (#467)
- d5dde3c Remove stat flag unnecessary prints (#455)
- eea87b1 Update changelog for v2.0.0 (#458)
- 8220438 changelog: update Improvements sections (#473)
- 2a6c7cc ci: use Go 1.19 for builds, remove 1.16 support (#481)
- 84c3696 command/app: force
endpoint-url
to have scheme (#496) - 5e867c9 command: add extensive autocompletion support (#500)
- 13aa68a command: fix target file is created despite the download failure (#477)
- 7c90f8a command: retry upload on s3.NoSuchUpload (#470)
- 5b64469 disable aws sdk logger if log level is not "trace" (#460)
- 711ddf0 e2e/app_test: fix failed test due to new cleanup (#504)
- d949fe0 e2e/util_test: enable tests to work using external endpoint (#506)
- 37e9a68 e2e/util_test: remove unnecessary test directory cleanup (#512)
- d50ef44 e2e: refactor cleanup behavior using t.Cleanup (#502)
- c67760e goreleaser: add nfpm configuration for Debian packages (#437)
- 88a4641 log, parallel: fix help flag panicking (#509)
- 90b7418 main: use
signal.NotifyContext
to handle signals (#510) - 3e08061 readme: fix
ci
badge URL (#546) - e9c4d7e readme: we dont support inline comments since v2 (#486)
- c01c5a2 storage/s3: Fix proxy with no-verify-ssl flag (#457)
- d21a491 storage/s3: add
SlowDown
as retryable (#507) - 6b87fb4 storage/url: Allow usage of adjacent slashes (#459)
- 22592e5 storage/url: add nil check for URL.filterRegex in URL.Match (#511)
- 83ce8bc storage/url: allow wildcards to match new line characters (#505)
- 6727b11 storage/url: fixes the bug where some part of destination path is removed by cp (#456)
- 717bf5b storage: add profile flag (#453)
- 73f4abb storage: remove unused
notImplemented
type (#476) - a8a226f update readme: add a section about numworkers/concurrency (#465)
- deb16c9 vendor: update urfave/cli to
v2.11.2
(#495) - 123b1c7 vendor: upgrade gofakes3 to v0.0.11 (#472)
v2.0.0
Changelog
Breaking changes
- Dropped inline comment feature for
run
command. 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
/aws
from/
. (#412)
Features
- Added
sync
command to synchronize two given buckets, prefixes, or objects. (#3) - Added AWS Single Sign-On (SSO) profiles support. (#385)
- Added
--force-glacier-transfer
flag toselect
command. (#346) - Added
--ignore-glacier-warnings
flag tocp
,mv
andselect
commands. (#346) - Added
--request-payer
flag to includex-amz-request-payer
in header while sending GET, POST and HEAD requests. (#297) @Kirill888 - Added
--use-list-objects-v1
flag to force using S3 ListObjects API instead of ListObjectsV2 API. (#405) @greenpau - Added trace log level(
--log=trace
) which enables SDK debug logs.(#363)
Improvements
- Upgraded minimum required Go version to 1.16.
Bugfixes
- 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
run
command 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
run
command.sync
was 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)
v2.0.0-beta.2
Changelog
Breaking changes
- Dropped inline comment feature for
run
command. 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
/aws
from/
. (#412)
Features
- Added
sync
command to synchronize two given buckets, prefixes, or objects. (#3) - Added AWS Single Sign-On (SSO) profiles support. (#385)
- Added
--force-glacier-transfer
flag toselect
command. (#346) - Added
--ignore-glacier-warnings
flag tocp
,mv
andselect
commands. (#346) - Added
--request-payer
flag to includex-amz-request-payer
in header while sending GET, POST and HEAD requests. (#297) @Kirill888 - Added
--use-list-objects-v1
flag to force using S3 ListObjects API instead of ListObjectsV2 API. (#405) @greenpau
Improvements
- Upgraded minimum required Go version to 1.16.
Bugfixes
- 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
run
command 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
run
command.sync
was failing when it finds multiple files to remove. (#435, #436)
v2.0.0-beta
Changelog
Breaking changes
- Dropped inline comment feature for
run
command. 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)
Features
- Added
sync
command to synchronize two given buckets, prefixes, or objects. (#3) - Added AWS Single Sign-On (SSO) profiles support. (#385)
- Added
--force-glacier-transfer
flag toselect
command. (#346) - Added
--ignore-glacier-warnings
flag tocp
,mv
andselect
commands. (#346) - Added
--request-payer
flag to includex-amz-request-payer
in header while sending GET, POST and HEAD requests. (#297) @Kirill888 - Added
--use-list-objects-v1
flag to force using S3 ListObjects API instead of ListObjectsV2 API. (#405) @greenpau
Improvements
- Upgraded minimum required Go version to 1.16.
Bugfixes
- 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
run
command is not accessible. (#410) - Updated region detection call to use current session's address resolving method (#314)
v1.4.0
Changelog
Features
- Added
select
command. It allows to select JSON records from objects using SQL expressions. (#299) @skeggse - Added
rb
command to remove buckets. (#303). - Added
--exclude
flag tocp
,rm
,ls
,du
andselect
commands. This flag allows users to exclude objects with given pattern. (#266) - Added
--raw
flag tocp
andrm
commands. It disables the wildcard operations. It is useful when an object contains glob characters which interfers with glob expansion logic. (#235) - Added
--cache-control
and--expires
flags tocp
andmv
commands. It adds support for setting cache control and expires header to S3 objects. (#318) @tombokombo - Added
--force-glacier-transfer
flag tocp
command. It forces a transfer request on all Glacier objects. (#206) - Added
--source-region
anddestination-region
flags tocp
command. It allows overriding bucket region. (#262) @kemege
Improvements
- Added
MacPorts
installation option. (#311) @manojkarthick - Added
S3_ENDPOINT_URL
environment variable (#343) @Dexus - Prevent retries if a token related error is received (#337)