使用rsync 的 --delete参数删除目标目录比源目录多余的文件

Rsync 的 --delete参数主要用于处理目标目录多余的文件。
--delete–exclude 参数主要用于删除接收端那些被该选项指定排除的文件
--excule 与--excule-from 参数主要用于排查源目录中除了哪个文件和目录之外,其他的文件都被同步到目标目录中去。
--delete-after 传输结束以后再删除。
我们要灵活应用此参数的功能,实现便利的操作 ,学会--excule和--delete配合使用。
创建示例如下:
# mkdir {dirA,dirB} //创建两个测试目录
//分别在两个目录创建相应的文件
# touch dirA/{fileA1.txt,fileA2.txt,fileA3.txt}
# touch dirB/{fileA1.txt,fileA2.txt,fileA3.txt,fileB1.txt,fileB2.txt,fileB3.txt}
1)将dirA的所有文件同步到dirB内,并保留文件的属主,属组,文件权限等信息。

rsync -avz dirA/ dirB/

sending incremental file list
./
fileA1.txt
fileA2.txt
fileA3.txt
sent 199 bytes received 72 bytes 542.00 bytes/sec
total size is 0 speedup is 0.00
2)将dirA的所有文件同步到dirB内,并删除dirB内多余的文件

rsync -avz –-delete dirA/ dirB/

sending incremental file list
./
deleting fileB3.txt
deleting fileB2.txt
deleting fileB1.txt
fileA1.txt
fileA2.txt
fileA3.txt
sent 203 bytes received 72 bytes 550.00 bytes/sec
total size is 0 speedup is 0.00
3)将dirA的所有文件同步到dirB,但是在dirB内除了fileB3.txt这个文件不删之外,其他的都删除。

rsync -avz –-delete–exclude “fileB3.txt” dirA/ dirB/

sending incremental file list
./
deleting fileB2.txt
deleting fileB1.txt
fileA1.txt
fileA2.txt
fileA3.txt
sent 203 bytes received 72 bytes 550.00 bytes/sec
total size is 0 speedup is 0.00
4)将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内。

rsync -avz –-exclude=”fileA1.txt” –-exclude=”fileA2.txt” dirA/ dirB/

sending incremental file list
fileA3.txt
sent 106 bytes received 31 bytes 274.00 bytes/sec
total size is 0 speedup is 0.00
5) 将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内,并且在dirB目录内删除多余的文件。

rsync -avz –-exclude=”fileA1.txt” –-exclude=”fileA2.txt” –-delete dirA/ dirB/

sending incremental file list
deleting fileB3.txt
deleting fileB2.txt
deleting fileB1.txt
fileA3.txt
sent 106 bytes received 31 bytes 274.00 bytes/sec
total size is 0 speedup is 0.00
6)将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内,并且在dirB目录内删除多余的文件,同时,如果dirB内有fileA2.txt和fileA1.txt这两个被排除同步的文件,仍然将其删除。

rsync -avz –-exclude=”fileA1.txt” –-exclude=”fileA2.txt” –-delete-excluded dirA/ dirB/

sending incremental file list
./
deleting fileB3.txt
deleting fileB2.txt
deleting fileB1.txt
deleting fileA2.txt
deleting fileA1.txt
fileA3.txt
sent 109 bytes received 34 bytes 286.00 bytes/sec
total size is 0 speedup is 0.00
这里可以看到只有fileA3.txt被同步到dirB目录内,同时dirB目录内的fileA1.txt和fileA2.txt两个被过滤的文件也被删除掉了。
这里分享一下学习经验,学一个东西不要总是很被动的去学习它有多少功能,要根据自己的实际应用场景来选择自己需要的功能。这样才能印象深刻。

Rsync 的详细介绍:点击这里

 

相关新闻

联系我们

全国服务热线

400-033-9553

电子邮件:admin@example.com
工作时间:09:00-17:00 周一至周五

在线客服
关注微信
关注微信
分享本页
返回顶部