【问题标题】:s3cmd delete after uploads3cmd 上传后删除
【发布时间】:2014-03-28 07:57:35
【问题描述】:

我正在尝试将文件从我机器上的文件夹上传到 s3,并在上传完成后从本地机器中删除文件。

我每分钟都有一个使用这个命令运行的 cron,但它不起作用:

s3cmd sync -r --delete-after /home/username/Videos/* s3://bucketname

这有什么问题吗?我可以使用 s3cmd sync 上传,所以配置没有错误 - 但 delete after 命令似乎不起作用。

【问题讨论】:

    标签: ubuntu amazon-s3 s3cmd


    【解决方案1】:

    --delete-after 用于在上传新文件后删除目的地删除的文件。它让远程树保持一致,直到新内容的上传完成。它不会从源中删除文件。

    【讨论】:

      【解决方案2】:

      对于我在 bash 中的解决方案,我使用了 s3cmd putfindhttps://stackoverflow.com/a/8489394 的变体),如下所示:

      find /home/username/Videos -type f | while read -r FILE; do
        s3cmd put "$FILE" s3://bucketname
        if [ $? -eq 0 ]; then
          rm -f "$FILE" && echo "Successfully uploaded file:$FILE"
        else
          echo "ERROR Failed to upload file:${FILE}" && exit 42
        fi
      done
      

      进一步说明,在 s3tools 存储库中有一个开放的功能请求,可以投票:https://github.com/s3tools/s3cmd/issues/262

      【讨论】:

        【解决方案3】:

        你需要编写 bash 文件,并且必须通过 linux rm 命令删除本地机器文件,将这些命令添加到 bashfile 并设置 cronjob。 sync_delete_local_file.sh

        s3cmd sync setacl --acl-public --recursive --preserve --skip-existing /home/username/Videos/ s3://bucketname
        
        rm -r /home/username/Videos/*
        

        【讨论】:

        • --preserve 有什么作用?
        • 在此处查看属性详细信息s3tools.org/usage -p, --preserve 保留文件系统属性(模式、所有权、时间戳)。 [sync] 命令的默认值。
        • 然后,如果 s3cmd 命令失败,您刚刚删除了文件。
        猜你喜欢
        • 2020-07-21
        • 2013-09-19
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多