如何列出在给定日期之后修改过且不在文件夹列表中的文件

如何列出在给定日期之后修改过且不在文件夹列表中的文件

我的目标是为名为 的文件夹创建增量 tar.gz 备份/data

为此,我想获取上次备份后修改过的文件列表。此时刻存储在名为的文件中lastran.txt

我使用以下命令来获取此列表:

find /data -newer lastran.txt -not -type d -print 0

我将这个命令的结果通过管道传输到一个xargs -0 tar命令。

我的问题是,命令的结果find包含一个或多个文件夹中的一组文件,我不想将其添加到存档中。

我尝试使用我调用的文件--except-from的参数,该文件包含如下文件夹列表:tarfolder-exclusion.lst

/data/backups
/data/cloud
/data/system

但它似乎不起作用。

答案1

有多种选择,请选择一种:

  1. 查看rdiff-backup,你可能又在重新发明轮子了。

  2. find首先告诉排除一些模式。-wholename像这样使用:

    find /data -newer lastran.txt -not -type d -not -wholename "/data/backups/*" -not -wholename "/data/cloud/*" -not -wholename "/data/system/*" -print 0
    
  3. 取出原件find并过滤其输出:

    find /data -newer lastran.txt -not -type d -print 0 | grep -Ezv "^/data/backups/|^/data/cloud/|^/data/system/"
    
  4. 修复你的folder-exclusion.lst。我的经验tar有限,我找不到有关该--except-from选项的任何信息。如果你确定这是正确的选项,那么AFH 的评论也许是正确的:

    您的排除文件似乎应该是模式,这样每行/*末尾都应该有,例如/data/backups/*,等等。

相关内容