お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2012-11-02 19:23:11

zion
メンバ
登録日: 2012-03-02

tar でのディレクトリパーミッション

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パーミッションも元通りに解凍できるのでしょうか。
よろしくご教授お願い致します。

オフライン

 

#2 2012-11-03 22:29:50

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: tar でのディレクトリパーミッション

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

オフライン

 

#3 2012-11-05 08:36:08

zion
メンバ
登録日: 2012-03-02

Re: tar でのディレクトリパーミッション

aaabbbcccdddeeefffggghhh様

ありがとうございます。
なるほど、testを指定してやればいいんですね。
すると、testディレクトリに他多数のファイル等がある場合は、
tarしたい部分を他のどこかにコピーしてやって、
そこから固めないといけないってことですね。。。
ひと手間多くなりますが、これでパーミッションを保持して保存できそうです。
わざわざテストまでして頂いてありがとうございました!
また何かありましたらよろしくお願い致します。

オフライン

 

#4 2012-11-05 19:34:00

aaabbbcccdddeeefffggghhh
メンバ
登録日: 2008-02-25

Re: 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

指定ファイル/フォルダのみを処理対象にする方法は見つけられませんでした。残念。

オフライン

 

Board footer

Powered by FluxBB