Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
可以使用 AzCopy v10 命令行实用工具将本地存储与 Azure Blob 存储同步。
可以将本地文件系统的内容与 Blob 容器同步。 还可以将容器和虚拟目录彼此同步。 同步是单向的。 换言之,需要选择这两个终结点中哪一个是源,哪一个是目标。 同步还使用服务器到服务器 API。 本节中提供的示例也适用于具有分层命名空间的帐户。
注释
AzCopy的当前版本仅支持将本地存储与 Azure Blob 存储同步。 它不会将 Blob 容器与其他源和目标(例如 Azure 文件存储 或 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 有足够的核心/内存来处理负载。
使用对本地文件系统所做的更改来更新容器
在本例中,容器是目标,本地文件系统是源。
小窍门
此示例将路径参数括在单引号 ('') 内。 在除 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
通过 SAS 令牌使用另一个容器中的更改更新容器
此命令中显示的第一个容器是源。 第二个容器是目标。
如果提供 SAS 令牌,请确保在使用 azcopy sync 时使用与源存储帐户和目标存储帐户对应的 SAS 令牌。
语法
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>/<destination-SAS-token>' --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/?sv=2018-03-28&ss=qrdu&dst=mco&kp=rwdlapuc&se=2019-07-04T05:30:08Z&st=2019-07-03T21:31:10Z&spr=https&sig=CAfhgnc9gdGktvB=yzx9CAjMKeeN678yiyFwdNU092JC8%6D' --recursive
小窍门
如果要复制大量数据,可以使用 Azure 存储资源管理器。
若要验证所复制数据的大小,请在顶部栏菜单上选择“ 更多 ->Folder Statistics ”以获取目录的详细信息,包括大小(以字节为单位)。
与可选标志同步
可以通过使用可选标志来调整同步操作。 下面是几个示例。
| 情景 | 旗帜 |
|---|---|
| 指定下载时应验证 MD5 哈希的严格程度。 | --check-md5=[NoCheck|LogOnly|FailIfDifferent|FailIfDifferentOrMissing] |
| 基于模式排除文件。 | --exclude-path |
| 指定你希望与同步相关的日志条目达到何种详细程度。 | --log-level=[WARNING|ERROR|INFO|NONE] |
| 指定如何复制 vhd 文件。 | --blob-type=BlockBlob --include-pattern “*.vhd” 或 --blob-type=BlockBlob |
有关标志的完整列表,请参阅 选项。
注释
默认情况下,该 --recursive 标志设置为 true。
--exclude-pattern和--include-pattern标志仅适用于文件名,不适用于文件路径的其他部分。
后续步骤
如需了解更多示例,请参阅以下文章:
请参阅以下文章了解如何配置设置、优化性能和排查问题: