![Rsync 在隐藏目录中包含特定子目录](https://linux22.com/image/191414/Rsync%20%E5%9C%A8%E9%9A%90%E8%97%8F%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E5%AD%90%E7%9B%AE%E5%BD%95.png)
我正在尝试使用 rsync 创建计算机的备份。为此,我想排除所有隐藏目录和文件,但包括这些隐藏目录的特定子目录。作为一个例子,我有以下结构:
.hidden_1/
sub_dir_1/
sub_file_1
sub_dir_2/
sub_file_2
.hidden_2/
sub_file_3
.hidden_file
normal_folder/
normal_file
这样,我想复制所有普通文件,并且仅复制 sub_dir_1 及其所有内容。结果应该是这样的:
.hidden_1/
sub_dir_1/
sub_file_1
normal_folder/
normal_file
我已经尝试过各种过滤器设置,到目前为止还没有成功。有人可以帮我从这里出去吗?
亲切的问候
瓦尔基里
答案1
rsync -avh --include='/.hidden_1/' --include='/.hidden_1/sub_dir_1/***' --exclude='/.**' src/ dest
--exclude='/.**'
排除与源目录相关的所有隐藏文件和目录以及这些目录中的所有内容,即 和.hidden_1/
,.hidden_1/sub_dir_1/
但不包括 例如normal_folder/.hiddenfoo
。匹配**
任何内容,包括斜杠。--include='/.hidden_1/'
包含.hidden_1
相对于源目录的目录,覆盖排除规则。它只包括目录本身,不包括其内容。--include='/.hidden_1/sub_dir_1/***'
包括目录.hidden_1/sub_dir_1/
及其内容。这相当于两个规则--include='/.hidden_1/sub_dir_1/'
和--include='/.hidden_1/sub_dir_1/**'
。