首页 > 解决方案 > 从 S3 提取巨大的 tar.gz 档案而不将档案复制到本地系统

问题描述

考虑到我需要这个过程要快(即我不想花两次时间来第一次复制然后提取文件)而且我不希望档案占用额外的空间,甚至一个 20 gb+ 档案。

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

标签: amazon-s3gziptar

解决方案


如果您可以安排将数据直接通过管道传输到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

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

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

推荐阅读