rsync:如何不递归地应用通配符排除
rsync: How to NOT apply wildcard excludes recursively
我正在使用 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
示例代码排除了所有文件夹级别中的所有 *.mat 文件。如何修复它以仅将 '*.mat'
通配符应用于顶级文件夹?
TL;DR:有没有一种方法可以递归地将 rsync 应用于所有子文件夹,但只将通配符排除应用于顶级文件夹?
默认情况下,*.mat
将匹配您文件夹中的所有 .mat 文件和所有 sub-directories。如果您只想忽略父目录中的 .mat 文件,可以将 Model/
前缀添加到 exclude
指令以仅忽略该文件夹中的 .mat 文件
rsync -a --exclude="Model/*.mat" /Users/Me/MATLAB/Model /Volumes/KINGSTON/Backup
或者,如果您想在 Model/Data/Greens
文件夹中 只包含 .mat 文件,您可以将 --include
选项与 --exclude
选项
rsync -a --include="Model/Data/Greens/*.mat" --exclude="*.mat" /Users/Me/MATLAB/Model /Volumes/KINGSTON/Backup
我正在使用 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
示例代码排除了所有文件夹级别中的所有 *.mat 文件。如何修复它以仅将 '*.mat'
通配符应用于顶级文件夹?
TL;DR:有没有一种方法可以递归地将 rsync 应用于所有子文件夹,但只将通配符排除应用于顶级文件夹?
默认情况下,*.mat
将匹配您文件夹中的所有 .mat 文件和所有 sub-directories。如果您只想忽略父目录中的 .mat 文件,可以将 Model/
前缀添加到 exclude
指令以仅忽略该文件夹中的 .mat 文件
rsync -a --exclude="Model/*.mat" /Users/Me/MATLAB/Model /Volumes/KINGSTON/Backup
或者,如果您想在 Model/Data/Greens
文件夹中 只包含 .mat 文件,您可以将 --include
选项与 --exclude
选项
rsync -a --include="Model/Data/Greens/*.mat" --exclude="*.mat" /Users/Me/MATLAB/Model /Volumes/KINGSTON/Backup