繁体   English   中英

如何将多个文件直接下载、解压缩和传输到 s3 存储桶中?

[英]How to download, decompress and transfer multiple files directly into an s3 bucket?

我的问题如下:我想使用 url 下载托管在某处的数据集,解压缩并将文件(例如图像)上传到 s3 存储桶。 An example of dataset could be CIFAR-100: https://www.cs.toronto.edu/~kriz/cifar.html and the dataset url would be https://www.cs.toronto.edu/~kriz/cifar -100-python.tar.gz

请注意,在某些情况下,数据集很大,因此首先将其下载到我的本地计算机根本不是一种选择。 我考虑过创建一个 pipe 来尽可能精简。 以下命令适用于单个文件(例如单个图像):

curl "url/single_image.tar.gz" | tar xvz | aws s3 cp - s3://my_bucket/single_image.jpg

但是,如果压缩文件夹包含例如多个图像,则上面的命令不再起作用,因为它需要指定目标文件名和扩展名。

这个问题最简单的解决方案是什么?

使用带有--to-command选项的 gnu tar,它允许您:

提取文件和 pipe 的内容到命令的标准输入。 使用此选项时,tar 不会创建指定的文件,而是调用命令并将文件的内容通过管道传输到其标准 output。

它甚至支持以下内容:

该命令可以从以下环境变量中获取有关它处理的文件的信息:

TAR_FILENAME 文件的名称。

以下命令应该执行您想要的操作:

curl https://xxxxx/test.tar | tar -xz --to-command='aws s3 cp - s3://bucket/$TAR_FILENAME'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM