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

rsync : dont delete few files in source after upload

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

文件夹的内容

A
B
C
test1.log
test2.json

我想将所有文件从 source 传输到 destination,并想删除除 test1.log 之外的所有源文件和 test2.json

即在将所有文件上传到目的地后, source 文件夹的内容应该是:

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 做到吗?

正如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/