如何在S3上直接解压缩文件?

13

我在S3上有一个10G的.tar文件,我想要解压那个文件并且把未压缩的文件存在S3上。

有没有一个简单的命令可以对S3运行?

还是我必须自己先在本地解压文件,再手动上传单个文件到S3上?

谢谢

3个回答

13

您可以通过Amazon CLI或新的Amazon CloudShell来执行此操作,具体命令如下:

aws s3 cp s3://bucket/data.tar.gz - | tar -xz --to-command='aws s3 cp - s3://bucket/$TAR_REALNAME'

注意那些悬挂的 "-" 字符对于将内容管道输送到标准输出/标准输入非常重要。


连字符(-)有什么作用?如果我在本地有tar文件,但想直接将其提取到S3而不先保存到Windows上,该怎么办? - undefined
@user2441441 我认为你应该将这个问题单独提出来。-字符用于将cp的输出导向标准输出(stdout)。你可以通过在管道|操作符的左侧使用tar命令,并将其输出内容导向标准输出(stdout),从而在本地文件系统中实现相同的效果。详情请参考https://www.gnu.org/software/tar/manual/html_node/Writing-to-Standard-Output.html。 - undefined
我知道这是一段时间前的事情了,但有人可以告诉我$TAR_REALNAME代表什么吗? - undefined
@JamesFinnegan 存储在档案中的文件名称。https://www.gnu.org/software/tar/manual/html_node/Writing-to-an-External-Program.html - undefined

3

在Amazon S3上没有操作文件内容的命令。

您需要下载文件,然后解压并上传到S3。

最快的方法是从与存储桶相同区域的Amazon EC2实例中执行此操作。您也可以编写一个AWS Lambda函数来完成此操作,但要注意500MB的/tmp磁盘空间限制。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接