批处理小文件 - Amazon Snowball Edge 开发人员指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

批处理小文件

因为要进行加密,每个复制操作都会产生一些开销。加快将小文件传输到您的过程Amazon Snowball Edge设备,你可以将它们批量合并到一个存档中。当您将文件一起批处理时,如果这些文件是以支持的存档格式之一进行批处理的,则可以在将文件导入 Amazon S3 时自动将其提取。

通常,1 MB 或更小的文件应包含在批处理中。对您可以在一个批处理中拥有的文件数量没有硬限制,虽然我们建议您将批处理限制在约 10,000 个文件。批量文件超过 100,000 个可能会影响您返回设备后将这些文件导入 Amazon S3 的速度。我们建议每个批次的总大小不超过 100 GB。

批处理文件是一个手动过程,您管理该过程。批处理文件后,使用将它们传输到 Snowball Edge 设备Amazon CLI cp用命令行事--metadata snowball-auto-extract=true选项。指定snowball-auto-extract=true在将数据导入 Amazon S3 时自动提取存档文件的内容,只要批处理文件的大小不超过 100 GB。

注意

任何大于 100 GB 的批次在导入到 Amazon S3 时都不会被提取。

批量处理小文件
  1. 决定要以哪种格式批处理您的小文件。自动提取功能支持 TARZIPtar.gz 格式。

  2. 确定要批量处理那些小文件,包括它们的大小和要批量处理的文件的总数。

  3. 在命令行上对文件进行批处理,如以下示例所示。

    • 对于 Linux,您可以在用于将文件传输到设备的同一命令行中对文件进行批处理。

      tar -cf - /Logs/April | aws s3 cp - s3://mybucket/batch01.tar --metadata snowball-auto-extract=true --endpoint http://192.0.2.0:8080
      注意

      或者,您可以使用您选择的存档实用工具将文件批量处理到一个或多个大型档案。但是,这种方法需要额外的本地存储以保存档案,然后再将其传输到 Snowball。

    • 对于 Windows,当所有文件都位于运行命令的同一目录中时,使用以下示例命令对文件进行批处理:

      7z a -tzip -so "test" | aws s3 cp - s3://mybucket/batch01.zip --metadata snowball-auto-extract=true --endpoint http://192.0.2.0:8080

      要批处理运行命令的不同目录中的文件,请使用以下示例命令:

      7z a -tzip -so "test" "c:\temp" | aws s3 cp - s3://mybucket/batch01.zip --metadata snowball-auto-extract=true --endpoint http://10.x.x.x:8080
      注意

      对于微软 Windows 2016,tar 不可用,但你可以从中下载Windows 版塔尔网站。

      你可以从 7ZIP 网站下载 7 ZIP。

  4. 重复此操作,直到您使用 Snowball Edge 存档了所有要传输到 Amazon S3 的小文件。

  5. 将存档文件传输到 Snowball。如果您希望自动提取数据,并且使用了步骤 1 中前面提到的支持的存档格式之一,请使用Amazon CLI cp用命令行事--metadata snowball-auto-extract=true选项。

    注意

    如果有非存档文件,请不要使用此命令。

创建存档文件时,提取将保持当前的数据结构。这意味着,如果您创建包含文件和文件夹的存档文件,Snowball Edge 将在采集到 Amazon S3 的过程中重新创建该文件。

存档文件将在其存储的同一目录中解压缩,并将相应地构建文件夹结构。请记住,在复制存档文件时,设置标志很重要--metadata snowball-auto-extract=true。否则,Snowball Edge 在将数据导入亚马逊 S3 时将不会提取数据。

使用步骤 3 中的示例,如果您的文件夹结构为 /Logs/April/,其中包含文件a.txtb.txtc.txt。如果将此存档文件放在 /mybucket/ 的根目录中,则提取后的数据将如下所示:

/mybucket/Logs/April/a.txt /mybucket/Logs/April/b.txt /mybucket/Logs/April/c.txt

如果将存档文件放入 /myBucket/test/,则提取结果将如下所示:

/mybucket/Test/Logs/April/a.txt /mybucket/Test/Logs/April/b.txt /mybucket/Test/Logs/April/c.txt