比较(不同步)本地文件夹和AWS S3存储桶

时间:2018-04-02 05:56:07

标签: amazon-s3 pgp

我需要将本地文件夹的内容与AWS S3存储桶进行比较,以便在存在差异的情况下对本地文件执行脚本。 这个想法是本地文件(图片)被加密并上传到S3。上传完成后,我删除图片的加密副本以节省空间。第二天,新文件将添加到本地文件夹中。我需要在本地文件夹和S3存储桶之间检查哪些图片已经加密和上传,这样我才会加密新添加的图片,而不是全部加密。我有一个脚本在两个本地文件夹之间执行此操作,但我正在努力调整它,以便在本地文件夹和S3存储桶之间执行比较。 感谢任何可以提供帮助的人。

以下是我目前用于图片排序,加密和备份到S3的实际脚本:

!/斌/庆典

perl / volume1 / Synology / scripts / Exiftool / exiftool'-createate

perl / volume1 / Synology / scripts / Exiftool / exiftool'-model =缺少相机模型'-r -if'(非$ model)' - overwrite_original -r / volume1 / photo /“input”/ --ext .DS_Store -i“@eaDir”

perl / volume1 / Synology / scripts / Exiftool / exiftool' -Directory

cd / volume1 / Synology / Pictures /“图片Glacier备份”/“Glacier的压缩加密图片”/ post_2016 /&& (cd / volume1 / Synology / Pictures / Pictures / post_2016 /; find.-type d!-name。)| xargs -i mkdir -p“{}”

而IFS = read -r文件; do / usr / bin / gpg --encrypt -r xxx@yyy.com / volume1 / Synology / Pictures / Pictures / post_2016 / ** / / / $(basename“$ file”.gpg) ;完成< <(comm -23<(find / volume1 / Synology / Pictures / Pictures / post_2016 -type f -printf'%f.gpg \ n'| sort)<(find / volume1 / Synology / Pictures /“Pictures Glacier备份“/”Glacier的压缩加密图片“/ post_2016 -type f -printf'%f \ n'| sort))

rsync -zarv --exclude = @ eaDir --include =“ /” - include =“ .gpg”--exclude =“”/ volume1 / Synology / Pictures /图片/ post_2016 / / volume1 / Synology /图片/“图片Glacier备份”/“Glacier的压缩加密图片”/ post_2016 / find / volume1 / Synology /图片/图片/ post_2016 / -name“ .gpg”-type f -delete

/ usr / bin / aws s3 sync / volume1 / Synology / Pictures /“图片Glacier备份”/“Glacier的压缩加密图片”/ post_2016 / s3:// xyz / Pictures / post_2016 / --exclude“< em>“ - include” .gpg“--sse

1 个答案:

答案 0 :(得分:0)

持续比较本地和远程文件夹是低效的,特别是当对象数量增加时。

更好的流程是:

  • 未加密的文件已添加到本地文件夹
  • 每个文件是:
    • 复制到加密状态下的另一个文件夹
    • 确认该操作后,将删除原始文件
  • 加密本地文件夹中的文件将复制到S3
    • 确认该操作后,将删除源文件

AWS Command-Line Interface (CLI)有一个aws s3 sync命令,可以很容易地将新的/修改过的文件复制到Amazon S3存储桶,但如果您有数千个文件,这可能会很慢。