はじめに
久しぶりのよく分からんコマンド調べてみようシリーズ。
今回は /bin/pax
について。
/bin/pax
名前から推測するに、なんとなくパッキングしてくれそうな雰囲気を感じる。 ただ全く使ったことないし使ってる人見たことない、一体こいつは何者だ。
ということで man pax
したときの DESCRIPTION の内容はこちら。
pax will read, write, and list the members of an archive file and will copy directory hierarchies.
pax は圧縮ファイルの読み書きや一覧、ディレクトリ構造のコピーをするらしい。
tar とか zip みたいに圧縮解凍ができるコマンドという認識でいいのかねこれは?と思って調べてみると微妙に違うっぽい。 tar とか zip は圧縮ファイルに対する操作で、 pax はアーカイブファイルに対する操作ができるのかも。 圧縮ファイルとアーカイブファイルについての違いは以下を参照してくれ。
/bin/pax 実行してみる
以下のサイトで色々試されている。
基本的な構文は以下の通り。
# ファイルをアーカイブする $ pax -w 入力元 # アーカイブされたファイルを展開する $ pax -r 入力元
なるほどそんなに難しくなさそう。 以下のファイルがある状態でアーカイブと展開をそれぞれやってみる。
$ ls -1 fuga.txt hoge.txt piyo.txt
ファイルをアーカイブする
まずはアーカイブから。
$ pax -w * fuga.txt0000644 0000765 0000024 00000000017 13644250623 0013557 0ustar00kkznchstaff0000000 0000000 fuga fuga fuga hoge.txt0000644 0000765 0000024 00000000017 13644250612 0013555 0ustar00kkznchstaff0000000 0000000 hoge hoge hoge piyo.txt0000644 0000765 0000024 00000000017 13644250631 0013614 0ustar00kkznchstaff0000000 0000000 piyo piyo piyo
なんか出力された。 ファイルの内容とかメタ情報っぽいのが出力されているっぽい。
ちなみに標準出力に出力されているだけなので、上記のコマンドだとアーカイブファイルは作成されない。 アーカイブファイルを作成したい場合はリダイレクトさせる。
$ pax -w * > archive $ ls -1 archive fuga.txt hoge.txt piyo.txt
標準出力には何も出力されず、archive というファイルが新たに作成される。
アーカイブされたファイルを展開する
では次にアーカイブしたファイルを展開してみよう。 展開時にフォルダを指定して展開することは可能らしいが、ちょっと面倒なので別のフォルダを作成して archive を移動し、そこで展開する。
$ mkdir test $ mv archive test
この状態で展開用のコマンドを実行する。
$ pax -r < archive
ここで ls を実行すると、アーカイブされていたファイルが展開でできていることが確認できる。
$ ls -1 archive fuga.txt hoge.txt piyo.txt
展開できているっぽい。
ちなみに pax で作ったアーカイブファイルのファイルサイズは 10KB で、zip で圧縮した場合のファイルサイズは 481B だった。 こんなに違うのか、アーカイブファイルの使いみちが最早よく分からん。