你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 AzCopy 将本地数据迁移到云存储空间

AzCopy 是一个命令行工具,借助该工具,可使用简单命令将数据复制到 Azure Blob 存储、Azure 文件和 Azure 表存储或从其中复制出数据。 这些命令旨在实现最佳性能。 使用 AzCopy,可在文件系统和存储帐户之间或在存储帐户之间复制数据。 AzCopy 可以用来将数据从本地复制到存储帐户。

在本教程中,你将了解如何执行以下操作:

  • 创建存储帐户。
  • 使用 AzCopy 上传所有数据。
  • 修改用于测试目的的数据。
  • 创建一个计划任务或 cron 作业,以标识要上传的新文件。

如果没有 Azure 订阅,请在开始之前创建一个免费帐户

先决条件

若要完成本教程,请下载最新版 AzCopy。 请参阅 AzCopy 入门

如果使用 Windows,则需 Schtasks,因为本教程使用它来计划任务。 Linux 用户会改用 crontab 命令。

若要在 Azure 门户中创建常规用途 v2 存储帐户,请执行以下步骤:

  1. 在“Azure 服务”下,选择“存储帐户” 。
  2. 在“存储帐户”页上,选择“+ 创建”。
  3. 在“基本信息”边栏选项卡中,选择要在其中创建存储帐户的订阅。
  4. 在“资源组”字段中,选择所需的资源组或创建新的资源组。 有关 Azure 资源组的详细信息,请参阅 Azure 资源管理器概述
  5. 然后,输入存储帐户的名称。 所选名称在 Azure 中必须唯一。 该名称的长度还必须介于 3 到 24 个字符之间,且只能包含数字和小写字母。
  6. 选择存储帐户的区域或使用默认区域。
  7. 选择性能层。 默认层为“标准”。
  8. 指定将如何复制存储帐户。 默认的冗余选项是异地冗余存储 (GRS)。 要详细了解可用的复制选项,请参阅 Azure 存储冗余
  9. “高级”、“网络”、“数据保护”和“标签”边栏选项卡上提供了其他选项 。 若要使用 Azure Data Lake Storage,请选择“高级”边栏选项卡,然后将“分层命名空间”设置为“启用” 。 有关详细信息,请参阅 Azure Data Lake Storage Gen2 简介
  10. 选择“查看+创建”可查看存储帐户设置并创建帐户。
  11. 选择“创建” 。

下图显示了新存储帐户的“基本信息”边栏选项卡上的设置:

显示如何在 Azure 门户中创建存储帐户的屏幕截图。

创建容器

第一步是创建容器,因为 Blob 始终必须上传到容器中。 容器用作组织 Blob 组的方法,就像将计算机上的文件组织到文件夹中一样。

按照这些步骤创建容器:

  1. 选择主页上的“存储帐户” 按钮,然后选择创建的存储帐户。

  2. 选择“服务” 下的“Blob” ,然后选择“容器” 。

    显示容器创建的屏幕截图

容器名必须以字母或数字开头。 名称中只能包含字母、数字和连字符 (-)。 有关命名 Blob 和容器的更多规则,请参阅命名和引用容器、Blob 和元数据

下载 AzCopy

下载 AzCopy V10 可执行文件。

将 AzCopy 文件置于计算机上的任何位置。 将文件位置添加到系统路径变量,这样即可从计算机上的任何文件夹引用该可执行文件。

使用 Microsoft Entra ID 进行身份验证

首先,为标识分配存储 Blob 数据参与者角色。 请参阅分配 Azure 角色以访问 blob 数据

然后打开命令提示符,键入以下命令,按 ENTER 键。

azcopy login

此命令返回身份验证代码和网站的 URL。 打开网站,提供代码,然后选择“下一步”按钮。

显示登录提示的屏幕截图

此时会出现登录窗口。 在该窗口中,使用 Azure 帐户凭据登录到 Azure 帐户。 成功登录后,可以关闭浏览器窗口,开始使用 AzCopy。

将文件夹的内容上传到 Blob 存储

可使用 AzCopy 将文件夹中的所有文件上传到 WindowsLinux 上的 Blob 存储中。 若要上传文件夹中的所有 Blob,请输入以下 AzCopy 命令:

azcopy copy "<local-folder-path>" "https://<storage-account-name>.<blob or dfs>.core.windows.net/<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.windows.net/<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.windows.net/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/4tBY%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 的详细信息,请参阅以下任何文章: