
Ubuntu日本語フォーラム

ログインしていません。
tarでのパーミッションについて教えてください。
例えば、ディレクトリ構成が、
Documents>test>abc>111.zip
となっているとして、
testのパーミッションが700、abcが755だとします。
オーナーは全て自分です。
そしてカレントディレクトリをDocumentsにして、
tar czvf test.tar.gz test/abc/
としたとします。
それで、解凍する時には、
tar xzvfp test.tar.gz
とすると、
test>abc>111.zip
のディレクトリが解凍されるのですが、
testのパーミッションが775になってしまい、元のパーミッションに戻りません。
この775と言うパーミッションになぜなるのか(検索した所755とかになるって書いてあるところもあり)わかりません。
abcのパーミッションは755となり(これはどんなパーミッションにしても)元に戻りました。
どのようにすればtestパーミッションも元通りに解凍できるのでしょうか。
よろしくご教授お願い致します。
オフライン
zion による投稿:
どのようにすればtestパーミッションも元通りに解凍できるのでしょうか。
圧縮ファイルを作る時の引数を test/abc/ ではなくて test にすればOKです。
Ubuntu 12.10では以下の方法で、testのパーミッションを保持したまま展開できました。
mkdir -p test/abc
touch test/abc/111.zip
chmod 700 test/ test/abc/
chmod 600 test/abc/111.zip
tar czvf test.tar.gz test
rm -rf test
tar xzvf test.tar.gz
ls -ld test
drwx------ 3 testuser testuser 4096 11月 3 22:00 test
ls -ld test/abc
drwx------ 2 testuser testuser 4096 11月 3 22:00 test/abc
ls -l test/abc/111.zip
-rw------- 1 testuser testuser 0 11月 3 22:00 test/abc/111.zip
オフライン
aaabbbcccdddeeefffggghhh様
ありがとうございます。
なるほど、testを指定してやればいいんですね。
すると、testディレクトリに他多数のファイル等がある場合は、
tarしたい部分を他のどこかにコピーしてやって、
そこから固めないといけないってことですね。。。
ひと手間多くなりますが、これでパーミッションを保持して保存できそうです。
わざわざテストまでして頂いてありがとうございました!
また何かありましたらよろしくお願い致します。
オフライン
zion による投稿:
すると、testディレクトリに他多数のファイル等がある場合は、
tarしたい部分を他のどこかにコピーしてやって、
そこから固めないといけないってことですね。。。
調べてみたところ、どうやら--excludeオプションや-Xオプション、ワイルドカードなどを使用すれば出来るようです。
tarコマンドで指定ファイルや指定ディレクトリを処理対象外にする方法
http://freebsd.g.hatena.ne.jp/py4s-tnk/20071116/1195162410
tar で特定のファイル/ディレクトリ除外する方法
http://tipspc.blogspot.jp/2009/07/tar.html
指定ファイル/フォルダのみを処理対象にする方法は見つけられませんでした。残念。
オフライン