如何下载S3 Bucket,动态压缩并重新部署到另一个S3 Bucket而无需本地下载



我想把一个s3 bucket(托管在芥末上,声称完全兼容s3(的内容下载到我的VPS、tar、gzip和gpg-it中,然后把这个档案重新部署到芥末上的另一个s3 bucket中!

我的vps机器只有30GB的存储空间,整个存储桶的大小约为1000GB,所以我需要在不将数据存储在本地的情况下实时下载、存档、加密和重新部署所有这些存储空间。

秘密似乎在于使用|pipe命令。但我甚至在开始将bucket下载到本地存档时就陷入了困境(我想一步一步地进行(:

s3cmd sync s3://mybucket | tar cvz archive.tar.gz -

最后,在我的脑海中,我期待着一些这样的代码:

s3cmd sync s3://mybucket | tar cvz | gpg --passphrase secretpassword | s3cmd put s3://theotherbucket/archive.tar.gz.gpg

但到目前为止还不起作用!

我错过了什么?

aws s3 sync命令将多个文件复制到目标。它不会复制到stdout

您可以使用aws s3 cp s3://mybucket -(包括末尾的破折号(将文件的内容复制到stdout

来自cp--AWS CLI命令参考:

下面的cp命令将S3对象作为流本地下载到标准输出。作为流下载当前与--recursive参数不兼容:

aws s3 cp s3://mybucket/stream.txt -

这只适用于单个文件。

您可以尝试https://github.com/kahing/goofys.我想,在你的情况下,它可能是以下算法:

$ goofys source-s3-bucket-name /mnt/src
$ goofys destination-s3-bucket-name /mnt/dst
$ tar -cvzf /mnt/src | gpg -e -o /mnt/dst/archive.tgz.gpg

最新更新