我正在尝试将文件从我的机器上的文件夹上传到 s3 并在上传完成后从本地机器中删除文件。
我每分钟都有一个使用这个命令运行的 cron,但它不起作用:
s3cmd sync -r --delete-after /home/username/Videos/* s3://bucketname
这有什么问题?我可以使用 s3cmd sync 上传,所以配置没有错 - 但 delete after 命令似乎不起作用。
--delete-after 用于在上传新文件后删除目标位置的已删除文件。它让远程树保持一致,直到新内容的上传完成。它不会从源中删除文件。
对于我在 bash 中的解决方案,我使用s3cmd put
了find
(https://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
您需要编写 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/*