我试图在压缩它们之后保持某些文件权限但是,我注意到文件权限不会被保留。无论我做什么,解压缩文件的文件权限总是rw-r - r--。
我尝试了以下事项:
在我的bash_profile中将umask设置为0027,但是,默认情况下,我注意到新创建的zip文件为“0022”的文件创建了权限,即rw-r - r - 。
我尝试使用模式777设置AsiExtraField并将其附加到ZipArchiveEntry,但是,它似乎不会影响权限。
ZipArchiveEntry entry = new ZipArchieveEntry(filename); AsiExtrafield temp = new AsiExtraField(); temp.setMode(777); entry.addAsFirstExtraField(温度); zipoutputstream.putNextEntry(条目);
ZipEntry entry = new ZipEntry(filename); entry.setUnixMode(777); zipoutputstream.putNextEntry(entry);
Runtime.getRuntime.exec("chmod 777" + file.getCanonicalPath()): ZipEntry entry = new ZipEntry(filename); zipoutputstream.putNextEntry(entry);
非常感谢!
答案 0 :(得分:2)
ZIP格式可以将unix权限存储在"外部属性" ZIP标题内的字段。
顺便说一下,我已经使用maven-assembly-plugin在汇编描述符中使用<fileMode>0755</fileMode>
创建了ZIP文件。
要以编程方式从Java中提取存档,同时保留权限,还有一个名为commons-compress jarchivelib的好包装器,它支持多种格式,包括ZIP,tar.gz。它提取正确保留UNIX权限。
答案 1 :(得分:0)
看起来您需要尝试不同的存档格式。也许是tar --preserve-permissions
。
另一个选项是单独保存权限并在解压缩时重新应用它们。您可以将.saved_permissions
文件添加到存档中。有一些脚本示例可以在StackOverflow上执行此操作。