如何在使用压缩文件夹时保留权限zip
?
我知道如何使用--symlinks
是否有类似的权限选项来保留符号链接?
答案1
info-zip(您可能正在使用的程序)可以保存/恢复权限Unix类系统。
提到的是目录在里面手册页:
除 Unix 外,不会恢复存储目录的日期、时间和权限。 (在 Windows NT 和后续版本上,时间戳现已恢复。)
保存/恢复读/写/执行的文件权限。但快速检查显示(zip 3.0)setuid/setgid 权限未保留。
该功能不是可选的; zip/unzip 只要有能力就可以这样做。
在其他系统上,保存/恢复权限的功能不太完整。例如,在 Windows 上,ZIP 文件使用来自%temp%
文件夹。
进一步阅读:
答案2
Info-Zip 3.0 支持保留文件/目录 UNIX 权限和 UID/GID 所有权数据。zip
默认情况下存储它,但您需要unzip
以特殊方式使用来恢复它们:
unzip
必须与标志一起使用-X
。unzip
必须运行以root
设置文件/目录 UID/GID。如果您以普通用户身份运行它,则 UID 将始终是当前用户之一,并且仅当当前用户属于该组时才会恢复 GID。
例子:
# zip -v | head -2 | tail -1
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
# unzip -v | head -1
UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.
# touch file1
# mkdir dir1
# chmod 000 file1
# chown 1111 dir1
# ls -ld file1 dir1
drwxr-xr-x 2 1111 root 40 mar 28 20:12 dir1
---------- 1 root root 0 mar 28 20:12 file1
# zip files.zip file1 dir1
adding: file1 (stored 0%)
adding: dir1/ (stored 0%)
# unzip -X files.zip -d extracted
Archive: files.zip
extracting: extracted/file1
creating: extracted/dir1/
# ls -l extracted
total 0
drwxr-xr-x 2 1111 root 40 mar 28 20:12 dir1
---------- 1 root root 0 mar 28 20:12 file1
注意:您还可以unzip
与该-K
标志一起使用来恢复 SUID/SGID/Sticky 位。