gpt4 book ai didi

linux - rsync:包含和排除

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:10 26 4
gpt4 key购买 nike

假设以下结构,需要进行 rsync:

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

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

现在我想使用 + 和 - 在 InExCl.list 中添加和排除内容:这工作正常,文件 2.txt 和 2.txt~ 显示在备份中,1.txt 没有:

+ 2.*
- *.txt

对于子目录,我尝试了类似的操作(首先是加号,然后是减号),以便排除 subDir1,但包含带有 AA.html 的 subDir1a 和带有 B.txt 的 subDir2:

+ subDir1a/*
- subDir1/*

结果:subDir2 正常,subDi1 显示为空,甚至没有提到 subDir1a。

有人给我建议,如何正确完成此操作?谢谢。

最佳答案

我能想到的唯一方法是将 .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

关于linux - rsync:包含和排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54592421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com