我想编写一个shell脚本,以使用 rsync 在名为source
和destination
的文件夹之间传输文件。
源文件夹的内容
A
B
C
test1.log
test2.json
我想将所有文件从源传输到目的地,并希望删除test1.log
和test2.json
以外的所有源文件>
即在将所有文件上传到目标位置之后, 源文件夹的内容应为:
test1.log
test2.json
目标文件夹的内容应为:
A
B
C
test1.log
test2.json
我尝试过
rsync -aP --timeout=120 --remove-source-files -e "ssh -o StrictHostKeyChecking=no -i /id" source user@1.1.1.1:/destination_path/ --exclude=test1.log --exclude=test2.json
但是在这种情况下,test1.log
和test2.json
不会被上传。
但是我希望所有文件都上传到目标位置,大多数文件在上传后从源中删除,但是我想在源中保留一些文件。
有什么办法可以使用rsync
吗?
答案 0 :(得分:0)
正如user1934428
所指出的,如果我使用--remove-source-files
,则无法保持某些文件在传输后不被删除。
因此,我最终使用了以下解决方案,该解决方案效率不高,因为必须rsync
调用两次。
rsync -aP --timeout=120 --remove-source-files -e "ssh -o StrictHostKeyChecking=no -i /id" source user@1.1.1.1:/destination_path/ --exclude=test1.log --exclude=test2.json
rsync -aP --timeout=120 -e "ssh -o StrictHostKeyChecking=no -i /id" source user@1.1.1.1:/destination_path/