我想编写一个 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
来做到这一点吗?
最佳答案
正如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/
关于linux - 同步: dont delete few files in source after upload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51954516/