我在对一组设置了 acl 权限的文件进行解皮时收到错误“未知文件类型 'A',提取为普通文件”。
我在 Solaris 中使用 .tar 文件创建了 tar 文件tar -cpfv Tarfilename.tar directory
。如果我用 解压tar xvpf Tarfilename.tar
,它在 Solaris 中运行得很好。我已将 tar 文件复制到 Linux 并尝试使用解压tar xvpf
,它会抛出警告“未知文件类型'A',提取为普通文件”并创建没有 ACL 权限的文件。
tar --version
在Linux中:tar (GNU tar) 1.15.1
答案1
Solaris 使用 NFSv4 ACL,而 Linux 使用 POSIX ACL。它们不直接兼容。
gnu-tar
正如您所指出的,虽然Linux(自然地)使用tar
.
根据 Solaristar(1)
手册页:
p
将指定文件恢复为其原始模式和 ACL(如果适用),忽略当前的 umask(1)。如果以超级用户身份调用并指定 x 函数字母,则这是默认行为。如果超级用户、SETUID 和粘性信息也被提取,并且文件将以其原始所有者和权限恢复,而不是由 root 拥有。当此函数修饰符与 c 函数一起使用时,将在 tar 文件中创建 ACL 以及其他信息。当使用以前版本的 tar 提取具有 ACL 的 tar 文件时,会发生错误。
gnu-tar
如果您使用该标志来保留权限,则应该在 Solaris 上使用-p
,并且 tar 将在 Linux 系统上提取。
如果您使用的是 Solaris 11,请安装gnu-tar
位于/usr/gnu/bin/tar
或中的软件包/usr/gnu/bin/gtar
。如果您使用的是 Solaris 11 之前的版本,则需要gnu-tar
从 Sun FreeWare 获取(可以在 Solaris Companion CD 上找到)。