我想把一个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