从 tar 文件中提取 - 默认行为:覆盖还是保留?

Ame*_*ina 15 bash

文档中,我读到tar从 tarball 中提取文件时有以下选项:

-k, --keep-old-files
           don't replace existing files when extracting
--overwrite
           overwrite existing files when extracting
Run Code Online (Sandbox Code Playgroud)

默认使用哪一个?

qbi*_*qbi 17

你可以自己试试:

echo 1 > 1
echo 2 > 2
tar cf foo.tar 1 2
echo 3 > 1
echo 4 > 2
tar xf foo.tar
cat ?
1
2
Run Code Online (Sandbox Code Playgroud)

创建了前两个文件(12)。比foo.tar创建了一个存档。下一步更改文件内容,foo.tar然后提取。如果您查看文件,您将看到旧内容。

--overwrite默认也是如此。

  • 默认为:--overwrite-dir 提取时覆盖现有目录的元数据(默认) (4认同)
  • 以及对行为的解释:http://www.gnu.org/software/tar/manual/html_node/Dealing-with-Old-Files.html (2认同)