我使用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应用于所有子文件夹,但是只将通配符排除应用于顶级文件夹?
答案 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