我正在使用该--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.
该补丁尚未成为正式发布然而,不过。