我正在使用rdiff-backup。真的很棒的简单强大的备份工具。但是我正在使用通配符的glob模式。我有这个目录结构:
/data/aaa/cache
/data/bbb/cache
/data/ccc/cache
etc....
在每个缓存目录中都有原始文件和缓存文件。原始文件的名称仅为1.jpg
,2.png
,3.gif
,依此类推。缓存文件的一些字符串附加到原始文件名。
所以我想备份所有/ data / * / cache目录,但只包含原始文件,而不是缓存文件。
我正在使用此命令:
rdiff-backup --exclude **/cache --include **/cache/+([0-9]).+([a-z]) /data /backup
但是rdiff-backup返回了这个并且我输了:
Found interrupted initial backup. Removing...
Fatal Error: Last selection expression:
Command-line include glob: **/cache/+([0-9]).+([a-z])
only specifies that files be included. Because the default is to
include all files, the expression is redundant. Exiting because this
probably isn't what you meant.
答案 0 :(得分:2)
您可能需要执行两个步骤:
通过这种方式,您可以避免使用glob选项进行战斗,并且可以完全控制您的排除
答案 1 :(得分:1)
来自http://rdiff-backup.nongnu.org/rdiff-backup.1.html:
A given file is excluded by the file selection system exactly
when the first matching file selection condition
specifies that the file be excluded; otherwise the file is included.
...
For instance,
rdiff-backup --include /usr --exclude /usr /usr /backup
is exactly the same as
rdiff-backup /usr /backup
because the include and exclude directives match exactly the same
files, and the --include comes first, giving it precedence.
因此,在您的情况下,它会抱怨最终--include
,因为如果文件到达那里(即它不与之前的--exclude
匹配),则无论是它不匹配--include
。这就是错误信息试图说的内容。
至于如何实现目标......
假设您确实要排除表单的仅路径:/data/*/cache/[0-9]*.[a-z][a-z][a-z]?*
,请指定:
rdiff-backup --exclude '/data/*/cache/[0-9]*.[a-z][a-z][a-z]?*' --exclude '*' /data /backup
这应该有用(我还没有测试过)。