从 tar 恢复到特定位置问题

从 tar 恢复到特定位置问题

我有一个tar文件,当我列出来自 的文件时tar,我可以看到它们如下:

-rw-rw-r-- root/ccs       3207 2017-02-15 18:43 HMS/PRE.UPG.APPROGS/AP.CLM.NEW
-rw-rw-r-- root/ccs        210 2017-02-15 18:43 HMS/PRE.UPG.APPROGS/AP.R.STUB_1
-rw-r--r-- ccs/ccs         128 2017-05-05 19:01 HMS/BP/_KI.TEST
-rw-rw-r-- ccs/ccs        2683 2017-05-05 19:01 HMS/BP/GET.TOKEN
and etc.

我希望恢复并覆盖所有文件和文件夹(包括子文件夹)/usr/CCS/HMS

但是当我运行下面的命令时:

tar xvfz /usr/CCS/backup/hms1_24jan2018.tar.gz -C / HMS*

/usr/CCS/HMS上述命令不是覆盖所有子文件夹,而是在根目录上恢复为/HMS.

我可以得到一些指导吗,我希望解压文件覆盖/usr/CCS/HMStar文件下的所有文件和文件夹。

答案1

在我看来你应该能够做到

tar xvzf /usr/CCS/backup/hms1_24jan2018.tar.gz -C /usr/CCS

或者,或者,

cd /usr/CCS
tar xvzf /usr/CCS/backup/hms1_24jan2018.tar.gz

当您使用 时-C /,文件将被解压到根目录中。由于存档中的路径以 开头HMS/,因此这将创建一个HMS在文件系统层次结构的根中调用的目录。

如果你想提取全部文件(根据您的问题),您不应该指定要提取的文件名(您HMS*在命令行上)。

/usr/CCS/HMS另请注意,未包含在存档中的现有文件将保留在原处(未修改)。tar不会仅仅因为它碰巧解压了目录中的一些文件而替换目录的全部内容。

答案2

它正在根目录中创建文件夹并覆盖它,就像您使用 -C / HMS* 一样。将其更改为 -C /usr/CCS/HMS。它将覆盖所需的目录

相关内容