tar命令权限

时间:2019-07-15 09:11:25

标签: linux tar

enter image description here

enter image description here

我对linux的“ tar”命令有一些问题。我想将config001.gz解压缩到一个目录(所有者拥有root,组root和777权限,如图所示)。

我的原始目录和目标目录如图所示。
我的问题是:

  • 为什么config001.gz文件中有一个空文件夹(我尝试将两个文件一起压缩,然后查看config002.tgz文件中没有空目录)?
  • 如果我在命令后不附加--no-overwrite-dir,则会引发错误,“ tar”要更改什么权限?
  • 为什么--no-overwrite-dir选项可以解决问题

我的安装信息: fuse.mfs rw,nosuid,nodev,relatime,user_id = 0,group_id = 0,allow_other 0 0

1 个答案:

答案 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_dirroot拥有,因此tar无法对其进行更改/触摸。

  

为什么--no-overwrite-dir选项可以解决此问题?

因为然后tar看到当前目录hpc_dir存在。因此,tar不会尝试创建目录,也不会尝试更改目录的所有者和组权限,也不会尝试恢复目录的创建日期。

您可以只使用mkdir somedir; tar xzfv archive.tar -C somedir-这样somedir将由当前用户创建,因此tar将能够更改其属性。

或者您可以只更改hpc_dir目录的所有者,让用户对其进行修改。