blobxfer/CHANGELOG.md

550 строки
18 KiB
Markdown

# Change Log
## [Unreleased]
## [1.9.0] - 2019-07-22
### Added
- Support a `--delete-only` option which allows operations to proceed but
no transfer takes place but deletions do occur (in conjunction with
`--delete`) ([#101](https://github.com/Azure/blobxfer/issues/101)). This
option can be used for all operation types.
- Support the `--strip-components` option for `synccopy` operations
([#103](https://github.com/Azure/blobxfer/issues/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 `synccopy` operations
([#100](https://github.com/Azure/blobxfer/issues/100))
- Allow synccopy source from Azure Files with a storage account key
## [1.8.0] - 2019-05-30
### Added
- Server side copy support for `synccopy` commands. By default, `synccopy`
operations will now use server side copies eliminating the machine initiating
the operation as a potential bottleneck. Arbitrary URLs are now supported
in the `--remote-path` argument that reference a single object
([#93](https://github.com/Azure/blobxfer/issues/93)).
- Support setting the Content Type property explicitly
([#95](https://github.com/Azure/blobxfer/issues/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 `--rename` in `synccopy` operations
- Fix retries for certain SSL errors
([#98](https://github.com/Azure/blobxfer/issues/98))
### Removed
- Python 3.4 support dropped
## [1.7.1] - 2019-03-04
### Changed
- Updated dependencies
### Fixed
- Directories created with [blobfuse](https://github.com/Azure/azure-storage-fuse)
would conflict with files nested under these directories due to zero-byte
blobs acting as virtual directory placeholders
([#92](https://github.com/Azure/blobxfer/issues/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](https://github.com/Azure/blobxfer/issues/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](https://github.com/Azure/blobxfer/issues/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](https://github.com/Azure/blobxfer/issues/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 `--delete` on Windows ([#84](https://github.com/Azure/blobxfer/issues/84))
- Scope `--delete` on remote path ([#85](https://github.com/Azure/blobxfer/issues/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-url` and
`--sync-copy-dest-storage-url` ([#79](https://github.com/Azure/blobxfer/issues/79)).
Please see the usage docs for more information.
- `--restore-file-lmt` option for download operations
([#82](https://github.com/Azure/blobxfer/issues/82)). Please see the usage
docs for more information.
### Changed
- **Breaking Change**: `restore_file_attributes` boolean property under
`download` has been replaced with `restore_file_properties` map containing
`attributes` and `lmt` for YAML configurations. This change was done to
provide consistency with the `store_file_properties` map under `upload`.
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](https://github.com/Azure/blobxfer/issues/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](https://github.com/Azure/blobxfer/issues/77))
## [1.3.0] - 2018-06-15
### Added
- Support for `--dry-run` parameter 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](https://github.com/Azure/blobxfer/issues/74))
- `--connect-timeout` and `--read-timeout` options providing fine grained
timeout control. The `--timeout` option is now deprecated.
### Changed
- Updated dependencies
### Fixed
- Further improve retry handling ([#75](https://github.com/Azure/blobxfer/issues/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-components` parameter on download (#69)
- Support for `-q`/`--quiet` option 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-mode` option 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_retries` option
### Changed
- Pre-built binaries are now built with Python 3.6
### Fixed
- Errant exceptions thrown for `--skip-on-filesize-match` and
`--skip-on-lmt-ge` options (#51)
- Match `dest_mode` to `mode` when `dest_mode` is set to `auto` on synccopy
## [1.0.0rc2] - 2017-10-16
### Added
- `--enable-azure-storage-logger` option to enable the Azure Storage
logger (#47)
### Changed
- Migrate to codecov.io for coverage reports
### Fixed
- Basic `--endpoint` check (#46)
- Fix CLI options not being correctly fed to config (#48)
## [1.0.0rc1] - 2017-10-05
### Added
- Expanded `blobxfer.api` to eliminate other imports
- Data movement library usage guide
- `--show-config` option added which decouples configuration output from
the `-v` verbose option
### Changed
- `version` property for YAML configuration is now required
- `--rename` is automatically enabled for when `stdin` is the source
- `--include` and `--exclude` filters are now checked for invalid rglob specs
- Update dependencies to latest
### Fixed
- Multiple `--include` and/or `--exclude` from the commandline
- `--file-md5` option being ignored on download
- Incorrect MD5 computation for unaligned page blobs on upload
## [1.0.0b2] - 2017-09-01
### Added
- `upload` from `stdin` to page blob support. Optional
`--stdin-as-page-blob-size` parameter added. Please see current limitations
doc for more information.
- `upload` from `stdin` `--rename` support
- `synccopy` single object `--rename` support
### 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
- `synccopy` invocation 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 `cryptography` dropping support
for 3.3).
- `--strip-components` now defaults to `0`
- `timeout_sec` YAML property is now named `timeout` and is a complex property
comprised of `connect` and `read` values 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 `synccopy` command. 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](https://github.com/Azure/blobxfer/milestone/1) 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 `blobxfer`
itself 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](https://hub.docker.com/r/alfpark/blobxfer)
### Changed
- Update all dependencies to latest versions
### Fixed
- Fix `--delete` and 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
- `--blobep` option 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-warnings`` option 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
- `--blobep` now 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 `--pageblob` parameter. The script also
has a feature to detect files ending in the `.vhd` extension and will
automatically upload just these files as page blobs while uploading other
files as block blobs. Specify the `--autovhd` parameter (without the
`--pageblob` parameter) 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
[Unreleased]: https://github.com/Azure/blobxfer/compare/1.9.0...HEAD
[1.9.0]: https://github.com/Azure/blobxfer/compare/1.8.0...1.9.0
[1.8.0]: https://github.com/Azure/blobxfer/compare/1.7.1...1.8.0
[1.7.1]: https://github.com/Azure/blobxfer/compare/1.7.0...1.7.1
[1.7.0]: https://github.com/Azure/blobxfer/compare/1.6.0...1.7.0
[1.6.0]: https://github.com/Azure/blobxfer/compare/1.5.5...1.6.0
[1.5.5]: https://github.com/Azure/blobxfer/compare/1.5.4...1.5.5
[1.5.4]: https://github.com/Azure/blobxfer/compare/1.5.3...1.5.4
[1.5.3]: https://github.com/Azure/blobxfer/compare/1.5.0...1.5.3
[1.5.0]: https://github.com/Azure/blobxfer/compare/1.4.0...1.5.0
[1.4.0]: https://github.com/Azure/blobxfer/compare/1.3.1...1.4.0
[1.3.1]: https://github.com/Azure/blobxfer/compare/1.3.0...1.3.1
[1.3.0]: https://github.com/Azure/blobxfer/compare/1.2.1...1.3.0
[1.2.1]: https://github.com/Azure/blobxfer/compare/1.2.0...1.2.1
[1.2.0]: https://github.com/Azure/blobxfer/compare/1.1.0...1.2.0
[1.1.1]: https://github.com/Azure/blobxfer/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/Azure/blobxfer/compare/1.0.0...1.1.0
[1.0.0]: https://github.com/Azure/blobxfer/compare/1.0.0rc3...1.0.0
[1.0.0rc3]: https://github.com/Azure/blobxfer/compare/1.0.0rc2...1.0.0rc3
[1.0.0rc2]: https://github.com/Azure/blobxfer/compare/1.0.0rc1...1.0.0rc2
[1.0.0rc1]: https://github.com/Azure/blobxfer/compare/1.0.0b2...1.0.0rc1
[1.0.0b2]: https://github.com/Azure/blobxfer/compare/1.0.0b1...1.0.0b2
[1.0.0b1]: https://github.com/Azure/blobxfer/compare/1.0.0a5...1.0.0b1
[1.0.0a5]: https://github.com/Azure/blobxfer/compare/1.0.0a4...1.0.0a5
[1.0.0a4]: https://github.com/Azure/blobxfer/compare/0.12.1...1.0.0a4
[0.12.1]: https://github.com/Azure/blobxfer/compare/0.12.0...0.12.1
[0.12.0]: https://github.com/Azure/blobxfer/compare/0.11.5...0.12.0
[0.11.5]: https://github.com/Azure/blobxfer/compare/0.11.4...0.11.5
[0.11.4]: https://github.com/Azure/blobxfer/compare/0.11.2...0.11.4
[0.11.2]: https://github.com/Azure/blobxfer/compare/e5e435a...0.11.2