使用 tar 和 keep-old-files 选项进行错误处理

使用 tar 和 keep-old-files 选项进行错误处理

我正在使用该--keep-old-files选项解压 tar 文件,这样我就不会破坏已经存在的文件。令人烦恼的是,当文件已经存在时,这会导致 tar 产生错误代码 #2(致命错误)。

对我来说,这不应被视为错误很重要,因为我的脚本会记录文件成功解包的时间,然后使用此日志以免重新解包该 tar 文件。

我可以完全忽略这个错误,不记录,并相信不会覆盖任何文件,但这有两个问题:它会生成很多错误消息,并且文件很多,所以我打开一次 tar 效率很低对于每个文件。

有什么方法可以使用--keep-old-files,忽略现有文件生成的错误,而不忽略其他错误?

答案1

这显然是设计使然 - 从文档:

要更加谨慎并防止现有文件被替换,请使用--keep-old-files( -k) 选项。它会导致 tar 拒绝替换或更新已存在的文件,即与存档成员同名的文件会阻止提取该存档成员。相反,它会报告错误。

git 存储库确实包含修补引入了一个--skip-old-files参数,因此可以在未来的 GNU 版本中解决这个问题tar

+A new option --skip-old-files is introduced, which acts exactly as
+--keep-old-files, except that it does not treat existing files as
+errors.  Instead it just silently skips them.  An additional level of
+verbosity can be obtained by using the option --warning=existing-file
+together with this option.

该补丁尚未成为正式发布然而,不过。

相关内容