通过管道将 find 传输到 rsyncrypto

通过管道将 find 传输到 rsyncrypto

我正在设置 rsyncrypto 来创建我的用户目录的备份。我读到要排除目录,我需要使用 find 并管道到 rsyncrypto 来排除。

我正在尝试排除所有.svn 目录的加密和同步。

以下是我正在使用的 find 命令。我在输出中没有看到任何 .svn 目录:


查找〜/ Documents -type d(-name .svn)-prune -o -print


但是当我将输出传送到 rsyncrypto 时,我看到许多 .svn 目录被加密。


查找 ~/Documents -type d ( -name .svn ) -prune -o -print | rsyncrypto -vc --trim=3 --filelist - /tmp/Documents/ Documents.keys backup.crt


有人可以帮我重写命令以从 rsyncrypto 中排除路径中包含 .svn 的任何文件/文件夹吗?

答案1

您原来的 find 命令会打印除.svn目录下目录之外的所有目录,特别是它会打印~/Documents。 实验上,rsynccrypto 会递归到文件列表中所有现有目录,尽管(我想和您一样)我理解文档说它应该只递归到附加了 的目录中/

因此,您只需要打印非目录的文件。这意味着您必须限制-print-type f(仅备份常规文件)或! -type d(备份所有非目录,包括符号链接)。

find ~/Documents -type d \( -name .svn -o -name .DS_Store \) -prune \
              -o \! -type d -print

请注意,这不会备份目录或空目录的修改时间和所有权。这也包括空目录:

find ~/Documents -type d \( -name .svn -o -name .DS_Store \) -prune \
              -o \! -type d -print \
              -o -type d -empty -print

相关内容