我正在尝试将文件从我的计算机上的文件夹上传到s3,并在上传完成后从本地计算机上删除该文件。
我使用此命令每分钟运行一次cron,但它无效:
s3cmd sync -r --delete-after /home/username/Videos/* s3://bucketname
这有什么不对吗?我可以使用s3cmd sync上传,所以配置没有错 - 但是删除后命令似乎不起作用。
答案 0 :(得分:1)
- delete-after用于在上传新文件后删除目的地的已删除文件。它允许远程树保持一致,直到新内容的上传完成。它不会从源中删除文件。
答案 1 :(得分:0)
对于我在 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
答案 2 :(得分:-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/*