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

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

批量处理小文件

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

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

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

注意

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

批量处理小文件

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

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

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

    • 对于 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*.txt" | aws s3 cp - s3://examplebucket/folder1/batch02.zip --metadata snowball-auto-extract=true --endpoint http://10.x.x.x:8080 --no-cli-auto-prompt --profile sbe-job1
      注意

      对于微软 Windows 2016,tar 不可用,但你可以从 Tar for Windows 网站下载。

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

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

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

    注意

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

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

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

使用步骤 3 中的示例,如果您的文件夹结构为 /Logs/April/,其中包含文件a.txtb.txt以及c.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