AzCopy 入门
AzCopy 是一个命令行实用工具,可用于向/从存储帐户复制 Blob 或文件。 本文将帮助你下载 AzCopy,连接到你的存储帐户,然后传输数据。
AzCopy 的用例
AzCopy 可用于将数据复制到 Azure 存储帐户、从 Azure 存储帐户复制数据或在 Azure 存储帐户之间复制数据。 常见用例包括:
- 将数据从本地源复制到 Azure 存储帐户
- 将数据从 Azure 存储帐户复制到本地源
- 将数据从一个存储帐户复制到另一个存储帐户
其中每个用例都有唯一的选项。 例如,AzCopy 具有用于复制和/或同步数据的本机命令。 这使得 AzCopy 成为一种灵活的工具,可用于一次性复制活动和正在进行的同步方案。 AzCopy 还支持将特定的存储服务(如 Azure Blob 存储或 Azure 文件存储)作为目标。 这样,就可以将数据从 blob 复制到文件、从文件复制到 blob、从文件复制到文件等。
若要了解有关这些方案的详细信息,请参阅:
- 使用 AzCopy 将文件上传到 Azure Blob 存储
- 使用 AzCopy 从 Azure Blob 存储下载 blob
- 使用 AzCopy 在 Azure 存储帐户之间复制 Blob
- 使用 AzCopy 与 Azure Blob 存储同步
注意
AzCopy 不支持在传输期间主动更改源或目标的情况。
使用包管理器在 Linux 上安装 AzCopy
可以使用托管在适用于 Microsoft 产品的 Linux 软件存储库上的 Linux 包来安装 AzCopy。
下载存储库配置包。
重要
请确保将发行版和版本替换为相应的字符串。
curl -sSL -O https://packages.microsoft.com/config/<distribution>/<version>/packages-microsoft-prod.rpm
安装存储库配置包。
sudo rpm -i packages-microsoft-prod.rpm
安装存储库配置包后,请将其删除。
rm packages-microsoft-prod.rpm
更新包索引文件。
sudo dnf update
安装 AzCopy。
sudo dnf install azcopy
下载 AzCopy 可移植二进制文件
除了安装包以外,另外一种方式是将 AzCopy V10 可执行文件下载到计算机上的任何目录。
- Windows 64 位 (zip)
- Windows 32 位 (zip)
- Linux x86-64 (tar)
- Linux ARM64 (tar)
- macOS (zip)
- macOS ARM64 预览版 (zip)
这些文件压缩成 zip 文件(Windows 和 Mac)或 tar 文件(Linux)。 要在 Linux 上下载并解压缩 tar 文件,请参阅 Linux 分发文档。
有关 AzCopy 版本的详细信息,请参阅 AzCopy 发布页。
注意
若要向/从 Azure 表存储服务复制数据,请安装 AzCopy 版本 7.3。
运行 AzCopy
为方便使用,请考虑将 AzCopy 可执行文件的目录位置添加到系统路径。 这样就可以在系统上的任何目录中键入 azcopy
。
如果不将 AzCopy 目录添加到系统路径,则必须将目录切换到 AzCopy 可执行文件所在的位置,然后在 Windows PowerShell 命令提示符中键入 azcopy
或 .\azcopy
。
系统不会自动向 Azure 存储帐户的所有者分配数据访问权限。 在使用 AzCopy 执行任何有意义的操作之前,需确定如何向存储服务提供身份验证凭据。
授权 AzCopy
可以使用 Microsoft Entra ID 或共享访问签名 (SAS) 令牌提供授权凭据。
选项 1:使用 Microsoft Entra ID
使用 Microsoft Entra ID 可以一次性提供凭据,而无需向每个命令追加 SAS 令牌。
选项 2:使用 SAS 令牌
可将 SAS 令牌追加到在 AzCopy 命令中使用的每个源或目标 URL。
此示例命令以递归方式将本地目录中的数据复制到 Blob 容器。 一个虚构的 SAS 令牌将追加到容器 URL 的末尾。
azcopy copy "C:\local\path" "https://account.blob.core.chinacloudapi.cn/mycontainer1/?sv=2018-03-28&ss=bjqt&srt=sco&sp=rwddgcup&se=2019-05-01T05:01:17Z&st=2019-04-30T21:01:17Z&spr=https&sig=MGCXiyEzbtttkr3ewJIh2AR8KrghSy1DGM9ovN734bQF4%3D" --recursive=true
若要详细了解 SAS 令牌及其获取方式,请参阅使用共享访问签名 (SAS)。
注意
存储帐户的需要安全传输设置决定了与存储帐户的连接是否通过传输层安全 (TLS) 进行安全保护。 默认情况下,此设置处于启用状态。
传输数据
对标识授权或获取 SAS 令牌后,即可开始传输数据。
若要查找示例命令,请参阅以下文章中的任何一篇。
服务 | 文章 |
---|---|
Azure Blob 存储 | 将文件上传到 Azure Blob 存储 |
Azure Blob 存储 | 从 Azure Blob 存储下载 Blob |
Azure Blob 存储 | 在 Azure 存储帐户之间复制 Blob |
Azure Blob 存储 | 与 Azure Blob 存储同步 |
Azure 文件 | 使用 AzCopy 和文件存储传输数据 |
Amazon S3 | 将数据从 Amazon S3 复制到 Azure 存储 |
Google Cloud Storage | 将数据从 Google Cloud Storage 复制到 Azure 存储(预览版) |
Azure Stack 存储 | 使用 AzCopy 和 Azure Stack 存储传输数据 |
获取命令帮助
若要查看命令列表,请键入 azcopy -h
并按 ENTER 键。
若要了解特定的命令,只需包含该命令的名称(例如:azcopy list -h
)。
命令列表
下表列出了所有 AzCopy v10 命令。 每个命令链接到参考文章。
命令 | 说明 |
---|---|
azcopy bench | 通过将测试数据上传到指定位置或从指定位置下载测试数据来运行性能基准测试。 |
azcopy copy | 将源数据复制到目标位置 |
azcopy doc | 以 Markdown 格式生成工具的文档。 |
azcopy env | 显示可配置 AzCopy 行为的环境变量。 |
azcopy jobs | 与管理作业相关的子命令。 |
azcopy jobs clean | 删除所有作业的所有日志和计划文件。 |
azcopy jobs list | 显示有关所有作业的信息。 |
azcopy jobs remove | 删除与给定作业 ID 关联的所有文件。 |
azcopy jobs resume | 恢复具有给定作业 ID 的现有作业。 |
azcopy jobs show | 显示有关给定作业 ID 的详细信息。 |
azcopy list | 列出给定资源中的实体。 |
azcopy login | 登录到 Microsoft Entra ID 以访问 Azure 存储资源。 |
azcopy login status | 列出给定资源中的实体。 |
azcopy logout | 注销用户并终止对 Azure 存储资源的访问。 |
azcopy make | 创建容器或文件共享。 |
azcopy remove | 从 Azure 存储帐户中删除 blob 或文件。 |
azcopy sync | 将源位置复制到目标位置。 |
azcopy set-properties | 更改一个或多个 Blob 的访问层,并替换(覆盖)一个或多个 Blob 的元数据和索引标记。 |
注意
AzCopy 没有用于重命名文件的命令。
在脚本中使用
获取静态下载链接
在一段时间后,AzCopy 下载链接将指向新版 AzCopy。 如果脚本会下载 AzCopy,而更高版本的 AzCopy 会修改该脚本所依赖的功能,则该脚本可能会停止工作。
要避免这些问题,请获取指向 AzCopy 最新版本的静态(保持不变的)链接。 这样,每次运行脚本时,它都会下载相同的 AzCopy 版本。
若要获取该链接,请运行以下命令:
操作系统 | 命令 |
---|---|
Linux | curl -s -D- https://aka.ms/downloadazcopy-v10-linux \| grep ^Location |
Windows PowerShell | (Invoke-WebRequest -Uri https://aka.ms/downloadazcopy-v10-windows -MaximumRedirection 0 -ErrorAction SilentlyContinue).headers.location |
PowerShell 6.1+ | (Invoke-WebRequest -Uri https://aka.ms/downloadazcopy-v10-windows -MaximumRedirection 0 -ErrorAction SilentlyContinue -SkipHttpErrorCheck).headers.location |
注意
对于 Linux,tar
命令中的 --strip-components=1
会删除包含版本名称的顶级文件夹,并改为将二进制文件直接提取到当前文件夹中。 这样,只需要更新 wget
URL,即可使用 azcopy
的新版本更新脚本。
该 URL 显示在此命令的输出中。 然后,脚本可以使用该 URL 下载 AzCopy。
Linux
wget -O azcopy_v10.tar.gz https://aka.ms/downloadazcopy-v10-linux && tar -xf azcopy_v10.tar.gz --strip-components=1
Windows PowerShell
Invoke-WebRequest -Uri 'https://azcopyvnext.azureedge.net/release20220315/azcopy_windows_amd64_10.14.1.zip' -OutFile 'azcopyv10.zip'
Expand-archive -Path '.\azcopyv10.zip' -Destinationpath '.\'
$AzCopy = (Get-ChildItem -path '.\' -Recurse -File -Filter 'azcopy.exe').FullName
# Invoke AzCopy
& $AzCopy
PowerShell 6.1+
Invoke-WebRequest -Uri 'https://azcopyvnext.azureedge.net/release20220315/azcopy_windows_amd64_10.14.1.zip' -OutFile 'azcopyv10.zip'
$AzCopy = (Expand-archive -Path '.\azcopyv10.zip' -Destinationpath '.\' -PassThru | where-object {$_.Name -eq 'azcopy.exe'}).FullName
# Invoke AzCopy
& $AzCopy
转义 SAS 令牌中的特殊字符
在扩展名为 .cmd
的批处理文件中,必须转义 SAS 令牌中显示的 %
字符。 为此,可将一个附加的 %
字符添加到 SAS 令牌字符串中的现有 %
字符旁边。 生成的字符序列显示为 %%
。 请确保在每个 &
字符之前添加一个额外的 ^
,以创建字符序列 ^&
。
使用 Jenkins 运行脚本
如果你打算使用 Jenkins 运行脚本,请确保将以下命令放在脚本的开头。
/usr/bin/keyctl new_session
在 Azure 存储资源管理器中使用
存储资源管理器使用 AzCopy 执行其所有数据传输操作。 如果你想要运用 AzCopy 的性能优势,但同时又偏好使用图形用户界面而不是命令行来与文件交互,可以使用存储资源管理器。
存储资源管理器使用帐户密钥执行操作,因此在登录到存储资源管理器后,无需额外提供授权凭据。
配置、优化和修复
查看以下任意资源:
使用以前的版本(已弃用)
如果需要使用旧版 AzCopy,请参阅以下链接之一:
注意
这些版本的 AzCopy 已弃用。 Azure 建议使用 AzCopy v10。
后续步骤
如有任何疑问、问题或一般反馈,请在 GitHub 页上提交。