それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

tar から一部のファイル・指定ファイル名だけ、標準出力(stdout)へ、など各種指定してきれいに取出す方法。

tar ball を渡されて困る。

毎回毎回展開するのダルいんだよ。欲しいファイルや見たいファイルは一つだけ、もしくは複数ファイルだったりする

tar tvzf で中身を見る

tar で中身を見るには tvf ・ tvzf を使う z は gzip

tar tvzf test.tgz
drwxr-xr-x takuya/staff      0 2016-07-25 19:59 テスト/
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト1
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト2
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト3
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト4
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト5
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト6
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト7
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト8
-rw-r--r-- takuya/staff      0 2016-07-25 19:59 テスト/テスト9

指定したファイルを取出す

tar  x -f test.tgz 'テスト/テスト1' 

この方法で取出すことが一般的であると思う。でも、この方法ではファイルだけでなく、フォルダ構造も再現さしてくれる。ファイルだけ中身を見たい時にちょっと不便だと思う。

指定したファイルを取出す。標準出力へ。

指定したファイルを取出す。

tar  x -f test.tgz 'テスト/テスト1'  -O

tar には -O というオプションが合って、コレを使えば、指定したファイルを標準出力に取り出すことが出来る。マジか便利だ。

指定したファイルに取出す

ディレクトリ構造を作られるのがめんどうなので、標準出力をリダイレクトすることで、指定したファイルに取出すことが出来る。

tar  x -f test.tgz 'テスト/テスト1.jpg'  -O out.jpg

これで、tar ファイルの取扱が数段楽ちんになる。

ファイルの中身をみて、その結果をパパッ取り出せるなら、イチイチ展開してcd てたどっていくの面倒だし、作業用ディレクトリを作るの面倒なんだよね。

指定したフォルダへ展開

最初にフォルダを作るのが必須

mkdir 04-25
tar xf  etc-2023-04-25.tgz  -C 04-25

指定したファイルを指定したフォルダへ( オプション -C 版)

-C を使った場合の例

mkdir 04-25
tar xf  etc-2023-04-25.tgz /etc/pam.d/common-auth  -C 04-25

これで動くはずなんだが。ディレクトリの場合はなぜか動かない。

寸感

参考資料にあるように GNU tar での動作を確認しています。

私は、GPL信者なのでGNU tarを利用しているので、コレで動かすことが出来ました。

BSDのtar のman を見ても出来るようなので、大丈夫でしょう

っていうか tar ってgnu tar 以外にあるんだろうか。。。

参考資料

https://www.gnu.org/software/tar/manual/html_node/Writing-to-Standard-Output.html

http://www.freebsd.org/cgi/man.cgi?tar(1)