从具有重复条目名称的tar文件中提取

Joh*_*ohn 5 bash tar

如果多次将同一文件添加到tar文件中,然后提取该文件,是否可以保证提取的版本与上次添加的版本相同?

~/tmp> echo hi > foo
~/tmp> tar -cf bar.tar foo
~/tmp> echo bye > foo
~/tmp> tar -uf bar.tar foo 
~/tmp> tar -tf bar.tar
foo
foo
~/tmp> rm foo
~/tmp> tar -xf bar.tar foo
~/tmp> cat foo
bye
Run Code Online (Sandbox Code Playgroud)

它会有意义,但我找不到任何相关的文档.我想知道知道的人是否知道,或者是否有人知道这不是真的情况?

mik*_*n32 4

tar 的一些文档是这样说的:

当您从存档中提取文件时,只有最后存储的版本才会出现在文件系统中。因为“--extract”(“-x”)按顺序从存档中提取文件,并覆盖文件系统中同名的文件,所以如果文件名在存档中出现多次,则该文件的最后一个版本将被删除。覆盖刚刚提取的先前版本。您应该避免稍后在存档中存储文件的旧版本。

我的理解是,除非您使用该--keep-old-files选项,-x否则总是会用存档中存储的最后一个文件覆盖。

编辑:另请参阅的 GNU 文档tar

  • 另请参阅手册的 [tar 选项](https://www.gnu.org/software/tar/manual/tar.html#SEC42) 部分中的 `--occurrence`。 (2认同)