2

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

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

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

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

4

3 回答 3

1

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

于 2014-03-29T02:11:54.817 回答
0

对于我在 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

于 2021-01-04T14:26:05.930 回答
-1

您需要编写 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/*
于 2015-04-30T12:24:51.387 回答