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





最近在处理策划资源文件的时候需要将目录A的文件全部同步到目录B的文件,并且把目录B内多余的文件全部删除掉。所以,就想到了使用rsync的--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两个被过滤的文件也被删除掉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值