素晴らしい権限を持つフォルダがあるとしましょう。
mkdir abc
mkdir abc/def
chmod 777 abc
今バックアップを作成したいと思います。
tar -cpzvf test.tar.gz abc/def/
それでは、abc /を削除してアーカイブから復元してみましょう。
rm -rf abc/
tar -xpzvf test.tar.gz
abc/
もはや元の権限がありません。
find abc -printf "%m:%f\n"
755:abc
abc/(abc/def/の代わりに)をパラメータとして指定してtarファイルを作成すると、両方のフォルダの権限がうまく復元されることがわかります。しかし、私の場合は、abc / def /をパラメータとして明示的に指定する必要があります。同じ結果を得る方法はありますか?
答え1
@schilyの良い答えにフォローアップするには、それ以外のサブディレクトリを追加せずに最上位ディレクトリをabc
アーカイブに追加するには、def
GNUを使用してtar
次のようにします。
tar -zcf file.tgz --no-recursion abc --recursion abc/def
libarchiveを使用するbsdtar
か、いつでも必要なファイルの正確なリストの生成pax
に戻すことができます。find
(printf 'abc\0'; find abc/def -print0) | bsdtar -zcnf file.tgz --null -T -
答え2
umaskが適用されました。努力する:
マスク000; tar -xpzvf test.tar.gz
答え3
問題は、ディレクトリがabc
アーカイブにないため、アーカイブから復元できないことです。
必須ですが欠落しているため、tar
資格情報に基づいてデフォルトの権限を使用して作成してください。
権限も復元するには、その権限をabc
アーカイブに入れる必要があります。