![tar 增量选项不添加新文件](https://linux22.com/image/1396929/tar%20%E5%A2%9E%E9%87%8F%E9%80%89%E9%A1%B9%E4%B8%8D%E6%B7%BB%E5%8A%A0%E6%96%B0%E6%96%87%E4%BB%B6.png)
在增量备份中,tar
似乎无法添加新文件:
$ tar -cvzf test.tar.gz -g test.snar a.txt
a.txt
$ tar -cvzf test2.tar.gz -g test.snar a.txt b.txt
第二条命令没有返回任何内容,存档为空。但是,如果我指定目录而不是文件,它就可以工作。这里我遗漏了什么吗?
答案1
第一个 tar命令包含快照文件a.txt
。第二个 tar 命令中,快照不知道b.txt
。a.txt
没有更改,因此增量存档为空。
如果增量存档位于目录级别,它将检测到更改(b.txt),因为 b.txt 存在于目录的层次结构中。
如果快照文件存在,它确定哪些文件被修改了。
选项“--listed-incremental”指示 tar 对增量存档进行操作,并将附加元数据存储在独立文件(称为快照文件)中。此文件的目的是帮助确定自上次备份以来哪些文件已被更改、添加或删除,以便下一次增量备份将仅包含已修改的文件。快照文件的名称作为选项的参数给出:
答案2
您是否考虑过使用 tar 的“–listed-incremental”选项?它将允许您逐步添加特定文件夹,并有助于确保您仅压缩自上次使用 --list-incremental 选项将其添加到 tar 以来发生更改的文件。
更通用的选项是简单地使用 -a 或 append 选项来附加新文件,将文件放在存档的末尾。
如果这是备份情况,我建议您将 rsync 视为功能更丰富的选项,但同样,这完全取决于您尝试使用备份程序执行的操作。