我正在编写一个脚本,将文件从本地系统移动到远程系统。它必须通过像ssh这样的加密通道来实现。做这个的最好方式是什么?我可以通过以下两个步骤执行此操作:
scp *.jpg user@ip:
rm *.jpg
但是,这不是一个原子进程(就像mv用于本地文件系统)。如果复制失败,我将不再拥有本地副本。如何编写此脚本以确保仅在复制成功时才删除本地文件?
答案 0 :(得分:11)
您可以将rsync
与--remove-source-files
一起使用:
rsync -avz --remove-source-files /local/dir/*.jpg user@ip:/remote/dir
答案 1 :(得分:1)
另一种解决方案,一次发布
scp /path/src/*.jpg user@host:/path/dst/ && rm /path/src/*.jpg