rsync:上传后不要删除源中的几个文件
rsync : dont delete few files in source after upload
我想编写一个 shell 脚本来使用 rsync 在名为 source
和 destination
的文件夹之间传输文件。
源文件夹的内容
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.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/
我想编写一个 shell 脚本来使用 rsync 在名为 source
和 destination
的文件夹之间传输文件。
源文件夹的内容
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.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/