我的目标是为名为 的文件夹创建增量 tar.gz 备份/data
。
为此,我想获取上次备份后修改过的文件列表。此时刻存储在名为的文件中lastran.txt
。
我使用以下命令来获取此列表:
find /data -newer lastran.txt -not -type d -print 0
我将这个命令的结果通过管道传输到一个xargs -0 tar
命令。
我的问题是,命令的结果find
包含一个或多个文件夹中的一组文件,我不想将其添加到存档中。
我尝试使用我调用的文件--except-from
的参数,该文件包含如下文件夹列表:tar
folder-exclusion.lst
/data/backups
/data/cloud
/data/system
但它似乎不起作用。
答案1
有多种选择,请选择一种:
查看
rdiff-backup
,你可能又在重新发明轮子了。find
首先告诉排除一些模式。-wholename
像这样使用:find /data -newer lastran.txt -not -type d -not -wholename "/data/backups/*" -not -wholename "/data/cloud/*" -not -wholename "/data/system/*" -print 0
取出原件
find
并过滤其输出:find /data -newer lastran.txt -not -type d -print 0 | grep -Ezv "^/data/backups/|^/data/cloud/|^/data/system/"
修复你的
folder-exclusion.lst
。我的经验tar
有限,我找不到有关该--except-from
选项的任何信息。如果你确定这是正确的选项,那么AFH 的评论也许是正确的:您的排除文件似乎应该是模式,这样每行
/*
末尾都应该有,例如/data/backups/*
,等等。