@@ -26,7 +26,9 @@ Installation
2626 pip install blobxfer
2727
2828blobxfer is compatible with Python 2.7 and 3.3+. To install for Python 3, some
29- distributions may use ``pip3 `` instead.
29+ distributions may use ``pip3 `` instead. If you do not want to install blobxfer
30+ as a system-wide binary and modify system-wide python packages, use the
31+ ``--user `` flag with ``pip `` or ``pip3 ``.
3032
3133blobxfer is also on `Docker Hub `_, and the Docker image for Linux can be
3234pulled with the following command:
@@ -42,7 +44,7 @@ If you encounter difficulties installing the script, it may be due to the
4244binary wheels provided by these dependencies (e.g., on Windows) or is able to
4345compile the dependencies (i.e., ensure you have a C compiler, python, ssl,
4446and ffi development libraries/headers installed prior to invoking pip). For
45- instance, to install blobxfer on a fresh Ubuntu 14.04 installation for
47+ instance, to install blobxfer on a fresh Ubuntu 14.04/16.04 installation for
4648Python 2.7, issue the following commands:
4749
4850::
@@ -51,9 +53,6 @@ Python 2.7, issue the following commands:
5153 apt-get install -y build-essential libssl-dev libffi-dev libpython-dev python-dev python-pip
5254 pip install --upgrade blobxfer
5355
54- If you do not want to modify system-wide dependencies, use the ``--user `` flag
55- with ``pip ``.
56-
5756If you need more fine-grained control on installing dependencies, continue
5857reading this section. Depending upon the desired mode of authentication with
5958Azure and options, the script will require the following packages, some of
@@ -116,8 +115,10 @@ It is generally recommended to use SAS keys wherever appropriate; only HTTPS
116115transport is used in the script. Please note that when using SAS keys that
117116only container- or fileshare-level SAS keys will allow for entire directory
118117uploading or container/fileshare downloading. The container/fileshare must
119- also have been created beforehand, as containers/fileshares cannot be created
120- using SAS keys.
118+ also have been created beforehand if using a service SAS, as
119+ containers/fileshares cannot be created using service SAS keys. Account-level
120+ SAS keys with a signed resource type of ``c `` or container will allow
121+ containers/fileshares to be created with SAS keys.
121122
122123Example Usage
123124-------------
@@ -274,6 +275,14 @@ path components as desired.
274275General Notes
275276-------------
276277
278+ - If the pyOpenSSL package is present, urllib3/requests may use this package
279+ (as discussed in the Performance Notes below), which may result in
280+ exceptions being thrown that are not normalized by urllib3. This may
281+ result in exceptions that should be retried, but are not. It is recommended
282+ to upgrade your Python where pyOpenSSL is not required for fully validating
283+ peers and such that blobxfer can operate without pyOpenSSL in a secure
284+ fashion. You can also run blobxfer via Docker or in a virtualenv
285+ environment without pyOpenSSL.
277286- blobxfer does not take any leases on blobs or containers. It is up to
278287 the user to ensure that blobs are not modified while download/uploads
279288 are being performed.
@@ -282,11 +291,12 @@ General Notes
282291- blobxfer will attempt to download from blob storage as-is. If the source
283292 filename is incompatible with the destination operating system, then
284293 failure may result.
285- - When using SAS, the SAS key must be a container-level SAS if performing
286- recursive directory upload or container download.
287- - If uploading via SAS, the container must already be created in blob
288- storage prior to upload. This is a limitation of SAS keys. The script
289- will force disable container creation if a SAS key is specified.
294+ - When using SAS, the SAS key must be a container- or share-level SAS if
295+ performing recursive directory upload or container/file share download.
296+ - If uploading via service-level SAS keys, the container or file share must
297+ already be created in Azure storage prior to upload. Account-level SAS keys
298+ with the signed resource type of ``c `` or container-level permission will
299+ allow conatiner or file share creation.
290300- For non-SAS requests, timeouts may not be properly honored due to
291301 limitations of the Azure Python SDK.
292302- By default, files with matching MD5 checksums will be skipped for both
@@ -295,8 +305,8 @@ General Notes
295305- When uploading files as page blobs, the content is page boundary
296306 byte-aligned. The MD5 for the blob is computed using the final aligned
297307 data if the source is not page boundary byte-aligned. This enables these
298- page blobs or files to be skipped during subsequent download or upload,
299- if the ``--no-skiponmatch `` parameter is not specified.
308+ page blobs or files to be skipped during subsequent download or upload by
309+ default (i.e., ``--no-skiponmatch `` parameter is not specified) .
300310- If ``--delete `` is specified, any remote files found that have no
301311 corresponding local file in directory upload mode will be deleted. Deletion
302312 occurs prior to any transfers, analogous to the delete-before rsync option.
@@ -366,7 +376,7 @@ Encryption Notes
366376 metadata. These metadata entries are used on download to configure the proper
367377 download and parameters for the decryption process as well as to authenticate
368378 the encryption. Encryption metadata set by blobxfer (or the Azure Storage
369- .NET/Java client library) should not be modified or blobs may be
379+ .NET/Java client library) should not be modified or blobs/files may be
370380 unrecoverable.
371381- Local files can be encrypted by blobxfer and stored in Azure Files and,
372382 correspondingly, remote files on Azure File shares can be decrypted by
0 commit comments