繁体   English   中英

从 S3 提取巨大的 tar.gz 档案而不将档案复制到本地系统

[英]Extract huge tar.gz archives from S3 without copying archives to a local system

我正在寻找一种方法来提取巨大的数据集(18 TB+ 在这里找到https://github.com/cvdfoundation/open-images-dataset#download-images-with-bounding-boxes-annotations )考虑到这一点我需要这个过程要快(即我不想花两倍的时间来第一次复制然后提取文件)而且我不希望档案占用额外的空间,甚至一个 20 gb+ 档案。

关于如何实现这一目标的任何想法?

如果您可以将 pipe 的数据直接放入tar中,则无需临时文件即可解压缩和提取。

这是一个例子。 首先创建一个 tar 文件来玩

$ echo abc >one
$ echo def >two
$ tar cvf test.tar
$ tar cvf test.tar one two
one
two
$ gzip test.tar 

删除测试文件

$ rm one two
$ ls one two
ls: cannot access one: No such file or directory
ls: cannot access two: No such file or directory

现在通过将压缩的 tar 文件传送到tar命令中来提取内容。

$ cat test.tar.gz | tar xzvf -
one
two
$ ls one two
one  two

现在唯一缺少的部分是如何将数据和 pipe 下载到 tar 中。 假设您可以使用wget访问 URL ,您可以让它将数据发送到标准输出。 所以你最终得到了这个

wget -qO- https://youtdata | tar xzvf -

暂无
暂无

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

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