我对linux的“ tar”命令有一些问题。我想将config001.gz解压缩到一个目录(所有者拥有root,组root和777权限,如图所示)。
我的原始目录和目标目录如图所示。
我的问题是:
我的安装信息: fuse.mfs rw,nosuid,nodev,relatime,user_id = 0,group_id = 0,allow_other 0 0
答案 0 :(得分:1)
为什么config001.tgz文件中没有空文件夹?
tar存档中包含“根文件夹”。 tar所在的文件夹。其中包括特权,所有者和组,权限以及创建/修改(或者,我不确定其中之一)的日期。您可以使用以下方式创建此类归档文件:
mkdir -p /tmp/a
cd /tmp/a
echo 123 > 1
echo 234 > 2
tar cfvp /tmp/test.tar .
# and inspect with:
tar -tvf ./test.tar
drwxr-xr-x kamil/kamil 0 2019-07-15 12:50 ./
-rw-r--r-- kamil/kamil 4 2019-07-15 12:50 ./2
-rw-r--r-- kamil/kamil 4 2019-07-15 12:50 ./1
通过指定.
,即当前目录,有关当前目录本身的信息将包含在tar
中。就是有关所有者和组,权限和日期的信息。
如果我在命令后不附加--no-overwrite-dir,则会引发错误,“ tar”要更改什么权限?
tar
要更改您所在目录的权限。 hpc_dir
目录。 hpc_dir
由root
拥有,因此tar
无法对其进行更改/触摸。
为什么--no-overwrite-dir选项可以解决此问题?
因为然后tar
看到当前目录hpc_dir
存在。因此,tar
不会尝试创建目录,也不会尝试更改目录的所有者和组权限,也不会尝试恢复目录的创建日期。
您可以只使用mkdir somedir; tar xzfv archive.tar -C somedir
-这样somedir
将由当前用户创建,因此tar
将能够更改其属性。
或者您可以只更改hpc_dir
目录的所有者,让用户对其进行修改。