可以使用 AzCopy v10 命令行实用程序将文件和目录上传到 Blob 存储。
若要查看其他类型任务(如下载 Blob、与 Blob 存储同步或在帐户之间复制 Blob)的示例,请参阅本文的后续步骤部分中提供的链接。
开始
请参阅 AzCopy 入门一文下载 AzCopy,并了解如何提供存储服务的授权凭据。
注意
本文中的示例假定使用 Microsoft Entra ID 提供授权凭据。
如果要使用 SAS 令牌来授权访问 Blob 数据,请将该令牌追加到每个 AzCopy 命令中的资源 URL。 例如:'https://<storage-account-name>.blob.core.chinacloudapi.cn/<container-name><SAS-token>'。
创建容器
使用 azcopy make 命令创建容器。
提示
这些示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows Command Shell(cmd.exe),请将路径参数括起来,并用双引号(“”)而不是单引号('')。
语法
azcopy make 'https://<storage-account-name>.<blob or dfs>.core.chinacloudapi.cn/<container-name>'
示例
azcopy make 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer'
示例(Data Lake Storage 终结点)
azcopy make 'https://mystorageaccount.dfs.core.chinacloudapi.cn/mycontainer'
有关详细参考文档,请参阅 azcopy make。
上载文件
使用 azcopy copy 命令上传文件。
提示
这些示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows Command Shell(cmd.exe),请将路径参数括起来,并用双引号(“”)而不是单引号('')。
语法
azcopy copy '<local-file-path>' 'https://<storage-account-name>.<blob or dfs>.core.chinacloudapi.cn/<container-name>/<blob-name>'
示例
azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myTextFile.txt'
示例(Data Lake Storage 终结点)
azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.dfs.core.chinacloudapi.cn/mycontainer/myTextFile.txt'
还可以在文件路径或文件名中的任意位置使用通配符 (*) 来上传文件。 例如:'C:\myDirectory\*.txt' 或 C:\my*\*.txt。
上传目录
使用 azcopy copy 命令上传目录。
此示例将某个目录(以及该目录中的所有文件)复制到 Blob 容器。 结果是容器中具有相同名称的目录。
提示
这些示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows Command Shell(cmd.exe),请将路径参数括起来,并用双引号(“”)而不是单引号('')。
语法
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.chinacloudapi.cn/<container-name>' --recursive
示例
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer' --recursive
示例(Data Lake Storage 终结点)
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.chinacloudapi.cn/mycontainer' --recursive
若要复制到容器中的某个目录,只需在命令字符串中指定该目录的名称。
示例
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myBlobDirectory' --recursive
示例(Data Lake Storage 终结点)
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.chinacloudapi.cn/mycontainer/myBlobDirectory' --recursive
如果指定容器中不存在的目录的名称,AzCopy 会创建一个具有该名称的新目录。
上传目录内容
使用 azcopy copy 命令上传目录的内容。 可以使用通配符 (*) 上传内容,而无需复制包含的目录本身。
提示
这些示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows Command Shell(cmd.exe),请将路径参数括起来,并用双引号(“”)而不是单引号('')。
语法
azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.<blob or dfs>.core.chinacloudapi.cn/<container-name>/<directory-path>'
示例
azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myBlobDirectory'
示例(Data Lake Storage 终结点)
azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.dfs.core.chinacloudapi.cn/mycontainer/myBlobDirectory'
追加 --recursive 标志可以上传所有子目录中的文件。
上传特定的文件
可以使用完整的文件名、包含通配符 (*) 的部分名称或者日期和时间来上传特定文件。
提示
这些示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows 命令 Shell (cmd.exe),请用双引号 ("") 而不是单引号 ('') 括住路径参数。
指定多个完整文件名
结合 选项使用 --include-path 命令。 使用分号 (;) 分隔各个文件名。
语法
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.chinacloudapi.cn/<container-name>' --include-path <semicolon-separated-file-list>
示例
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer' --include-path 'photos;documents\myFile.txt' --recursive'
示例(Data Lake Storage 终结点)
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.chinacloudapi.cn/mycontainer' --include-path 'photos;documents\myFile.txt' --recursive'
在此示例中,AzCopy 将传输 C:\myDirectory\photos 目录和 C:\myDirectory\documents\myFile.txt 文件。 包含 --recursive 选项才能传输 C:\myDirectory\photos 目录中的所有文件。
还可以使用 --exclude-path 选项来排除文件。 有关详细信息,请参阅 azcopy copy 参考文档。
使用通配符
结合 选项使用 --include-pattern 命令。 指定包含通配符的部分名称。 使用分号 (;) 分隔名称。
语法
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.<blob or dfs>.core.chinacloudapi.cn/<container-name>' --include-pattern <semicolon-separated-file-list-with-wildcard-characters>
示例
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer' --include-pattern 'myFile*.txt;*.pdf*'
示例(Data Lake Storage 终结点)
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.dfs.core.chinacloudapi.cn/mycontainer' --include-pattern 'myFile*.txt;*.pdf*'
还可以使用 --exclude-pattern 选项来排除文件。 有关详细信息,请参阅 azcopy copy 参考文档。
--include-pattern 和 --exclude-pattern 选项仅适用于文件名,而不适用于路径。 若要复制目录树中存在的所有文本文件,请使用 -recursive 选项获取整个目录树,然后使用 -include-pattern 并指定 *.txt 来获取所有文本文件。
上传在某个日期和时间之前或之后修改的文件
将 azcopy copy 命令与 --include-before 或 --include-after 选项结合使用。 以 ISO-8601 格式指定日期和时间(例如: 2020-08-19T15:04:00Z) 。
以下示例上传在指定日期或之后修改的文件。
语法
azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.<blob or dfs>.core.chinacloudapi.cn/<container-or-directory-name>' --include-after <Date-Time-in-ISO-8601-format>
示例
azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/FileDirectory' --include-after '2020-08-19T15:04:00Z'
示例(Data Lake Storage 终结点)
azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.dfs.core.chinacloudapi.cn/mycontainer/FileDirectory' --include-after '2020-08-19T15:04:00Z'
如需详细的参考,请查看 azcopy copy 参考文档。
使用索引标记上传
可上传文件并将 Blob 索引标记添加到目标 Blob。
如果使用 Microsoft Entra 授权,请将存储 Blob 数据所有者角色分配给安全主体,或者通过自定义 Azure 角色授予对Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/writeAzure 资源提供程序操作的权限。 如果使用共享访问签名(SAS)令牌,则令牌必须通过 t SAS 权限提供对 Blob 标记的访问权限。
若要添加标记,请将 --blob-tags 此选项与 URL 编码的键值对一起使用。
例如,若要添加键 my tag 和值 my tag value,请包含在 --blob-tags='my%20tag=my%20tag%20value' 目标参数中。
用与号分隔多个索引标记(&)。 例如,若要添加键 my second tag 和值 my second tag value,完整的选项字符串为 --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'。
以下示例演示如何使用 --blob-tags 选项。
提示
这些示例将路径参数括在单引号 ('') 内。 在除 Windows 命令 Shell (cmd.exe) 以外的所有命令 shell 中,都请使用单引号。 如果使用 Windows Command Shell(cmd.exe),请将路径参数括起来,并用双引号(“”)而不是单引号('')。
上传文件
azcopy copy 'C:\myDirectory\myTextFile.txt' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myTextFile.txt' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'
上传目录
azcopy copy 'C:\myDirectory' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer' --recursive --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'
上传目录内容
azcopy copy 'C:\myDirectory\*' 'https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer/myBlobDirectory' --blob-tags='my%20tag=my%20tag%20value&my%20second%20tag=my%20second%20tag%20value'
注意
如果为源指定目录,则复制到目标的所有 Blob 都具有在命令中指定的相同标记。
使用可选标志上传
可以通过使用可选标志来调整上传操作。 下面是几个示例。
| 方案 | 标志 |
|---|---|
| 将文件作为追加 Blob 或页 Blob 上传。 | --blob-type=[BlockBlob|PageBlob|AppendBlob] |
| 上传到特定访问层(如存档层)。 | --block-blob-tier=[None|Hot|Cool|Archive] |
有关完整列表,请参阅选项。
指定源和目标类型
AzCopy 使用 --from-to 参数在自动检测可能失败时显式定义源和目标资源类型,例如在管道方案或模拟器中。 此参数可帮助 AzCopy 了解传输的上下文并相应地进行优化。
| FromTo 值 | Description |
|---|---|
LocalBlob |
从本地文件系统上传到 Azure Blob 存储 |
LocalBlobFS |
从本地文件系统上传到 Azure Data Lake Gen2 (BlobFS) |
PipeBlob |
将管道中的数据流式传输到 Azure Blob 存储 |
PipeFile |
将管道中的数据流式传输到 Azure 文件存储 |
后续步骤
如需了解更多示例,请参阅以下文章:
请参阅以下文章了解如何配置设置、优化性能和排查问题: