rsync:包含和排除

时间:2019-02-08 12:24:07

标签: linux rsync

假设采用以下结构,则需要对其进行同步:

pack('P')

现在,我想使用+和-来In-和排除InExCl.list中的内容: 可以正常工作,文件2.txt和2.txt〜显示在备份中,而1.txt不显示:

unpack('P')

对于子目录,我尝试了类似的操作(首先是加号,是减号),以便排除subDir1,但将A.html和subDir2包含在AA.html中,并将subDir2包含在B.txt中:

 /Data
   /subDir1
      A.html
      /subDir1a
         AA.html
   /subDir2
      B.html
   1.txt
   2.txt
   2.txt~

rsync -aAHSXrv --include-from=$InExCL $Source $Destination

结果:subDir2很好,subDi1显示为空,甚至没有提及subDir1a。

有人建议我,这怎么做对?谢谢。

2 个答案:

答案 0 :(得分:0)

我唯一想到的方法是将.rsync-filter文件放入 Data/subDir1/包含以下三行。

include /*/
exclude /*
exclude /.rsync-filter

第一个将包含此文件中的所有目录,而 第二个将排除所有内容。顺序很重要 因为应用了第一个匹配的规则。所以第一行确保 即使我们希望排除Data/subDir1/中的所有非目录文件,也会处理所有目录。

rsync 手册页包含所有详细信息。只需查找-filter ,然后 过滤器规则

Data
├── 1.txt
├── 2.txt
├── 3.txt
├── subDir1
│   ├── A.html
│   ├── .rsync-filter
│   └── subDir1a
│       └── AA.html
└── subDir2
    └── B.html

在命令rsync -rvt -F Data/ dest

之后

选项-F使 rsync 考虑 .rsync-filter 文件 出现在每个目录中。

目标如下所示。

dest
├── 1.txt
├── 2.txt
├── 3.txt
├── subDir1
│   └── subDir1a
│       └── AA.html
└── subDir2
    └── B.html

答案 1 :(得分:0)

谢谢钱德拉,

现在我发现了另一个似乎适用于目录的解决方案:

+ subDir1/subDir1a
- subDir1/*

关于子目录,您的结果(和期望的)已实现

├── subDir1
│   └── subDir1a
│       └── AA.html
└── subDir2
    └── B.html

你怎么看?