rsync:上传后不要删除源文件中的几个文件

时间:2018-08-21 18:14:31

标签: linux shell networking server rsync

我想编写一个shell脚本,以使用 rsync 在名为sourcedestination的文件夹之间传输文件。

文件夹的内容

A
B
C
test1.log
test2.json

我想将所有文件从传输到目的地,并希望删除test1.logtest2.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.logtest2.json不会被上传。

但是我希望所有文件都上传到目标位置,大多数文件在上传后从源中删除,但是我想在源中保留一些文件。

有什么办法可以使用rsync吗?

1 个答案:

答案 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/