我使用Perl的档案::焦油模块。它保留了文件的权限,但不保留粘着位。在另一端,我解压压缩包,所有的固着位都没有了。我认为UNIX / LINUX操作系统存储这些粘位别处。我怎样才能让我的档案保存粘位也?

使用-p开关焦油保留它,但它使用怎么办存档::焦油?我使用使两侧Perl的模块。

有帮助吗?

解决方案

根据该精细源,存档::焦油::文件剥掉来自模式高位。 您可以在脚本的开始试试下面的魔法咒语(任何东西之前 可能引用档案::焦油),看看是否颠覆它:

use Archive::Tar::Constant ();
BEGIN {
    local $SIG{__WARN__} = sub{};
    *Archive::Tar::Constant::STRIP_MODE = sub(){ sub {shift} };
}
...
use Archive::Tar;
...

简要说明:STRIP_MODE是包含可传递原始模式,并返回应当被存储的模式的子程序的常数。它通常被设置为

sub { shift() & 0777 }

由于它是一个常数,从存档::焦油::进口恒成存档::焦油::文件和使用存在,无论它被设置为将被内联到存档::焦油::文件,因为它被编译。因此,要改变它,不断必须改变它内联之前,也就是档案::焦油::文件曾经被加载之前。

N.B。因为改变可以内联常数是容易出错(改变之后也来不及产生任何影响)时,它通常产生不能由通常的方法来禁用一个严重的警告。

其他提示

不知道,但在官方的tar命令,你需要传递的 -p 的做到这一点。

您可能想看看档案::焦油文档了解详细情况。从一个简短的一瞥,似乎

$Archive::Tar::CHMOD = 1;

应该做你想要什么,尽管文件称,上面的设置是默认的。这可能是归档::焦油剥掉高阶模式位像粘滞位。

时都创建并与存档::焦油萃取,或者您使用的标准程序焦油在一端或其他?

的存档
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top