我正在从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成本优化做了一些研究),根据具体情况,使用压缩文件可能更明智.
它可以节省空间,并且应该减少请求,因此您最终可能会在月底节省一些成本.
此外,s3cmd不是与S3同步的最快工具,因为它不像其他工具那样使用多线程(和is not planning to),因此您可能希望寻找其他可以保留多线程所有权和利润的工具,如果这仍然是你在寻找什么.
要使用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/