tar -xvf 是否会从目录中删除现有文件?

tar -xvf 是否会从目录中删除现有文件?

我有一个 tar 存档,我想使用tar -xvf
在这个 tar 存档中,我有一个包含几个文件的目录树。在我的 solaris 10 系统上,这个目录树已经存在,并且里面有几个文件。
如果我解压存档,整个目录树会被覆盖吗?还是只有存档中包含的文件会被覆盖?
存档中没有对应文件的文件会被删除吗?

答案1

根据您的系统,可能会或可能不会解压并覆盖已存在的重复文件。但是,默认情况下通常会这样做。存档中但不在您的系统中的文件将简单地添加到系统上的新目录或现有目录中。

目录/test

/1/a
c

档案test.tar

/1/b
d

可能会合并到:

/1/a
/1/b
c
d

在 tar 命令中添加-k标志将确保目标目录上的任何文件都不会被覆盖:

tar -xvkf test.tar

答案2

最简单的方法是创建一个新的空目录,然后进入该目录并提取其中的文件。不过,您需要注意提取的文件是相对的(以 ./ 开头),而不是绝对的(以 / 开头)。如果您不知道,可以通过 less 管道传输目录以查看是哪种情况(tar -tvf tar_filename | less)

您可以通过查看手册页来了解您的 tar 版本是否默认覆盖。Tar 不会在提取过程中删除文件,这也是人们通常在提取之前从新的空目录开始的另一个原因。

相关内容