Change Log
Unreleased
1.11.0 - 2021-09-27
Changed
- Updated dependencies
- Binary builds and Docker images are now built against Python 3.9.7
- MacOS X binary built against 11
1.10.0 - 2021-04-19
Changed
- Updated dependencies
- Loosen some dependency requirements (#121)
synccopyno longer copies storage objects at the same level and name as a virtual directory when specified with--strip-components(#117)- Binary builds and Docker images are now built against Python 3.9.4
- MacOS X binary built against 10.15
Fixed
- Fix multiple argument CLI options (
--include/--exclude) (#126)
Removed
- Python < 3.6 support dropped
1.9.4 - 2019-11-13
Changed
- Updated dependencies
- Binary builds are now built against Python 3.7.5
- Windows Docker image uses Python 3.7.5
Fixed
- Fix issues with
--storage-urland--sync-copy-dest-storage-urlfor Synccopy operations (#108) - Fix overwrite optimization and skip-on regression (#109)
1.9.3 - 2019-09-19
Fixed
- Fix SAS permission derivation on SAS keys with leading '?' character
1.9.2 - 2019-09-09
Fixed
- Fix default overwrite behavior on upload performing point query lookups for each remote object
1.9.1 - 2019-08-19
Fixed
- Multi-process concurrency workers (MD5 and decryption) on Python 3.7+ (#104)
Removed
- Python 2.7 support on Windows dropped
1.9.0 - 2019-07-22
Added
- Support a
--delete-onlyoption which allows operations to proceed while no transfer takes place but deletions do occur (in conjunction with--delete) (#101). This option can be used for all operation types. - Support the
--strip-componentsoption forsynccopyoperations (#103)
Changed
- Updated dependencies
- Binary builds are now built against Python 3.7.4
- Windows Docker image uses Python 3.7.4
- Linux Docker builds are based on Alpine 3.10
Fixed
- Regression in YAML config and
synccopyoperations (#100) - Allow synccopy source from Azure Files with a storage account key
1.8.0 - 2019-05-30
Added
- Server side copy support for
synccopycommands. By default,synccopyoperations will now use server side copies eliminating the machine initiating the operation as a potential bottleneck. Arbitrary URLs are now supported in the--remote-pathargument that reference a single object (#93). - Support setting the Content Type property explicitly (#95). Specifying this option will override automatically inferring the MIME type of the file.
Changed
- Breaking Change: Docker images going forward are now hosted in Microsoft Container Registry
- Updated dependencies
- Binary builds are now built against Python 3.7.3
- Windows Docker image uses Python 3.7.3
Fixed
- Allow
--renameinsynccopyoperations - Fix retries for certain SSL errors (#98)
Removed
- Python 3.4 support dropped
1.7.1 - 2019-03-04
Changed
- Updated dependencies
Fixed
- Directories created with blobfuse would conflict with files nested under these directories due to zero-byte blobs acting as virtual directory placeholders (#92). These blobs are now skipped for download operations.
1.7.0 - 2019-02-26
Added
- Support ability to set the Cache Control property (#91)
Changed
- Updated dependencies
- Linux Docker image based on Alpine 3.9
Fixed
- Invalid key with vectorized IO and single object concurrency control
1.6.0 - 2019-01-14
Added
- Configurable max single object concurrency control for downloads via
--max-single-object-concurrency
Changed
- Updated dependencies
- Binary builds are now built against Python 3.7.2
- Windows Docker image uses Python 3.7.2
Fixed
- Premature download termination under single object concurrency control (#89)
1.5.5 - 2018-11-19
Changed
- Updated dependencies
Fixed
- More coverage for Windows retries
1.5.4 - 2018-11-05
Changed
- Version ranges added in dependencies
- Updated dependencies
Fixed
- Fix spacing in console/log output in Windows
1.5.3 - 2018-10-26
Changed
- Binary builds are now built against Python 3.7.1
- Windows Docker image uses Python 3.7.1
- Timeouts were modified along with retries on 429
- Updated dependencies
Fixed
- Fix SAS permission scope derivation on file shares (#88)
- Fix Python 3.7 compatibility issues
1.5.0 - 2018-09-17
Added
- Mac OS binary build
Changed
- CI/CD pipeline changed to Azure DevOps (VSTS)
- Windows binaries are now signed
Fixed
- Fix CLI settings retrieval
- Fix
--deleteon Windows (#84) - Scope
--deleteon remote path (#85) - Fix various SAS permission regressions from the previous release
1.4.0 - 2018-08-08
Added
- Azure Storage URL support for the CLI via
--storage-urland--sync-copy-dest-storage-url(#79). Please see the usage docs for more information. --restore-file-lmtoption for download operations (#82). Please see the usage docs for more information.
Changed
- Breaking Change:
restore_file_attributesboolean property underdownloadhas been replaced withrestore_file_propertiesmap containingattributesandlmtfor YAML configurations. This change was done to provide consistency with thestore_file_propertiesmap underupload. Please see the YAML configuration doc for more information. - Updated dependencies
Fixed
- Fix and improve SAS handling to limit functionality based on SAS token scope and permissions (#80). Please see the usage and limitations docs for more information.
1.3.1 - 2018-06-29
Changed
- Updated dependencies
- Update Windows Docker image to use Python 3.6.6
Fixed
- Always use generic string check fallback for retry (#77)
1.3.0 - 2018-06-15
Added
- Support for
--dry-runparameter for all operations. A dry run will log intent of an action and is a way to test the potential outcome of an operation. (#74) --connect-timeoutand--read-timeoutoptions providing fine grained timeout control. The--timeoutoption is now deprecated.
Changed
- Updated dependencies
Fixed
- Further improve retry handling (#75)
1.2.1 - 2018-05-23
Changed
- Updated dependencies
Fixed
- Skip on options not properly respected with delete option for synccopy and upload (#72)
- Improve retry handling code
1.2.0 - 2018-04-19
Added
- Support for
--strip-componentsparameter on download (#69) - Support for
-q/--quietoption to suppress output to stdout (#70)
Changed
- Update dependencies to latest
- Update Windows Docker image to use Python 3.6.5
Fixed
- Non-MD5 upload invalid ref (#60)
- Retry of broken encrypted upload (#61)
- Detect non-Base64 encoded storage account keys (#62)
- Regression in download of zero-length blobs (#68)
1.1.1 - 2018-01-30
Changed
- Updated Azure Storage dependencies to 1.0.0 (GA version)
Fixed
--sync-copy-dest-modeoption not honored from CLI (#57)
1.1.0 - 2018-01-18
Added
- Support for setting blob access tiers on Upload and SyncCopy
Changed
- Default chunk size and thread counts for downloading
- Limit number of concurrent downloads per object
- Update dependencies to latest
- Update Docker images to Alpine 3.7 and Python 3.6.4
Fixed
- Connection pool thread exhaustion
1.0.0 - 2017-11-06
Added
- Sample YAML config
Changed
- Default max retries is now set to 1000 per request
- Updated dependencies to latest
Fixed
- Retry handler does not retry on name resolution failures (#46)
1.0.0rc3 - 2017-10-27
Added
- Fileshare snapshot source support for download and synccopy (#53)
- HTTP Proxy support
max_retriesoption
Changed
- Pre-built binaries are now built with Python 3.6
Fixed
- Errant exceptions thrown for
--skip-on-filesize-matchand--skip-on-lmt-geoptions (#51) - Match
dest_modetomodewhendest_modeis set toautoon synccopy
1.0.0rc2 - 2017-10-16
Added
--enable-azure-storage-loggeroption to enable the Azure Storage logger (#47)
Changed
- Migrate to codecov.io for coverage reports
Fixed
- Basic
--endpointcheck (#46) - Fix CLI options not being correctly fed to config (#48)
1.0.0rc1 - 2017-10-05
Added
- Expanded
blobxfer.apito eliminate other imports - Data movement library usage guide
--show-configoption added which decouples configuration output from the-vverbose option
Changed
versionproperty for YAML configuration is now required--renameis automatically enabled for whenstdinis the source--includeand--excludefilters are now checked for invalid rglob specs- Update dependencies to latest
Fixed
- Multiple
--includeand/or--excludefrom the commandline --file-md5option being ignored on download- Incorrect MD5 computation for unaligned page blobs on upload
1.0.0b2 - 2017-09-01
Added
uploadfromstdinto page blob support. Optional--stdin-as-page-blob-sizeparameter added. Please see current limitations doc for more information.uploadfromstdin--renamesupportsynccopysingle object--renamesupport
Changed
- AppVeyor integration
- Automated PyPI releases generated for tags
- Automated PyInstaller-based releases uploaded to GitHub for Windows and Linux
- Automated Windows Docker image build
Fixed
- YAML config merge with CLI options when YAML options not present
synccopyinvocation without YAML config- Test failures on Windows
1.0.0b1 - 2017-08-28
Added
- Cross-mode synchronous copy support
- Duplicate detection (different local source paths mapping to the same destination) on upload
Changed
- Python 3.3 is no longer supported (due to
cryptographydropping support for 3.3). --strip-componentsnow defaults to0timeout_secYAML property is now namedtimeoutand is a complex property comprised ofconnectandreadvalues expressed in seconds- Test coverage improved
- Dependencies updated to latest
Fixed
- Properly merge CLI options with YAML config options. You can now override most YAML config settings with CLI options at runtime.
- Issue with zero-byte uploads
- Check for max page blob size
1.0.0a5 - 2017-06-09
Added
- Synchronous copy support with the
synccopycommand. This command supports multi-destination replication.
Fixed
- Various YAML config file and CLI interaction issues
- Upload resume support with replication
1.0.0a4 - 2017-06-02
Changed
- From scratch rewrite providing a consistent CLI experience and a vast array of new and advanced features. Please see the 1.0.0 Milestone for a catalog of changes.
- Breaking Changes: there have been a significant number of breaking
changes with the rewrite from the command-line invocation of
blobxferitself to the options and environment variable names. Please review the usage documentation carefully when upgrading from 0.12.1. - All dependencies updated to latest
Removed
- Azure Service Management certificate support
Security
- Update cryptography requirement to 1.9
0.12.1 - 2016-12-09
Changed
- Update all dependencies to latest versions
Fixed
- Allow page blobs up to 1TB
Security
- Update cryptography requirement to 1.6
0.12.0 - 2016-10-17
Added
- Support for Account-level SAS keys
- Update README regarding non-normalized exceptions being thrown (#5)
0.11.5 - 2016-10-03
Changed
- Update all dependencies to latest versions
Fixed
- Fix incorrect fileshare path splitting (#3)
Security
- Update cryptography requirement to 1.5.2
0.11.4 - 2016-09-12
Added
- Created Docker image
Changed
- Update all dependencies to latest versions
Fixed
- Fix
--deleteand blob listing with azure-storage (#1)
Security
- Update cryptography requirement to 1.5
0.11.2 - 2016-07-28
Added
- Allow rsakeypassphrase to be passed as an environment variable
0.11.1 - 2016-07-05
Added
- Allow storage account or sas key credentials to be passed as environment variables
0.11.0 - 2016-06-09
Added
- Azure Files support, please refer to the General Notes section for limitations
Changed
--blobepoption has been renamed to--endpoint
0.10.1 - 2016-06-06
Changed
- Update all dependencies to latest versions
- Add flag for block/page level md5 computation which is now disabled by default
Fixed
- Update against breaking changes from azure-storage 0.32.0
Removed
- Remove RC designation from encryption/decryption functionality
Security
- Update cryptography requirement to 1.4
0.10.0 - 2016-03-22
Added
- Added
--disable-urllib-warningsoption to suppress urllib3 warnings (use with care)
Changed
- Update script for compatibility with azure-storage 0.30.0 which is now a required dependency
- Promote encryption to RC status
--blobepnow refers to endpoint suffix rather than blob endpoint (e.g., core.windows.net rather than blob.core.windows.net)
Security
- Update cryptography requirement to 1.3
0.9.9.11 - 2016-02-22
Changed
- Pin azure dependencies due to breaking changes
Fixed
- Minor bug fixes
Security
- Update cryptography requirement to 1.2.2
0.9.9.10 - 2016-01-31
Fixed
- Fix regression in blob name encoding with Python3
0.9.9.9 - 2016-01-29
Added
- Emit warning when attempting to use remoteresource with a directory upload
Changed
- Update setup.py dependencies to latest available versions
Fixed
- Fix regression in single file upload and remoteresource renaming
- Replace socket exception handling with requests ConnectionError handling
- Properly handle blob names containing
?if using SAS
0.9.9.8 - 2016-01-06
Fixed
- Disable unnecessary thread daemonization
- Gracefully handle KeyboardInterrupts
- Explicitly add azure-common to setup.py install reqs
0.9.9.7 - 2016-01-05
Added
- Add python environment and package info to parameter dump to aid issue/bug reports
Changed
- Reduce number of default concurrent workers to 3x CPU count
- Change azure_request backoff mechanism
Fixed
- Make base requirements non-optional in import process
- Update azure_request exception handling to support new Azure Storage Python SDK errors
0.9.9.6 - 2016-01-04
Added
- Encryption support
- No file overwrite on download option
- Auto-detection of file mimetype
- Remote delete option
- Include pattern option
Changed
- Replace keeprootdir with strip-components option
- Reduce the number of default concurrent workers to 4x CPU count
Fixed
- Fix shared key upload with non-existent container
- Fix zero-byte blob download issue
0.9.9.5 - 2015-09-27
Added
- File collation support
Fixed
- Fix page alignment bug
- Reduce memory usage
Old Releases
- 0.9.9.4: improve page blob upload algorithm to skip empty max size pages. fix zero length file uploads. fix single file upload that's skipped.
- 0.9.9.3: fix downloading of blobs with content length of zero
- 0.9.9.1: fix content length > 32bit for blob lists via SAS on Python2
- 0.9.9.0: update script for compatibility with new Azure Python packages
- 0.9.8: fix blob endpoint for non-SAS input, add retry on ServerBusy
- 0.9.7: normalize SAS keys (accept keys with or without ? char prefix)
- 0.9.6: revert local resource path expansion, PEP8 fixes
- 0.9.5: fix directory creation issue
- 0.9.4: fix Python3 compatibility issues
- 0.9.3: the script supports page blob uploading. To specify local files to
upload as page blobs, specify the
--pageblobparameter. The script also has a feature to detect files ending in the.vhdextension and will automatically upload just these files as page blobs while uploading other files as block blobs. Specify the--autovhdparameter (without the--pageblobparameter) to enable this behavior. - 0.9.0: the script will automatically default to skipping files where if the
MD5 checksum of either the local file or the stored MD5 of the remote
resource respectively matches the remote resource or local file, then the
upload or download for the file will be skipped. This capability will allow
one to perform rsync-like operations where only files that have changed will
be transferred. This behavior can be forcefully disabled by specifying
--no-skiponmatch. - 0.8.2: performance regression fixes