使用 AzCopy 在 Azure 存储帐户之间复制 Blob

可以使用 AzCopy v10 命令行实用程序在存储帐户之间复制 Blob、目录和容器。

若要查看其他类型任务(如上传文件、下载 Blob 以及与 Blob 存储同步)的示例,请参阅本文的后续步骤部分中提供的链接。

AzCopy 使用服务器到服务器API,因此,数据会直接在存储服务器之间复制。 这些复制操作不会占用计算机的网络带宽。

若要下载 AzCopy 并了解如何向存储服务提供授权凭据,请参阅 AzCopy 入门

指南

将以下指南应用于 AzCopy 命令。

  • 客户端必须具有对源和目标存储帐户的网络访问权限。 若要了解如何配置每个存储帐户的网络设置,请参阅配置 Azure 存储防火墙和虚拟网络

  • 将 SAS 令牌追加到每个源 URL。

    如果使用 Azure Active Directory (Azure AD) 提供授权凭据,则只能从目标 URL 中省略 SAS 令牌。 请确保已在目标帐户中设置了适当的角色。 请参阅选项 1:使用 Azure Active Directory

    本文中的示例假设你已使用 Azure AD 验证了身份,因此这些示例省略了目标 URL 中的 SAS 令牌。

  • 如果复制到高级块 Blob 存储帐户,请通过将 s2s-preserve-access-tier 设置为 false(例如:--s2s-preserve-access-tier=false),在复制操作中省略 Blob 的访问层。 高级块 Blob 存储帐户不支持访问层。

  • 如果复制到具有分层命名空间的帐户或从其中复制,请在 URL 语法中使用 blob.core.chinacloudapi.cn 而不是 dfs.core.chinacloudapi.cnData Lake Storage 上的多协议访问使你可以使用 ,这是帐户间复制方案的唯一受支持的语法。

  • 可以通过设置 AZCOPY_CONCURRENCY_VALUE 环境变量的值来提高复制操作的吞吐量。 若要了解详细信息,请参阅提高并发性

复制 Blob

使用 azcopy copy 命令将 Blob 复制到另一个存储帐户。

提示

此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。

语法

azcopy copy 'https://<source-storage-account-name>.blob.core.chinacloudapi.cn/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.chinacloudapi.cn/<container-name>/<blob-path>'

示例

azcopy copy 'https://mysourceaccount.blob.core.chinacloudapi.cn/mycontainer/myTextFile.txt?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.chinacloudapi.cn/mycontainer/myTextFile.txt'

复制操作是同步的,因此,当命令返回时,表示已复制所有文件。

复制目录

使用 azcopy copy 命令将目录复制到另一个存储帐户。

提示

此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。

语法

azcopy copy 'https://<source-storage-account-name>.blob.core.chinacloudapi.cn/<container-name>/<directory-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.chinacloudapi.cn/<container-name>' --recursive

示例

azcopy copy 'https://mysourceaccount.blob.core.chinacloudapi.cn/mycontainer/myBlobDirectory?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.chinacloudapi.cn/mycontainer' --recursive

复制操作是同步的,因此,当命令返回时,表示已复制所有文件。

复制容器

使用 azcopy copy 命令将容器复制到另一个存储帐户。

提示

此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。

语法

azcopy copy 'https://<source-storage-account-name>.blob.core.chinacloudapi.cn/<container-name><SAS-token>' 'https://<destination-storage-account-name>.blob.core.chinacloudapi.cn/<container-name>' --recursive

示例

azcopy copy 'https://mysourceaccount.blob.core.chinacloudapi.cn/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.chinacloudapi.cn/mycontainer' --recursive

复制操作是同步的,因此,当命令返回时,表示已复制所有文件。

复制容器、目录和 Blob

使用 azcopy copy 命令将所有容器、目录和 Blob 复制到另一个存储帐户。

提示

此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。

语法

azcopy copy 'https://<source-storage-account-name>.blob.core.chinacloudapi.cn/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.chinacloudapi.cn/' --recursive

示例

azcopy copy 'https://mysourceaccount.blob.core.chinacloudapi.cn/?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-07-04T05:30:08Z&st=2019-07-03T21:30:08Z&spr=https&sig=CAfhgnc9gdGktvB=ska7bAiqIddM845yiyFwdMH481QA8%3D' 'https://mydestinationaccount.blob.core.chinacloudapi.cn' --recursive

复制操作是同步的,因此,当命令返回时,表示已复制所有文件。

使用可选标志复制

可以通过使用可选标志来调整复制操作。 下面是几个示例。

方案 标志
将 Blob 复制为块 Blob、页 Blob 或追加 Blob。 --blob-type=[BlockBlob|PageBlob|AppendBlob]
复制到特定访问层(如存档层)。 --block-blob-tier=[None|Hot|Cool|Archive]
自动解压缩文件。 --decompress=[gzip|deflate]

有关完整列表,请参阅选项

后续步骤

如需了解更多示例,请参阅以下文章:

请参阅以下文章了解如何配置设置、优化性能和排查问题: