Tarを使用して特定のファイルのみが提供されたときに親フォルダの権限を維持する方法は?

Tarを使用して特定のファイルのみが提供されたときに親フォルダの権限を維持する方法は?

素晴らしい権限を持つフォルダがあるとしましょう。

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アーカイブに追加するには、defGNUを使用して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 -

おすすめ記事