Rsync,以便源目录和目标目录中的文件相同

人气:54 发布:2023-01-03 标签: rsync

问题描述

我正在尝试执行rysnc,这将导致目标目录中不在源目录中的文件被删除。因此,源目录和目标目录中的文件数量将相同。根据谷歌搜索和其他堆栈溢出查询,我尝试了以下命令:

rsync -avz -e -d  /home/web/dataprocess/testwind/*.dbf -d /home/web/newcheck/ --delete
虽然这确实在源目录中属于DBF文件的文件上进行了rsynch,但它并没有像人们所说的那样删除不存在于源目录中的无关的*.dbf文件。如何使用此命令删除目标目录中不在源目录中的额外*DBF文件?

推荐答案

这应该可以工作,并且还可以正确地创建子目录,复制.dbf(并删除不匹配的.dbf)

rsync -avz -e -d /home/web/dataprocess/testwind -d /home/web/newcheck/ --delete --filter="+ */" --filter="+ *.dbf" --filter="- *" 
每个文件都按顺序通过筛选器,因此筛选器的意思是"保留子目录,保留*.dbf,并忽略其他所有内容"。(如果更改筛选器参数的顺序,结果可能不正确。也不可能使用一个--Filter传递多个筛选器,因此该命令看起来有点多余。)

运行此程序时,如果目标中有一个目录不在源目录上,并且该目录至少包含一个不是.dbf的文件,则偶尔会看到警告消息"无法删除非空目录:某个目录"。可以安全地忽略此警告。

15