本文内容
可以使用 AzCopy v10 命令行实用程序将本地存储与 Azure Blob 存储同步。
可将本地文件系统的内容与 Blob 容器同步。 还可以将容器和虚拟目录相互同步。 同步是单向的。 换言之,需要选择这两个终结点中哪一个是源,哪一个是目标。 同步也使用服务器到服务器 API。 本部分中提供的示例也适用于具有分层命名空间的帐户。
备注
当前版本的 AzCopy 不会在其他源和目标之间同步(例如:文件存储或 Amazon Web Services (AWS) S3 桶)。
若要查看其他类型任务(如上传文件、下载 blob 或在帐户之间复制 Blob)的示例,请参阅本文的后续步骤部分中提供的链接。
请参阅 AzCopy 入门一文下载 AzCopy,并了解如何提供存储服务的授权凭据。
备注
本文中的示例假定你已使用 Microsoft Entra ID 提供了授权凭据。
如果你希望使用 SAS 令牌来授权访问 Blob 数据,可将该令牌追加到每个 AzCopy 命令中的资源 URL。 例如:'https://<storage-account-name>.blob.core.chinacloudapi.cn/<container-name><SAS-token>'
。
默认情况下,sync 命令会比较文件名和上次修改的时间戳。 可以通过使用 --compare-hash
标志替代该行为,从而使用 MD5 哈希而不是上次修改的时间戳。 如果将 --delete-destination
可选标志设置为 true
或 prompt
值,当目标目录中的文件不在源目录中存在时,会删除这些文件。
如果将
--delete-destination
标志设置为true
,AzCopy 将删除文件且不提供提示。 若要在 AzCopy 删除文件之前显示提示,请将--delete-destination
标志设置为prompt
。如果计划将
--delete-destination
标志设置为prompt
或false
,请考虑使用 copy 命令而不是 sync 命令,并将--overwrite
参数设置为ifSourceNewer
。 copy 命令占用的内存较少,且费用较低,因为在移动文件之前,复制操作无需为源或目标编制索引。如果不计划使用
--compare-hash
标志,运行 sync 命令的计算机应具有准确的系统时钟,因为上次修改时间对于确定是否应传输文件至关重要。 如果你的系统有严重的时钟偏差,请避免修改目标中的文件的时间与计划运行 sync 命令的时间太过接近。AzCopy 使用服务器到服务器 API 在存储帐户之间同步数据。 这意味着数据直接在存储服务器之间复制。 但是,AzCopy 会设置和监视每个传输。对于较大的存储帐户(例如包含数百万个 blob 的帐户),AzCopy 可能需要大量计算资源才能完成这些任务。 因此,如果从虚拟机 (VM) 运行 AzCopy,请确保 VM 有足够的核心/内存来处理负载。
- 为了防止意外删除,请务必在使用
--delete-destination=prompt|true
标志之前启用软删除功能。
在这种情况下,容器是目标,本地文件系统是源。
提示
此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
语法
azcopy sync '<local-directory-path>' 'https://<storage-account-name>.blob.core.chinacloudapi.cn/<container-name>' --recursive
示例
azcopy sync 'C:\myDirectory' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer' --recursive
在这种情况下,本地文件系统是目标,容器是源。
提示
此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
语法
azcopy sync 'https://<storage-account-name>.blob.core.chinacloudapi.cn/<container-name>' 'C:\myDirectory' --recursive
示例
azcopy sync 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer' 'C:\myDirectory' --recursive
此命令中显示的第一个容器是源。 第二个是目标。
如果使用 Microsoft Entra ID 提供授权凭据,请确保已在源帐户和目标帐户中设置适当的角色。 请参阅选项 1:使用 Microsoft Entra ID。
提示
此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
语法
azcopy sync '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 sync '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
此命令中显示的第一个目录是源。 第二个是目标。
如果使用 Microsoft Entra ID 提供授权凭据,请确保已在源帐户和目标帐户中设置适当的角色。 请参阅选项 1:使用 Microsoft Entra ID。
提示
此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
语法
azcopy sync 'https://<source-storage-account-name>.blob.core.chinacloudapi.cn/<container-name>/<directory-name>/<SAS-token>' 'https://<destination-storage-account-name>.blob.core.chinacloudapi.cn/<container-name>/<directory-name>' --recursive
示例
azcopy sync 'https://mysourceaccount.blob.core.chinacloudapi.cn/<container-name>/myDirectory?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/myDirectory' --recursive
可以通过使用可选标志来调整同步操作。 下面是几个示例。
方案 | 标志 |
---|---|
指定下载时应验证 MD5 哈希的严格程度。 | --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing] |
基于模式排除文件。 | --exclude-path |
指定你希望与同步相关的日志条目达到何种详细程度。 | --log-level=[WARNING|ERROR|INFO|NONE] |
有关标志的完整列表,请参阅选项。
备注
默认情况下,--recursive
标志设置为 true
。 --exclude-pattern
和 --include-pattern
标志仅适用于文件名,而不适用于文件路径的其他部分。
如需了解更多示例,请参阅以下文章:
- 示例:上载
- 示例:下载
- 示例:在帐户之间复制
- 示例:Amazon S3 存储桶
- 示例:Google Cloud Storage
- 示例:Azure 文件存储
- 教程:使用 AzCopy 将本地数据迁移到云存储
请参阅以下文章了解如何配置设置、优化性能和排查问题: