Releases: Azure/azure-storage-azcopy
Releases · Azure/azure-storage-azcopy
AzCopy V10.5.0 Release
New features
- Improved scanning performance for most cases by adding support for parallel local and Blob enumeration.
- Added download support for the benchmark command.
- A new way to quickly copy only files changed after a certain date/time. The
copy
command now accepts
the parameter--include-after
. It takes an ISO 8601-formatted date, and will copy only those files that were
changed on or after the given date/time. When processing large numbers of files, this is faster thansync
or
--overwrite=IfSourceNewer
. But it does require the user to specify the date to be used. E.g.2020-08-19T15:04:00Z
for a UTC time,2020-08-19T15:04
for a time in the local timezone of the machine running Azcopy,
or2020-08-19
for midnight (00:00), also in the local timezone. - When detecting content type for common static website files, use the commonly correct values instead of looking them up in the registry.
- Allow the remove command to delete blob directory stubs which have metadata hdi_isfolder=true.
- The S3 to Blob feature now has GA support.
- Added support for load command on Linux based on Microsoft Avere's CLFSLoad extension.
- Each job now logs its start time precisely in the log file, using ISO 8601 format. This is useful if you want to
use that start date as the--include-after
parameter to a later job on the same directory. Look for "ISO 8601 START TIME"
in the log. - Stop treating zero-item job as failure, to improve the user experience.
- Improved the naming of files being generated in benchmark command, by reversing the digits.
Doing so allows the names to not be an alphabetic series, which used to negatively impact the performance on the service side. - Azcopy can now detect when setting a blob tier would be impossible. If azcopy cannot check the destination account type, a new transfer failure status will be set:
TierAvailabilityCheckFailure
Bug fixes
- Fixed the persistence of last-write-time (as part of SMB info when uploading) for Azure Files. It was using the creation time erroneously.
- Fixed the SAS timestamp parsing issue.
- Transfers to the File Service with a read-only SAS were failing because we try listing properties for the parent directories.
The user experience is improved by ignoring this benign error and try creating parent directories directly. - Fixed issue with mixed SAS and AD authentication in the sync command.
- Fixed file creation error on Linux when decompression is turned on.
- Fixed issue on Windows for files with extended charset such as [%00 - %19, %0A-%0F, %1A-%1F].
- Enabled recovering from unexpectedEOF error.
- Fixed issue in which attribute filters does not work if source path contains an asterisk in it.
- Fixed issue of unexpected upload destination when uploading a whole drive in Windows (e.g. "D:").
AzCopy V10.4.3 Release
Bug fixes
- Fixed bug where AzCopy errored if a filename ended with slash character. (E.g. backslash at end of a Linux filename.)
AzCopy V10.3.4 Release
Version 10.3.4
New features
- Fixed feature parity issue by adding support for "ifSourceNewer" option on the overwrite flag. It serves as a replacement of the '\XO' flag in V8.
Bug fixes
- Fixed jobs clean command on Windows which was previously crashing when the with-status flag was used.
AzCopy V10.4.2 Release
Bug fixes
- Fixed bug in overwrite prompt for folders.
AzCopy V10.4.1 Release
New features
- Added overwrite prompt support for folder property transfers.
- Perform proxy lookup when the source is S3.
Bug fixes
- When downloading from Azure Files to Windows with the
--preserve-smb-permissions
flag, sometimes
the resulting permissions were not correct. This was fixed by limiting the concurrent SetNamedSecurityInfo operations. - Added check to avoid overwriting the file itself when performing copy operations.
AzCopy V10.4.0 Release
Version 10.4
New features
azcopy copy
now supports the persistence of ACLs between supported resources (Windows and Azure Files) using the--persist-smb-permissions
flag.azcopy copy
now supports the persistence of SMB property info between supported resources (Windows and Azure Files) using the--persist-smb-info
flag. The information that can be preserved is Created Time, Last Write Time and Attributes (e.g. Read Only).- AzCopy can now transfer empty folders, and also transfer the properties of folders. This applies when both the source and destination support real folders (Blob Storage does not, because it only supports virtual folders).
- On Windows, AzCopy can now activate the special privileges
SeBackupPrivilege
andSeRestorePrivilege
. Most admin-level accounts have these privileges in a deactivated state, as do all members of the "Backup Operators" security group. If you run AzCopy as one of those users and supply the new flag--backup
, AzCopy will activate the privileges. (Use an elevated command prompt, if running as Admin). At upload time, this allows AzCopy to read files which you wouldn't otherwise have permission to see. At download time, it works with the--preserve-smb-permissions
flag to allow preservation of permissions where the Owner is not the user running AzCopy. The--backup
flag will report a failure if the privileges cannot be activated. - Status output from AzCopy
copy
,sync
,jobs list
, andjobs status
now contains information about folders.
This includes new properties in the JSON output of copy, sync, list and jobs status commands, when--output-type json
is used. - Empty folders are deleted when using
azcopy rm
on Azure Files. - Snapshots of Azure File Shares are supported, for read-only access, in
copy
,sync
andlist
. To use, add asharesnapshot
parameter at end of URL for your Azure Files source. Remember to separate it from the existing query string parameters (i.e. the SAS token) with a&
. E.g.
https://<youraccount>.file.core.windows.net/sharename?st=2020-03-03T20%3A53%3A48Z&se=2020-03-04T20%3A53%3A48Z&sp=rl&sv=2018-03-28&sr=s&sig=REDACTED&sharesnapshot=2020-03-03T20%3A24%3A13.0000000Z
- Benchmark mode is now supported for Azure Files and ADLS Gen 2 (in addition to the existing benchmark support for Blob Storage).
- A special performance optimization is introduced, but only for NON-recursive cases in this release. An
--include-pattern
that contains only*
wildcards will be performance optimized when querying blob storage without the recursive flag. The section before the first*
will be used as a server-side prefix, to filter the search results more efficiently. E.g.--include-pattern abc*
will be implemented as a prefix search for "abc". In a more complex example,--include-pattern abc*123
, will be implemented as a prefix search forabc
, followed by normal filtering for all matches ofabc*123
. To non-recursively process blobs contained directly in a container or virtual directory include/*
at the end of the URL (before the query string). E.g.http://account.blob.core.windows.net/container/*?<SAS>
. - The
--cap-mbps
parameter now parses floating-point numbers. This will allow you to limit your maximum throughput to a fraction of a megabit per second.
Special notes
- A more user-friendly error message is returned when an unknown source/destination combination is supplied
- AzCopy has upgraded to service revision
2019-02-02
. Users targeting local emulators, Azure Stack, or other private/special instances of Azure Storage may need to intentionally downgrade their service revision using the environment variableAZCOPY_DEFAULT_SERVICE_API_VERSION
. Prior to this release, the default service revision was2018-03-28
. - For Azure Files to Azure Files transfers, --persist-smb-permissions and --persist-smb-info are available on all OS's. (But for for uploads and downloads, those flags are only available on Windows.)
- AzCopy now includes a list of trusted domain suffixes for Azure Active Directory (AAD) authentication.
Afterazcopy login
, the resulting token will only be sent to locations that appear in the list. The list is:
*.core.windows.net;*.core.chinacloudapi.cn;*.core.cloudapi.de;*.core.usgovcloudapi.net
.
If necessary, you can add to the the list with the command-line flag:--trusted-microsoft-suffixes
. For security, you should only add Microsoft Azure domains. - When transferring over a million files, AzCopy will reduces its progress reporting frequency from every 2 seconds to every 2 minutes.
Breaking changes
- To accommodate interfacing with JavaScript programs (and other languages that have similar issue with number precision), all the numbers in the JSON output have been converted to strings (i.e. with quotes around them).
- The TransferStatus value
SkippedFileAlreadyExists
has been renamedSkippedEntityExists
and may now be used both for when files are skipped and for when the setting of folder properties is skipped. This affects the input and output ofazcopy jobs show
and the status values shown in the JSON output format fromcopy
andsync
. - The format and content of authentication information messages, in the JSON output format, e.g.
"Using OAuth token for authentication" has been changed.
Bug fixes
- AzCopy can now overwrite even Read-Only and Hidden files when downloading to Windows. (The read-only case requires the use of the new
--force-if-read-only
flag.) - Fixed a nil dereference when a prefetching error occurs in a upload
- Fixed a nil dereference when attempting to close a log file while log-level is none
- AzCopy's scanning of Azure Files sources, for download or Service to Service transfers, is now much faster.
- Sources and destinations that are identified by their IPv4 address can now be used. This enables usage with storage emulators. Note that the
from-to
flag is typically needed when using such sources or destinations. E.g.--from-to BlobLocal
if downloading from a blob storage emulator to local disk. - Filenames containing the character
:
can now safely be downloaded on Windows and uploaded to Azure Files - Objects with names containing
+
can now safely be used in imported S3 object names - The
check-length
flag is now exposed in benchmark mode, so that length checking can be turned off for more speed, when benchmarking with small file sizes. (When using large file sizes, the overhead of the length check is
insignificant.) - The in-app documentation for Service Principal Authentication has been corrected, to now include the application-id parameter.
- ALL filter types are now disallowed when running
azcopy rm
against ADLS Gen2 endpoints. Previously include/exclude patterns were disallowed, but exclude-path was not. That was incorrect. All should have been disallowed because none (other than include-path) are respected. - Fixed empty page range optimization when uploading Managed Disks. In an edge case, there was previously a risk of data corruption if the user uploaded two different images into the same Managed Disk resource one after the other.
AzCopy V10.3.3 Release
Version 10.3.3
New features
azcopy list
is now supported on Azure Files and ADLS Gen 2, in addition to Blob Storage.- The
--exclude-path
flag is now supported in thesync
command. - Added new environment variable
AZCOPY_USER_AGENT_PREFIX
to allow a prefix to be appended to the user agent strings.
Bug fixes
- Content properties (such as Content-Encoding and Cache-Control) are now included when syncing Blob -> Blob and Azure
Files -> Azure Files - Custom metadata is now included when syncing Blob -> Blob and Azure Files -> Azure Files
- The
azcopy list
command no longer repeats parts of its output. (Previously it would sometimes repeat itself and show the same blob multiple times in the output.) - The
--aad-endpoint
parameter is now visible, instead of hidden. It allows use of Azure Active Directory
authentication in national clouds (e.g. Azure China). - On Windows, AzCopy now caches information about which proxy server should be used, instead of looking it up every
time. This significantly reduces CPU
usage when transferring many small files. It also solves a rare bug when transfers got permanently "stuck" with
one uncompleted file. - When uploading to a write-only destination, there is now a clearer error message when the built-in file length check
fails. The message says how to fix the problem using--check-length=false
. - Size checks on managed disk imports are now clearer, and all run at the start of the import process instead of the end.
AzCopy V10.3.2 Release
Version 10.3.2
Bug fixes
- Jobs could not be cancelled while scanning was still in progress.
- Downloading large managed disks (8 TB and above) failed with errors.
- Downloading large page blobs might make no progress for the first 15 or 20 minutes.
- There was a rare error where the final output could under-report the total number of files in the job. That error has been fixed.
- When using JSON output mode, the output from the rm command on ADLS Gen2 was inconsistent with the output from other commands
- After authentication errors, files in progress were not cleaned up (deleted) at the destination. If there was an
authentication failure during a job (e.g. a SAS token expired while in use) this could result in files being left
behind that had incomplete contents (even though their size looked correct). - The AUTO concurrency option, for automatically tuning concurrency as AzCopy runs, started working too late if scanning (aka enumeration) took a long time. This resulted in reduced throughput when using this setting.
- It was not possible to access the root of Windows drives with lowercase drive letters. E.g. d:\
- Service to Service transfers would fail when using environment variable to specify OAuth authentication.
- Certain errors parsing URLs were not reported clearly.
- When downloading to NUL (/dev/null on Linux), files of zero length no longer trigger errors. (Downloads to NUL can be used in performance testing and bulk MD5 checking.
AzCopy V10.3.1 Release
Version 10.3.1
New features
- Added helpful deprecation notice for legacy include/exclude flags.
- Added back request ID at log level INFO.
- Added back cancel-from-stdin option for partner integration.
- Added flag to define delete snapshot options for the remove command.
Bug fix
- Fixed race condition in shutdown of decompressingWriter.
- Made progress reporting more accurate.
AzCopy V10.3.0 Release
Version 10.3.0
Breaking changes
- The
*
character is no longer supported as a wildcard in URLs, except for the two exceptions
noted below. It remains supported in local file paths.- The first execption is that
/*
is still allowed at the very end of the "path" section of a
URL. This is illustrated by the difference between these two source URLs:
https://account/container/virtualDir?SAS
and
https://account/container/virtualDir/*?SAS
. The former copies the virtual directory
virtualDir
by creating a folder of that name at the destination. The latter copies the
contents ofvirtual
dir directly into the target without creating a folder named
"virtualDir".' - The second exception is when you are transferring multiple whole containers (or S3 buckets). You can
use * as a wildcard in the container or bucket name.
- The first execption is that
- The
--include
and--exclude
parameters have been replaced by--include-pattern
and
--exclude-pattern
(for filenames) and--include-path
and--exclude-path
(for paths,
including directory and filenames).
The new parameters have behaviour that is better defined in complex situations (such as
recursion). The*
wildcard is supported in the pattern parameters, but not in the path ones. - There have been two breaking changes to the JSON output that is produced if you request
JSON-formatted output. Thesync
command's output in JSON has changed for consistency reasons,
and the final message type, forcopy
andsync
has changed its name fromExit
toEndOfJob
.
Tools using the JSON output format to integrate AzCopy should be aware. - If downloading to "null" on Windows the target must now be named "NUL", according to standard
Windows conventions. "/dev/null" remains correct on Linux. (This feature can be used to test
throughput or check MD5s without saving the downloaded data.) - The file format of the (still undocumented)
--list-of-files
parameter is changed. (It remains
undocmented because, for simplicity, users are
encouraged to use the new--include-pattern
and--include-path
parameters instead.)
New features
sync
is supported from Blob Storage to Blob Storage, and from Azure Files to Azure Files.copy
is supported from Azure Files to Azure Files, and from Blob Storage to Azure Files.- Percent complete is displayed as each job runs.
- VHD files are auto-detected as page blobs.
- A new benchmark mode allows quick and easy performance benchmarking of your network connection to
Blob Storage. Run AzCopy with the paramatersbench --help
for details. This feature is in
Preview status. - The location for AzCopy's "plan" files can be specified with the environment variable
AZCOPY_JOB_PLAN_LOCATION
. (If you move the plan files and also move the log files using the existing
AZCOPY_LOG_LOCATION
, then AzCopy will not store anything under your home directory on Linux and
MacOS. On Windows AzCopy will keep just one small encrypted file underc:\users\<username>\.azcopy
) - Log files and plan files can be cleaned up to save disk space, using AzCopy's new
jobs rm
and
jobs clean
commands. - When listing jobs with
jobs show
, the status of each job is included in the output. - The
--overwrite
parameter now supports the value of "prompt" to prompt the user on a
file-by-file basis. (The old values of true and false are also supported.) - The environment variable
AZCOPY_CONCURRENCY_VALUE
can now be set to "AUTO". This is expected to be
useful for customers with small networks, or those running AzCopy on
moderately-powered machines and transfer blobs between accounts. This feature is in preview status. - When uploading from Windows, files can be filtered by Windows-specific file attributes (such as
"Archive", "Hidden" etc) - Memory usage can be controlled by setting the new environment variable
AZCOPY_BUFFER_GB
.
Decimal values are supported. Actual usage will be the value specified, plus some overhead. - An extra integrity check has been added: the length of the
completed desination file is checked against that of the source. - When downloading, AzCopy can automatically decompress blobs (or Azure Files) that have a
Content-Encoding
ofgzip
ordeflate
. To enable this behaviour, supply the--decompress
parameter. - The number of disk files accessed concurrently can be controlled with the new
AZCOPY_CONCURRENT_FILES
environment variable. This is an advanced setting, which generally
should not be modified. It does not affect the number of HTTP connections, which is still
controlled byAZCOPY_CONCURRENCY_VALUE
. - The values of key environment variables are listed at the start of the log file.
- An official Windows 32-bit build is now released, in addition to the usual 64-bit builds for
Linux, Mac and Windows. - If you need to refer a literal
*
in the name of a blob or Azure Files file, e.g. for a blob
named "*", escape the*
using standard URL escaping. To do this, replace the*
with the following
character sequence: %2A
Bug fixes
- When an AzCopy job is cancelled with CTRL-C, any partially-updated files are now deleted from
the destination. Previous releases of AzCopy v10 would just immediately exit, leaving destination files
potentially containing an unknown mix of old and new data. E.g. if uploading a new version of a file
over top of an old version, cancellation could result in the file being left with some parts
containing old data, and some containing new data. This issue affected downloads to local disk and
uploads to Azure Files, ADLS Gen 2, page blobs and append blobs. The bug did not affect transfers to block
blobs. - If a transfer to a brand-new block blob is cancelled before it completes, the uncommitted blocks are now cleaned up
immediately. Previous versions would leave them, for automatic garbage collection to delete 7 days later. - Long pathnames (over 260 characters) are now supported everywhere on Windows, including on UNC
shares. - Safety is improved in the rare cases where two source files correspond to just one destination file. This can happen
when transferring to a case-insensitive destination, when the new--decompress
flag removes an extension but
there's already a file without the extension, and in very rare cases related to escaping of filenames with illegal
characters. The bug fix ensures that the single resulting file contains data from only one of the source files. - When supplying a
--content-type
on the command line it's no longer necessary to also specify
--no-guess-mime-type
. - There is now no hard-coded limit on the number of files that can be processed by the
sync
command. The number that can be processed (without paging of memory to disk) depends only on the
amount of RAM available. - Transfer of sparse page blobs has been improved, so that for many sparse page blobs only the
populated pages will transferred. The one exception is blobs which have had a very high number
of updates, but which still have significant sparse sections. Those blobs may not be
transferred optimally in this release. Handling of such blobs will be improved in a future release. - Accessing root of drive (e.g.
d:\
) no longer causes an error. - On slow networks, there are no longer excessive log messages sent to the Event Log (Windows) and
SysLog (Linux). - If AzCopy can't check whether it's up to date, it will no longer hang. (Previously, it could hang
if its version check URL, https://aka.ms/azcopyv10-version-metadata, was unreachable due to
network routing restrictions.) - High concurrency values are supported (e.g. over 1000 connections). While these values are seldom
needed, they are occasionally useful - e.g. for service-to-service transfer of files around 1 MB
in size. - Files skipped due to "overwrite=false" are no longer logged as "failed".
- Logging is more concise at the default log level.
- Error message text, returned by Blob and File services, is now included in the log.
- A log file is created for copy jobs even when there was nothing to copy.
- In the log, UPLOAD SUCCESSFUL messages now include the name of the successful file.
- Clear error messages are given to show that AzCopy does not currently support Customer-Provided
Encryption Keys. - On Windows, downloading a filename with characters not supported by the operating system will
result in those characters being URL-encoded to construct a Windows-compatible filename. The
encoding process is reversed if the file is uploaded. - Uploading a single file to ADLS Gen 2 works now.
- The
remove
command no longer hangs when removing blobs that have snapshots. Instead it will fail to
delete them, and report the failures clearly. - Jobs downloading from ADLS Gen 2 that result in no scheduled transfers will no longer hang.