从 Linux 同步到 AWS S3 Bucket 时保留所有者和文件权限信息

Retain owner and file permissions info when syncing to AWS S3 Bucket from Linux

我正在将目录从 Linux 服务器同步到 AWS S3 以进行备份。

rsync -a --exclude 'cache' /path/live /path/backup
aws s3 sync  path/backup s3://myBucket/backup --delete

但是,我注意到当我想像这样恢复备份时:

aws s3 sync s3://myBucket/backup path/live/ --delete

所有者和文件权限不同。我可以做些什么或更改代码以保留文件的原始 Linux 信息吗?

谢谢!

我在寻找其他东西时偶然发现了这个问题,并认为您(或某人)可能想知道您可以使用其他可以保留原始 (Linux) 所有权信息的工具。 肯定还有其他的,但我知道 s3cmd 可以保留所有权信息(存储在存储桶中对象的元数据中)并在将其同步回 Linux 框时恢复它。

同步语法如下

/usr/bin/s3cmd --recursive --preserve sync /path/ s3://mybucket/path/

您可以使用相同的命令将其同步回来,只需反转 from/to。

但是,您可能知道(如果您对 S3 成本优化做了一点研究),根据情况,使用压缩文件可能更明智。 它可以节省 space 并且应该减少请求,这样您就可以在月底节省一些钱。

此外,s3cmd 不是与 S3 同步最快的工具,因为它不像其他工具那样使用 multi-threading(和 is not planning to),因此您可能需要寻找其他工具保留 multi-threading 的所有权和利润,如果这仍然是您要找的东西。 要使用 s3cmd 加速数据传输,您可以使用不同的 --exclude --include 语句执行多个 s3cmd。

例如

/usr/bin/s3cmd --recursive --preserve --exclude="*" --include="a*" sync /path/ s3://mybucket/path/ & \
/usr/bin/s3cmd --recursive --preserve --exclude="*" --include="b*" sync /path/ s3://mybucket/path/ & \
/usr/bin/s3cmd --recursive --preserve --exclude="*" --include="c*" sync /path/ s3://mybucket/path/