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

摘要:
所以,就想到了使用rsync的--delete参数来实现功能。$rsync-avzdirA/dirB/sendingincrementalfilelist./fileA1.txtfileA2.txtfileA3.txtsent199bytesreceived72bytes542.00bytes/sectotalsizeis0speedupis0.002)将dirA的所有文件同步到dirB内,并删除dirB内多余的文件$rsync-avz--deletedirA/dirB/sendingincrementalfilelist./deletingfileB3.txtdeletingfileB2.txtdeletingfileB1.txtfileA1.txtfileA2.txtfileA3.txtsent203bytesreceived72bytes550.00bytes/sectotalsizeis0speedupis0.003)将dirA的所有文件同步到dirB,但是在dirB内除了fileB3.txt这个文件不删之外,其他的都删除。$rsync-avz--exclude="fileA1.txt"--exclude="fileA2.txt"dirA/dirB/sendingincrementalfilelistfileA3.txtsent106bytesreceived31bytes274.00bytes/sectotalsizeis0speedupis0.005)将dirA目录内的fileA1.txt和fileA2.txt不同步到dirB目录内,并且在dirB目录内删除多余的文件。$rsync-avz--exclude="fileA1.txt"--exclude="fileA2.txt"--delete-excludeddirA/dirB/sendingincrementalfilelist./deletingfileB3.txtdeletingfileB2.txtdeletingfileB1.txtdeletingfileA2.txtdeletingfileA1.txtfileA3.txtsent109bytesreceived34bytes286.00bytes/sectotalsizeis0speedupis0.00这里可以看到只有fileA3.txt被同步到dirB目录内,同时dirB目录内的fileA1.txt和fileA2.txt两个被过滤的文件也被删除掉了。

最近在处理策划资源文件的时候需要将目录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两个被过滤的文件也被删除掉了。
这里分享一下学习经验,学一个东西不要总是很被动的去学习它有多少功能,要根据自己的实际应用场景来选择自己需要的功能。这样才能印象深刻。

http://www.linuxidc.com/Linux/2014-03/98835.htm

免责声明:文章转载自《使用rsync 的 --delete参数删除目标目录比源目录多余的文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jQuery模拟弹窗选择文件,以及ajax文件上传使用instruments工具调试性能下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

qtopia 文件系统启动过程分析

嵌入式学习入门http://blog.chinaunix.net/u3/117680/showart.php?id=2300212 虽然root_qtopia这个文件系统的GUI是基于Qtopia的,但其初始化启动过程却是由大部分由busybox完成,Qtopia(qpe)只是在启动的最后阶段被开启。 由于默认的内核命令行上有init=/linuxrc,...

linux每日命令(39):lsof命令

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系...

FreeMarker 在JAVA控制台应用(5)

建立一个普通的java项目:HelloFreeMarker 引入freemarker.jar包 在项目目录下建立模板目录:templates 在templates目录下,建立hello.ftl模板文件,模板内容如下:你好啊,${user},今天你的精神不错! 在src下新建com.kj.study.freemarker包,然后建立Hello.ja...

VSS的配置和使用

〇、摘要 在企业开发环境中,源代码管理占据着重要的一环。本文将通过一个实例,创建一个源代码管理的项目SourceManager,来讲述如何使用Visual Studio.Net开发环境,配合Visual Source Safe 6c和IIS,创建企业团队开发环境。 一、 开发前的准备 1、 在装有Windows 2000或者Windows XP Pro...

ssh免密码登录

二、实验需求: 为了服务器的安全,在服务器上禁止root用户通过SSH远程登录。 允许zhangsan用户在192.168.1.2客户机上通过SSH远程登录。 允许lisi用户在192.168.1.3客户机上通过SSH远程登录, 允许jerry用户在所有的客户机上通过SSH远程登录,并且是通过密钥对验证。 三、实验步骤: 1.实验的前提,就是配置i...

Linux fing cd 查找文件/文件夹并进入目录命令

查找文件|文件夹并进入目录命令:cd $()[root@localhost /]# cd $(dirname "`find / -name 'ifcfg-ens33'`") //查找ifcfg-ens33文件并进入该文件所在目录[root@localhost network-scripts]# [root@localhost /]# mkdir -p /...