AWS Snowball
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Snowball 中的数据验证

下文提供有关 Snowball 如何验证数据传输的信息,以及您可以在任务执行期间和之后用来确保数据完整性的手动步骤。

所传输数据的校验和验证

当您使用 Snowball 客户端或 适用于 Snowball 的 Amazon S3 Adapter 将文件从本地数据源复制到 Snowball 时,将创建一些校验和。这些校验和用于在数据传输期间自动验证数据。

在较高层面,对于每个文件 (或大型文件的各个部分) 都会创建这些校验和。这些校验和对您始终不可见,也不提供下载。这些校验和用于在整个传输过程中验证数据的完整性,能确保数据正确复制。

如果这些校验和不匹配,我们不会将关联数据导入到 Amazon S3 中。

常见验证错误

验证错误是可能发生的。只要出现验证错误,相应数据 (一个文件或大型文件的一部分) 就不会写入目的地。造成验证错误的常见原因如下:

  • 尝试复制符号链接。

  • 尝试复制正被修改的文件。这不会导致验证错误,但会导致在传输结束时校验和不匹配。

  • 尝试复制大于 5 TB 的整个文件。

  • 尝试复制大小大于 512 MB 的部分。

  • 尝试将文件复制到数据存储容量已满的 Snowball。

  • 尝试将文件复制到不遵守 Amazon S3 的对象键命名指导原则的 Snowball。

只要发生任何一个验证错误,它就会被记录下来。您可以如以下几节所述执行相应步骤来手动识别未能通过验证的文件以及失败原因:

传输期间的 Snowball 手动数据验证

您可以使用手动验证来检查您的数据是否已成功传输到您的设备。如果您在尝试传输数据后收到错误,也可以使用手动验证。请参考下面一节内容了解如何在 Snowball 上手动验证数据。

检查失败文件日志 – Snowball 客户端

当您运行 Snowball 客户端 copy 命令时,将生成一个显示无法传输到 Snowball 的所有文件的日志。如果您在传输数据期间遇到错误,失败文件日志路径将输出到终端。此日志以逗号分隔值 (.csv) 文件形式保存。根据您的操作系统,您可在以下位置之一找到此日志:

  • WindowsC:/Users/<username>/AppData/Local/Temp/snowball-<random-character-string>/failed-files

  • Linux/tmp/snowball-<random-character-string>/failed-files

  • Mac/var/folders/gf/<random-character-string>/<random-character-string>/snowball-7464536051505188504/failed-files

对 Snowball 客户端 copy 命令使用 --verbose 选项

当您运行 Snowball 客户端 copy 命令时,可以使用 --verbose 选项列出传输到 Snowball 的所有文件。您可以使用此列表验证已传输到 Snowball 的内容。

检查日志 – 适用于 Snowball 的 Amazon S3 Adapter

当您使用 AWS CLI 运行 适用于 Snowball 的 Amazon S3 Adapter 来复制数据时,将生成日志。这些日志保存在以下位置 (具体取决于您的文件系统):

  • WindowsC:/Users/<username>/.aws/snowball/logs/snowball_adapter_<year_month_date_hour>

  • Linux/home/.aws/snowball/logs/snowball_adapter_<year_month_date_hour>

  • Mac/Users/<username>/.aws/snowball/logs/snowball_adapter_<year_month_date_hour>

使用 -stopOnError copy 选项

如果您正在使用 Snowball 客户端进行传输,则可以使用此选项在发生文件传输故障时停止传输过程。使用此选项时,只要传输发生故障,就会停止复制,因此您可以先解决故障再继续复制操作。有关更多信息,请参阅snowball cp 命令的选项

运行 Snowball 客户端的验证命令

Snowball 客户端的 snowball validate 命令可以验证 Snowball 上的文件是否已完全复制到 Snowball。如果您指定路径,则此命令将验证该路径指向的内容及其子目录中的内容。此命令将列出当前正在传输的文件,并将其传输状态标记为未完成。有关验证命令的更多信息,请参阅 Snowball 客户端的验证命令

导入到 Amazon S3 后的 Snowball 手动数据验证

导入任务完成后,您可以如下所述使用多种选项来手动验证 Amazon S3 中的数据。

检查任务完成报告和相关日志

每当对 Amazon S3 导入或导出数据时,您都将获得一个可下载的 PDF 任务报告。对于导入任务,该报告在导入过程结束时提供。有关更多信息,请参阅 从控制台中获取任务完成报告和日志

S3 清单

如果您通过多个任务将大量数据传输到 Amazon S3 中,则浏览每一个任务完成报告可能效率不高。相反,您可以获取一个或多个 Amazon S3 存储桶中所有对象的清单。Amazon S3 清单每天或每周提供一个 .csv 文件,此文件显示您的对象及其相应元数据。此文件包含 Amazon S3 存储桶或共享前缀的对象 (即名称以通用字符串开头的对象)。

一旦您获得了您向其中导入了数据的 Amazon S3 存储桶的清单,就可以轻松将它与您在源数据位置传输的文件进行比较。通过这种方法,您可以快速识别哪些文件未传输。

使用 Amazon S3 sync 命令

如果您的工作站可以连接到 Internet,您可以运行 AWS CLI 命令 aws s3 sync 对传输的所有文件执行最终验证。此命令可同步目录和 S3 前缀。此命令以递归方式将源目录中的新文件和更新过的文件复制到目的地。有关更多信息,请参阅 https://docs.amazonaws.cn/cli/latest/reference/s3/sync.html

重要

如果您指定本地存储作为此命令的目的地,请确保您拥有所同步的文件的备份。这些文件将由指定 Amazon S3 源中的内容覆盖。