如何下载数百万个 S3 文件并即时压缩它们?
How to download millions of S3 files and compress them on the fly?
我有一个包含数百万个文件的 S3 存储桶,我想下载所有这些文件。由于我没有足够的存储空间,我想下载它们,即时压缩它们,然后再保存它们。我该怎么做?
为了说明我的意思:
aws s3 cp --recursive s3://bucket | gzip > file
如果你想将它们全部压缩到一个文件中,正如你的问题似乎表明的那样,你可以在 CLI 命令的末尾添加一个 -
以使其写入 StdOut:
aws s3 cp --recursive s3://bucket - | gzip > file
如果您想将它们压缩为单独的文件,那么您需要先获取所有文件的列表,然后遍历它们并download/compress 一次一个。
但是您可能会发现在同一区域中启动一个 public EC2 实例并使用足够的磁盘 space 来保存未压缩的文件会更快也更便宜,将它们全部下载到一次,然后在那里压缩它们(从 S3 到 EC2 的数据是免费的,只要它不通过 NAT 或跨区域)。然后您可以从 S3 下载压缩文件并关闭实例。
我有一个包含数百万个文件的 S3 存储桶,我想下载所有这些文件。由于我没有足够的存储空间,我想下载它们,即时压缩它们,然后再保存它们。我该怎么做?
为了说明我的意思:
aws s3 cp --recursive s3://bucket | gzip > file
如果你想将它们全部压缩到一个文件中,正如你的问题似乎表明的那样,你可以在 CLI 命令的末尾添加一个 -
以使其写入 StdOut:
aws s3 cp --recursive s3://bucket - | gzip > file
如果您想将它们压缩为单独的文件,那么您需要先获取所有文件的列表,然后遍历它们并download/compress 一次一个。
但是您可能会发现在同一区域中启动一个 public EC2 实例并使用足够的磁盘 space 来保存未压缩的文件会更快也更便宜,将它们全部下载到一次,然后在那里压缩它们(从 S3 到 EC2 的数据是免费的,只要它不通过 NAT 或跨区域)。然后您可以从 S3 下载压缩文件并关闭实例。