0

我想将 s3 存储桶的内容(托管在芥末上,声称与 s3 完全兼容)下载到我的 VPS、tar 和 gzip 和 gpg,然后将此存档重新上传到芥末上的另一个 s3 存储桶!

我的 vps 机器只有 30GB 的存储空间,整个存储桶大小约为 1000GB,因此我需要即时下载、存档、加密和重新上传所有数据,而无需将数据存储在本地。

秘密似乎在于使用 | 管道命令。但是我什至在开始将存储桶下载到本地存档时也被卡住了(我想一步一步地进行):

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

但到目前为止它还没有工作!

我错过了什么?

4

2 回答 2

1

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

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

来自cp — AWS CLI 命令参考

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

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

这仅适用于单个文件。

于 2019-10-28T02:44:23.570 回答
0

你可以试试https://github.com/kahin/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
于 2020-01-17T01:51:13.757 回答