强制tar压缩文件时忽略/跳过错误?

比方说,我做这个tar cfzp home.tar.gz /home (需要一段时间),在压缩过程中文件发生变化,tar失败,我得到“文件改变,因为我们读它”和焦油停止。 我认为home.tar.gz现在是不完整的,或只是“通知”,而不是一个真正的错误?

是否有某种“强制”选项使焦油完成工作,而不是错误的中止?

编辑/更新:我发现“–ignore-failed-read不能在非可读文件上以非零值退出”,至less我认为它正在工作。 但是需要注意参数的顺序,因为你最终可能会得到一个名为“–ignore-failed-read”的tar文件

我需要忽略其他吗?

更新:没有“–ignore-failed-read”tar会继续去如果一个文件已经被删除“文件删除之前,我们阅读”。 不过,我认为这可能是“文件改变,我们读它”错误,但我真的不知道。 很难比较存档与“原始”,因为我有caching文件来去等等

更新:仔细观察“文件改变,我们读它”更像是一个通知,看来如果文件更改而焦油正在做生意时焦油将继续前进。 但是,我会留下答案,也许更有经验的人可以添加更多的洞察力。

您的假设是正确的,“文件在我们读取时发生了变化”是一个通知,通常与正在使用的文件(即在创build过程中写入的文件)有关,而tar正在创build存档。 如果一致性是至关重要的,你最好是rsyncing其他地方的内容即

 rsync -avz /my/home/ /somebackupdir/my/home/ # initial sync, followed by rsync -avz /my/home/ /somebackupdir/my/home/ # any subsequent sync, repeated # as often as you feel necessary 

这给你一个备份位置的好处,只需要在创buildtarball之前更新差异。