我这里有一个 POSIX tar archive call Debian9.ova
。
有趣的是,在 MacOS High Sierra 中将其列出tar
,显示:
$ tar -tvf Debian9.ova
-rw-r--r-- 0 someone someone 5344 26 Feb 13:57 Debian9.ovf
-rw-r--r-- 0 someone someone 179 26 Feb 13:57 Debian9.mf
-rw-r--r-- 0 someone someone 2113245184 26 Feb 13:59 Debian9-disk1.vmdk
现在有趣的一点是,我没有someone
用户和组。
$ id someone
id: someone: no such user
用 列出它--numeric-owner
,它显示为uid
64,并且gid
64 显然不存在于我的系统中。
$ tar -tvf Debian9.ova --numeric-owner
-rw-r--r-- 0 64 64 5344 26 Feb 13:57 Debian9.ovf
-rw-r--r-- 0 64 64 179 26 Feb 13:57 Debian9.mf
-rw-r--r-- 0 64 64 2113245184 26 Feb 13:59 Debian9-disk1.vmdk
列出系统中的用户没有找到somebody
用户:
dscl . list /Users | grep someone
那么从哪里来呢someone
?tar
当它发现未知的uid
和时,它是一个“特征”吗gid
?
附言。在 Debian 中仅供比较:
$ tar -tvf a.tar
-rw-r--r-- 64/64 3212 2018-02-27 02:01 dead.letter
$ bsdtar -tvf a.tar
-rw-r--r-- 0 64 64 3212 Feb 27 02:01 dead.letter
答案1
我这里有一个 POSIX
tar
存档 [...]
在标准格式tar
存档中,每个文件的标头信息包含以下字段:两个都符号用户和组名和数字用户和组 ID。
正如您所看到的,tar
可以列出一组字段或另一组字段。
使用一致的pax
实用程序,人们应该能够完全列出这些字段:
$ pax -o listopt="%(uid)s %(gid)s %(uname)s %(gname)s %L\n" < Debian9.ova
然而,我认为pax
目前不存在符合标准的实用程序。