を使用してフォルダーを圧縮しながら権限を保持するにはどうすればよいですかzip
?
シンボリックリンクを保存する方法は知っていますが、--symlinks
権限に関しても同様のオプションがありますか?
答え1
info-zip(おそらくあなたが使用しているプログラム)は、権限を保存/復元することができます。ユニックスのようなシステム。
それは、ディレクトリの中にマニュアルページ:
保存されたディレクトリの日付、時刻、および権限は、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
ファイル/ディレクトリの UID/GID を設定するには、として実行する必要がありますroot
。通常のユーザーとして実行すると、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/スティッキー ビットも復元できます。