教程:使用 AzCopy 将本地数据迁移到云存储空间
AzCopy 是一个命令行工具,借助该工具,可使用简单命令将数据复制到 Azure Blob 存储、Azure 文件和 Azure 表存储或从其中复制出数据。 这些命令旨在实现最佳性能。 使用 AzCopy,可在文件系统和存储帐户之间或在存储帐户之间复制数据。 AzCopy 可以用来将数据从本地复制到存储帐户。
在本教程中,你将了解如何执行以下操作:
- 创建存储帐户。
- 使用 AzCopy 上传所有数据。
- 修改用于测试目的的数据。
- 创建一个计划任务或 cron 作业,以标识要上传的新文件。
如果没有 Azure 订阅,可在开始前创建一个试用帐户。
先决条件
若要完成本教程,请下载最新版 AzCopy。 请参阅 AzCopy 入门。
如果使用 Windows,则需 Schtasks,因为本教程使用它来计划任务。 Linux 用户会改用 crontab 命令。
若要在 Azure 门户中创建常规用途 v2 存储帐户,请执行以下步骤:
- 在“Azure 服务”下,选择“存储帐户” 。
- 在“存储帐户”页上,选择“+ 创建”。
- 在“基本信息”边栏选项卡中,选择要在其中创建存储帐户的订阅。
- 在“资源组”字段中,选择所需的资源组或创建新的资源组。 有关 Azure 资源组的详细信息,请参阅 Azure 资源管理器概述。
- 然后,输入存储帐户的名称。 所选名称在 Azure 中必须唯一。 该名称的长度还必须介于 3 到 24 个字符之间,且只能包含数字和小写字母。
- 选择存储帐户的区域或使用默认区域。
- 选择性能层。 默认层为“标准”。
- 指定将如何复制存储帐户。 默认的冗余选项是异地冗余存储 (GRS)。 要详细了解可用的复制选项,请参阅 Azure 存储冗余。
- “高级”、“网络”、“数据保护”和“标签”边栏选项卡上提供了其他选项 。 若要使用 Azure Data Lake Storage,请选择“高级”边栏选项卡,然后将“分层命名空间”设置为“启用” 。 有关详细信息,请参阅 Azure Data Lake Storage Gen2 简介。
- 选择“查看+创建”可查看存储帐户设置并创建帐户。
- 选择“创建” 。
下图显示了新存储帐户的“基本信息”边栏选项卡上的设置:
创建容器
第一步是创建容器,因为 Blob 始终必须上传到容器中。 容器用作组织 Blob 组的方法,就像将计算机上的文件组织到文件夹中一样。
按照这些步骤创建容器:
选择主页上的“存储帐户” 按钮,然后选择创建的存储帐户。
选择“服务” 下的“Blob” ,然后选择“容器” 。
容器名必须以字母或数字开头。 名称中只能包含字母、数字和连字符 (-)。 有关命名 Blob 和容器的更多规则,请参阅命名和引用容器、Blob 和元数据。
下载 AzCopy
下载 AzCopy V10 可执行文件。
将 AzCopy 文件置于计算机上的任何位置。 将文件位置添加到系统路径变量,这样即可从计算机上的任何文件夹引用该可执行文件。
使用 Microsoft Entra ID 进行身份验证
首先,为标识分配存储 Blob 数据参与者角色。 请参阅分配 Azure 角色以访问 blob 数据。
然后打开命令提示符,键入以下命令,按 ENTER 键。
azcopy login --aad-endpoint https://login.partner.microsoftonline.cn
此命令返回身份验证代码和网站的 URL。 打开网站,提供代码,然后选择“下一步”按钮。
此时会出现登录窗口。 在该窗口中,使用 Azure 帐户凭据登录到 Azure 帐户。 成功登录后,可以关闭浏览器窗口,开始使用 AzCopy。
将文件夹的内容上传到 Blob 存储
可使用 AzCopy 将文件夹中的所有文件上传到 Windows 或 Linux 上的 Blob 存储中。 若要上传文件夹中的所有 Blob,请输入以下 AzCopy 命令:
azcopy copy "<local-folder-path>" "https://<storage-account-name>.<blob or dfs>.core.chinacloudapi.cn/<container-name>" --recursive=true
将
<local-folder-path>
占位符替换为包含文件(例如C:\myFolder
或/mnt/myFolder
)的文件夹的路径。将
<storage-account-name>
占位符替换为存储帐户的名称。请将
<container-name>
占位符替换为所创建容器的名称。
若要将指定目录的内容以递归方式上传到 Blob 存储,请指定 --recursive
选项。 使用此选项运行 AzCopy 时,会同时上传所有子文件夹及其文件。
将修改的文件上传到 Blob 存储
可基于文件的上次修改时间,使用 AzCopy 上传文件。
若要尝试此操作,可在源目录中修改文件或创建新文件,用于测试目的。 然后,使用 AzCopy sync
命令。
azcopy sync "<local-folder-path>" "https://<storage-account-name>.blob.core.chinacloudapi.cn/<container-name>" --recursive=true
将
<local-folder-path>
占位符替换为包含文件(例如C:\myFolder
或/mnt/myFolder
)的文件夹的路径。将
<storage-account-name>
占位符替换为存储帐户的名称。请将
<container-name>
占位符替换为所创建容器的名称。
若要详细了解 sync
命令,请参阅同步文件。
创建计划的任务
可创建用于运行 AzCopy 命令脚本的计划任务或 cron 作业。 此脚本标识新的本地数据,并按特定时间间隔将其上传到云存储。
将 AzCopy 命令复制到文本编辑器。 将 AzCopy 命令的参数值更新为合适的值。 将文件另存为适用于 AzCopy 的 script.sh
(Linux) 或 script.bat
(Windows)。
这些示例假设你的文件夹名为 myFolder
,你的存储帐户名为 mystorageaccount
,你的容器名为 mycontainer
。
注意
Linux 示例将追加 SAS 令牌。 你需要在命令中提供一个。 若要在 cron 作业中使用 Microsoft Entra 身份验证,请确保正确配置 AZCOPY_AUTO_LOGIN_TYPE 环境变量。
azcopy sync "/mnt/myfiles" "https://mystorageaccount.blob.core.chinacloudapi.cn/mycontainer?sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-05-30T06:57:40Z&st=2019-05-29T22:57:40Z&spr=https&sig=BXHippZxxx54hQn%2F4tBY%2BE2JHGCTRv52445rtoyqgFBUo%3D" --recursive=true
在本教程中,Schtasks 用于在 Windows 上创建计划任务。 Crontab 命令用于在 Linux 上创建 cron 作业。
使用 Schtasks ,管理员能够在本地或远程计算机上创建、删除、查询、更改、运行和结束计划的任务。 使用 Cron ,Linux 和 Unix 用户能够使用 cron 表达式在指定日期和时间运行命令或脚本。
若要在 Linux 上创建 cron 作业,请在终端上输入以下命令:
crontab -e
*/5 * * * * sh /path/to/script.sh
在命令中指定 cron 表达式 */5 * * * *
可指示 shell 脚本 script.sh
应每隔五分钟运行一次。 可计划让脚本在每日、每月或每年的特定时间运行。 若要了解有关设置作业执行日期和时间的详细信息,请参阅 cron 表达式。
若要验证计划的任务或 cron 作业运行正常,在 myFolder
目录中创建新文件。 等待五分钟以确认已将新文件上传到存储帐户。 转到日志目录,以查看计划任务或 cron 作业的输出日志。
后续步骤
若要详细了解如何在本地和 Azure 存储之间移动数据,请单击以下链接:
有关 AzCopy 的详细信息,请参阅以下任何文章: