【问题标题】:Compare (not sync) the contents of a local folder and a AWS S3 bucket比较(不同步)本地文件夹和 AWS S3 存储桶的内容
【发布时间】:2018-04-02 05:56:07
【问题描述】:

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

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

!/bin/bash

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

perl /volume1/Synology/scripts/Exiftool/exiftool '-model=camera model missing' -r -if '(not $model)' -overwrite_original -r /volume1/photo/"input"/ --ext . DS_Store -i "@eaDir"

perl /volume1/Synology/scripts/Exiftool/exiftool '-目录

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

当 IFS= 读取 -r 文件时;做 /usr/bin/gpg --encrypt -r xxx@yyy.com /volume1/Synology/Pictures/Pictures/post_2016/**///$(basename "$file" .gpg) ; done

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

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

【问题讨论】:

    标签: amazon-s3 pgp


    【解决方案1】:

    不断比较本地和远程文件夹效率低下,尤其是随着对象数量的增加。

    更好的流程是:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2017-10-26
      • 2021-07-12
      相关资源
      最近更新 更多