使用 AzCopy 和文件存储传输数据
AzCopy 是一个命令行实用工具,可用于向/从存储帐户复制文件。 本文包含适用于 Azure 文件存储的示例命令。
开始使用
请参阅 AzCopy 入门一文下载 AzCopy,并了解如何提供存储服务的授权凭据。
注意
本文中的示例演示如何使用 SAS 令牌来授予访问权限。 但是,对于面向文件和目录的命令,现在可以使用 Microsoft Entra ID 提供授权凭据,并从这些命令中省略 SAS 令牌。 仍必须在仅面向文件共享或帐户的任何命令中使用 SAS 令牌(例如:'azcopy make https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare'
或 'azcopy copy 'https://mystorageaccount.file.core.chinacloudapi.cn'
)。
若要了解详细信息,请参阅授权 AzCopy。
创建文件共享
可以使用 azcopy make 命令创建文件共享。 本部分中的示例将创建名为 myfileshare
的文件共享。
提示
此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
语法
azcopy make 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>'
示例
azcopy make 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=%2FSOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B%2F3Eykf%2FJLs%3D'
有关详细参考文档,请参阅 azcopy make。
上传文件
可以使用 azcopy copy 命令从本地计算机上传文件和目录。
提示
本部分中的示例将路径参数括在单引号 ('') 中。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
本部分包含以下示例:
- 上传文件
- 上传目录
- 上传目录的内容
- 上传特定的文件
提示
可以通过使用可选标志来调整上传操作。 下面是几个示例。
方案 | 标志 |
---|---|
将访问控制列表 (ACL) 与文件一起复制。 | --preserve-smb-permissions=[true|false] |
将 SMB 属性信息与文件一起复制。 | --preserve-smb-info=[true|false] |
有关完整列表,请参阅选项。
注意
对于大于 256 MB 的文件,AzCopy 不会自动计算和存储文件的 md5 哈希代码。如果你希望 AzCopy 执行此操作,请将 --put-md5
标志追加到每个复制命令。 这样,在下载文件后,AzCopy 将计算已下载的数据的 MD5 哈希,并验证存储在该文件的 Content-md5
属性中的 MD5 哈希是否与计算出的哈希相匹配。
上传文件
语法
azcopy copy '<local-file-path>' 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<file-name><SAS-token>'
示例
azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/myTextFile.txt?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D' --preserve-smb-permissions=true --preserve-smb-info=true
还可以在文件路径或文件名中的任意位置使用通配符 (*) 来上传文件。 例如:'C:\myDirectory\*.txt'
或 C:\my*\*.txt
。
上传目录
此示例将某个目录(以及该目录中的所有文件)复制到文件共享。 结果是该文件共享中出现一个同名的目录。
语法
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>' --recursive
示例
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
若要复制到文件共享中的某个目录,只需在命令字符串中指定该目录的名称。
示例
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/myFileShareDirectory?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
如果指定的目录名称在文件共享中不存在,AzCopy 将以该名称创建一个新目录。
上传目录的内容
可以使用通配符 (*) 上传目录的内容,而无需复制包含的目录本身。
语法
azcopy copy '<local-directory-path>/*' 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<directory-path><SAS-token>'
示例
azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/myFileShareDirectory?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D' --preserve-smb-permissions=true --preserve-smb-info=true
注意
追加 --recursive
标志可以上传所有子目录中的文件。
上传特定的文件
可以使用完整的文件名、包含通配符 (*) 的部分名称或者日期和时间来上传特定文件。
指定多个完整文件名
结合 --include-path
选项使用 azcopy copy 命令。 使用分号 (;
) 分隔各个文件名。
语法
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-or-directory-name><SAS-token>' --include-path <semicolon-separated-file-list>
示例
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare?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' --include-path 'photos;documents\myFile.txt' --preserve-smb-permissions=true --preserve-smb-info=true
在此示例中,AzCopy 将传输 C:\myDirectory\photos
目录和 C:\myDirectory\documents\myFile.txt
文件。 需要包含 --recursive
选项才能传输 C:\myDirectory\photos
目录中的所有文件。
还可以使用 --exclude-path
选项来排除文件。 有关详细信息,请参阅 azcopy copy 参考文档。
使用通配符
结合 --include-pattern
选项使用 azcopy copy 命令。 指定包含通配符的部分名称。 使用分号 (;
) 分隔名称。
语法
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-or-directory-name><SAS-token>' --include-pattern <semicolon-separated-file-list-with-wildcard-characters>
示例
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare?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' --include-pattern 'myFile*.txt;*.pdf*' --preserve-smb-permissions=true --preserve-smb-info=true
还可以使用 --exclude-pattern
选项来排除文件。 有关详细信息,请参阅 azcopy copy 参考文档。
--include-pattern
和 --exclude-pattern
选项仅适用于文件名,而不适用于路径。 若要复制目录树中存在的所有文本文件,请使用 --recursive
选项获取整个目录树,然后使用 --include-pattern
并指定 *.txt
来获取所有文本文件。
上传在某个日期和时间之后修改的文件
结合 --include-after
选项使用 azcopy copy 命令。 以 ISO 8601 格式指定日期和时间(例如 2020-08-19T15:04:00Z
)。
语法
azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-or-directory-name><SAS-token>' --include-after <Date-Time-in-ISO-8601-format>
示例
azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare?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' --include-after '2020-08-19T15:04:00Z' --preserve-smb-permissions=true --preserve-smb-info=true
如需详细的参考,请查看 azcopy copy 参考文档。
下载文件
可以使用 azcopy copy 命令将文件、目录和文件共享下载到本地计算机。
提示
本部分中的示例将路径参数括在单引号 ('') 中。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
本部分包含以下示例:
- 下载文件
- 下载目录
- 下载目录的内容
- 下载特定的文件
提示
可以通过使用可选标志来调整下载操作。 以下是一些示例:
方案 | 标志 |
---|---|
将访问控制列表 (ACL) 与文件一起复制。 | --preserve-smb-permissions=[true|false] |
将 SMB 属性信息与文件一起复制。 | --preserve-smb-info=[true|false] |
自动解压缩文件。 | --decompress |
有关完整列表,请参阅选项。
注意
如果文件的 Content-md5
属性值包含哈希,AzCopy 将计算已下载的数据的 MD5 哈希,并验证存储在该文件的 Content-md5
属性中的 MD5 哈希是否与计算出的哈希相匹配。 如果这些值不匹配,除非通过将 --check-md5=NoCheck
或 --check-md5=LogOnly
追加到 copy 命令来重写此行为,否则下载将会失败。
下载文件
语法
azcopy copy 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<file-path><SAS-token>' '<local-file-path>'
示例
azcopy copy 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/myTextFile.txt?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D' 'C:\myDirectory\myTextFile.txt' --preserve-smb-permissions=true --preserve-smb-info=true
下载目录
语法
azcopy copy 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<directory-path><SAS-token>' '<local-directory-path>' --recursive
示例
azcopy copy 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/myFileShareDirectory?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D' 'C:\myDirectory' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
此示例将生成名为 C:\myDirectory\myFileShareDirectory
的目录,其中包含所有已下载的文件。
下载目录的内容
可以使用通配符 (*) 下载目录的内容,而无需复制包含的目录本身。
语法
azcopy copy 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/*<SAS-token>' '<local-directory-path>/'
示例
azcopy copy 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/myFileShareDirectory/*?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D' 'C:\myDirectory' --preserve-smb-permissions=true --preserve-smb-info=true
注意
追加 --recursive
标志可以下载所有子目录中的文件。
下载特定的文件
可以使用完整的文件名、包含通配符 (*) 的部分名称或者日期和时间来下载特定文件。
指定多个完整文件名
结合 --include-path
选项使用 azcopy copy 命令。 使用分号 (;
) 分隔各个文件名。
语法
azcopy copy 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-or-directory-name><SAS-token>' '<local-directory-path>' --include-path <semicolon-separated-file-list>
示例
azcopy copy 'https://mystorageaccount.file.core.chinacloudapi.cn/myFileShare/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' 'C:\myDirectory' --include-path 'photos;documents\myFile.txt' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
在此示例中,AzCopy 将传输 https://mystorageaccount.file.core.chinacloudapi.cn/myFileShare/myDirectory/photos
目录和 https://mystorageaccount.file.core.chinacloudapi.cn/myFileShare/myDirectory/documents/myFile.txt
文件。 包含 --recursive
选项才能传输 https://mystorageaccount.file.core.chinacloudapi.cn/myFileShare/myDirectory/photos
目录中的所有文件。
还可以使用 --exclude-path
选项来排除文件。 有关详细信息,请参阅 azcopy copy 参考文档。
使用通配符
结合 --include-pattern
选项使用 azcopy copy 命令。 指定包含通配符的部分名称。 使用分号 (;
) 分隔名称。
语法
azcopy copy 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-or-directory-name><SAS-token>' '<local-directory-path>' --include-pattern <semicolon-separated-file-list-with-wildcard-characters>
示例
azcopy copy 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/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' 'C:\myDirectory' --include-pattern 'myFile*.txt;*.pdf*' --preserve-smb-permissions=true --preserve-smb-info=true
还可以使用 --exclude-pattern
选项来排除文件。 有关详细信息,请参阅 azcopy copy 参考文档。
--include-pattern
和 --exclude-pattern
选项仅适用于文件名,而不适用于路径。 若要复制目录树中存在的所有文本文件,请使用 --recursive
选项获取整个目录树,然后使用 --include-pattern
并指定 *.txt
来获取所有文本文件。
下载在某个日期和时间之后修改的文件
结合 --include-after
选项使用 azcopy copy 命令。 以 ISO-8601 格式指定日期和时间(例如 2020-08-19T15:04:00Z
)。
语法
azcopy copy 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-or-directory-name>/*<SAS-token>' '<local-directory-path>' --include-after <Date-Time-in-ISO-8601-format>
示例
azcopy copy 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/*?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' 'C:\myDirectory' --include-after '2020-08-19T15:04:00Z' --preserve-smb-permissions=true --preserve-smb-info=true
如需详细的参考,请查看 azcopy copy 参考文档。
从共享快照下载
可以通过引用共享快照的 DateTime 值来下载特定版本的文件或目录。 若要详细了解共享快照,请参阅 Azure 文件存储的共享快照概述。
语法
azcopy copy 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<file-path-or-directory-name><SAS-token>&sharesnapshot=<DateTime-of-snapshot>' '<local-file-or-directory-path>'
示例(下载文件)
azcopy copy 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/myTextFile.txt?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D&sharesnapshot=2020-09-23T08:21:07.0000000Z' 'C:\myDirectory\myTextFile.txt' --preserve-smb-permissions=true --preserve-smb-info=true
示例(下载目录)
azcopy copy 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileshare/myFileShareDirectory?sv=2018-03-28&ss=bjqt&srs=sco&sp=rjklhjup&se=2019-05-10T04:37:48Z&st=2019-05-09T20:37:48Z&spr=https&sig=/SOVEFfsKDqRry4bk3qz1vAQFwY5DDzp2%2B/3Eykf/JLs%3D&sharesnapshot=2020-09-23T08:21:07.0000000Z' 'C:\myDirectory' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
在存储帐户之间复制文件
可以使用 AzCopy 将文件复制到其他存储帐户。 复制操作是同步的,因此,当此命令返回时,会复制所有文件。
AzCopy 使用服务器到服务器 API,因此,数据会直接在存储服务器之间复制。 可以通过设置 AZCOPY_CONCURRENCY_VALUE
环境变量的值来提高这些操作的吞吐量。 若要了解详细信息,请参阅提高并发性。
还可以通过引用共享快照的 DateTime 值来复制文件的特定版本。 若要详细了解共享快照,请参阅 Azure 文件存储的共享快照概述。
提示
本部分中的示例将路径参数括在单引号 ('') 中。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
本部分包含以下示例:
- 将文件复制到另一个存储帐户
- 将目录复制到另一个存储帐户
- 将文件共享复制到另一个存储帐户
- 将所有文件共享、目录和文件复制到另一个存储帐户
提示
可以通过使用可选标志来调整复制操作。 下面是几个示例。
方案 | 标志 |
---|---|
将访问控制列表 (ACL) 与文件一起复制。 | --preserve-smb-permissions=[true|false] |
将 SMB 属性信息与文件一起复制。 | --preserve-smb-info=[true|false] |
有关完整列表,请参阅选项。
将文件复制到另一个存储帐户
语法
azcopy copy 'https://<source-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<file-path><SAS-token>' 'https://<destination-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<file-path><SAS-token>'
示例
azcopy copy 'https://mysourceaccount.file.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.file.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' --preserve-smb-permissions=true --preserve-smb-info=true
示例(共享快照)
azcopy copy 'https://mysourceaccount.file.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&sharesnapshot=2020-09-23T08:21:07.0000000Z' 'https://mydestinationaccount.file.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' --preserve-smb-permissions=true --preserve-smb-info=true
将目录复制到另一个存储帐户
语法
azcopy copy 'https://<source-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<directory-path><SAS-token>' 'https://<destination-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>' --recursive
示例
azcopy copy 'https://mysourceaccount.file.core.chinacloudapi.cn/myFileShare/myFileDirectory?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.file.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' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
示例(共享快照)
azcopy copy 'https://mysourceaccount.file.core.chinacloudapi.cn/myFileShare/myFileDirectory?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&sharesnapshot=2020-09-23T08:21:07.0000000Z' 'https://mydestinationaccount.file.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' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
将文件共享复制到另一个存储帐户
语法
azcopy copy 'https://<source-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>' 'https://<destination-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>' --recursive
示例
azcopy copy 'https://mysourceaccount.file.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.file.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 --preserve-smb-permissions=true --preserve-smb-info=true
示例(共享快照)
azcopy copy 'https://mysourceaccount.file.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&sharesnapshot=2020-09-23T08:21:07.0000000Z' 'https://mydestinationaccount.file.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' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
将所有文件共享、目录和文件复制到另一个存储帐户
语法
azcopy copy 'https://<source-storage-account-name>.file.core.chinacloudapi.cn/<SAS-token>' 'https://<destination-storage-account-name>.file.core.chinacloudapi.cn/<SAS-token>' --recursive'
示例
azcopy copy 'https://mysourceaccount.file.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.file.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' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
示例(共享快照)
azcopy copy 'https://mysourceaccount.file.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&sharesnapshot=2020-09-23T08:21:07.0000000Z' 'https://mydestinationaccount.file.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' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
同步文件
可以将本地文件系统的内容与文件共享同步,也可以将文件共享的内容与其他文件共享同步。 还可将一个文件共享中的目录内容,与位于另一个文件共享中的目录内容同步。 同步是单向的。 换言之,需要选择这两个终结点中哪一个是源,哪一个是目标。 同步也使用服务器到服务器 API。
注意
目前,通过 blob 终结点启用了分层命名空间的帐户支持此方案。
警告
支持 AzCopy 同步,但不完全建议用于Azure 文件存储。 AzCopy 同步不支持大规模差异复制,某些文件保真度可能会丢失。 若要了解详细信息,请查看迁移到 Azure 文件共享。
指南
默认情况下,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 有足够的核心/内存来处理负载。
提示
可以通过使用可选标志来调整同步操作。 下面是几个示例。
方案 | 标志 |
---|---|
将访问控制列表 (ACL) 与文件一起复制。 | --preserve-smb-permissions=[true|false] |
将 SMB 属性信息与文件一起复制。 | --preserve-smb-info=[true|false] |
基于模式排除文件。 | --exclude-path |
指定你希望与同步相关的日志条目达到何种详细程度。 | --log-level=[WARNING|ERROR|INFO|NONE] |
有关完整列表,请参阅选项。
本部分中的示例将路径参数括在单引号 ('') 中。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
使用对本地文件系统所做的更改来更新文件共享
在这种情况下,文件共享是目标,本地文件系统是源。
提示
此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
语法
azcopy sync '<local-directory-path>' 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>' --recursive
示例
azcopy sync 'C:\myDirectory' 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileShare?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' --recursive
使用对文件共享所做的更改来更新本地文件系统
在这种情况下,本地文件系统是目标,文件共享是源。
提示
此示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
语法
azcopy sync 'https://<storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>' 'C:\myDirectory' --recursive
示例
azcopy sync 'https://mystorageaccount.file.core.chinacloudapi.cn/myfileShare?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' 'C:\myDirectory' --recursive
使用对一个文件共享所做的更改来更新另一个文件共享
此命令中显示的第一个文件共享是源。 第二个文件共享是目标。
语法
azcopy sync 'https://<source-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>' 'https://<destination-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>' --recursive
示例
azcopy sync 'https://mysourceaccount.file.core.chinacloudapi.cn/myfileShare?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.file.core.chinacloudapi.cn/myfileshare?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' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
使用对另一个文件共享中的目录所做的更改来更新某个目录
此命令中显示的第一个目录是源。 第二个是目标。
语法
azcopy sync 'https://<source-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<directory-name><SAS-token>' 'https://<destination-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name>/<directory-name><SAS-token>' --recursive
示例
azcopy sync 'https://mysourceaccount.file.core.chinacloudapi.cn/myFileShare/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.file.core.chinacloudapi.cn/myFileShare/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' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
更新文件共享,使之与共享快照的内容匹配
此命令中显示的第一个文件共享是源。 在 URI 的末尾追加字符串 &sharesnapshot=
,后跟快照的 DateTime 值。
语法
azcopy sync 'https://<source-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>&sharesnapsot<snapshot-ID>' 'https://<destination-storage-account-name>.file.core.chinacloudapi.cn/<file-share-name><SAS-token>' --recursive
示例
azcopy sync 'https://mysourceaccount.file.core.chinacloudapi.cn/myfileShare?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&sharesnapshot=2020-03-03T20%3A24%3A13.0000000Z' 'https://mydestinationaccount.file.core.chinacloudapi.cn/myfileshare?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' --recursive --preserve-smb-permissions=true --preserve-smb-info=true
若要详细了解共享快照,请参阅 Azure 文件存储的共享快照概述。
后续步骤
在以下文章中查找更多示例:
请参阅以下文章了解如何配置设置、优化性能和排查问题: