rsync:如何不递归地应用通配符排除

时间:2017-02-06 17:50:24

标签: matlab rsync

我使用rsync进行Matlab模型的本地备份(最终目标是自动备份我的关键博士文件的shell脚本)。

该模型具有多层文件夹,我想在顶层但不是较低级别排除一些通配符匹配。这可能吗?

示例文件结构:

/Model               % DO NOT WANT to sync *.mat files in this directory
/Model/Data/Greens   % WANT to sync *.mat files in this subdirectory

示例(简化)代码:

#!/bin/bash
rsync -a --exclude="*.mat" /Users/Me/MATLAB/Model /Volumes/KINGSTON/Backup

示例代码排除所有文件夹级别中的ALL * .mat文件。如何修复它只将'*.mat'通配符应用到顶层文件夹?

TL; DR:有没有办法递归地将rsync应用于所有子文件夹,但是只将通配符排除应用于顶级文件夹?

1 个答案:

答案 0 :(得分:3)

默认情况下,*.mat将匹配文件夹和所有子目录中的所有.mat文件。如果您只想忽略父目录中的.mat文件,可以将Model/前缀添加到exclude指令中,只忽略该文件夹中的.mat文件

rsync -a --exclude="Model/*.mat" /Users/Me/MATLAB/Model /Volumes/KINGSTON/Backup

或者,如果您想在Model/Data/Greens文件夹中包含.mat文件 ,则可以将--include选项与--exclude选项一起使用< / p>

rsync -a --include="Model/Data/Greens/*.mat" --exclude="*.mat" /Users/Me/MATLAB/Model /Volumes/KINGSTON/Backup