6

我正在将目录从 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 信息吗?

谢谢!

4

1 回答 1

8

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

同步的语法如下

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

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

但是,您可能知道(如果您对 S3 成本优化进行了一些研究),根据具体情况,使用压缩文件可能更明智。它节省了空间,并且应该减少请求,因此您可以在月底节省一些钱。

此外,s3cmd 不是与 S3 同步的最快工具,因为它不像其他工具那样使用多线程(并且不打算使用),因此您可能需要寻找可以保留多线程所有权和利润的其他工具如果那仍然是您正在寻找的东西。要使用 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/
于 2017-01-31T04:41:42.220 回答