linux - rsync:上传后不要删除源中的几个文件
问题描述
我想编写一个 shell 脚本来使用rsyncsource
在名为和的文件夹之间传输文件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/
推荐阅读
- android - 错误:找不到 Google Analytics global_tracker 的符号变量 xml
- crystal-reports - 如何在每个日期中选择每个时间的第一个数据?关于水晶报告
- javascript - Javascript Prop 函数在 IE 11 中不起作用
- html - 元素之间的分界线,但第一项左对齐
- asp.net - ORA-00933: SQL 命令未正确结束 -
- android - assembleRelease 构建失败并出现异常
- flutter - 调用 notifyListeners() 时对话框状态未更新
- c# - 无法在 dataGridView 中将复选框标记为 true
- javascript - Nestjs 日志响应数据对象
- sql - 将许多不同表中的 ID 组合到单独表中的单个列中