通过rsync排除/ Library / but / Library / Mail中的所有内容

时间:2015-07-21 00:51:42

标签: macos bash shell scripting rsync

我有一个rsync脚本,使用以下代码行备份用户的主文件夹:

/usr/bin/caffeinate -i /usr/bin/rsync -rlptDn --human-readable --progress --ignore-existing --update $PATH/$NAME/ --exclude=".*" --exclude="Public" --exclude="Library" /Volumes/Backup/Users/$NAME\ -\ $DATE

如何忽略~/Library/中的所有内容,而忽略~/Library/Mail/?我希望包含此rsync标记--include="/Library/Mail",但我不确定是否应过分依赖rsync排除&包含因为它可能变得不可靠并且在不同版本的OS X rsync之间变化。

也许命令行正则表达式工具会更有用?示例:

ls -d1 ~/Library/*| grep -v '^mail' > $ALIST
exec <${ALIST}
read SRC
do
.
.
.
$RSYNC..etc...

1 个答案:

答案 0 :(得分:0)

rsync的--include--exclude选项遵循所谓的&#34;优先级&#34;所以你可以依赖一个坚定的规则,这意味着你在排除之前明确包含的内容将是发送的内容。

在您的情况下,在第一个--include ~/Library/Mail之前添加--exclude