#topicpath /////////////////////////////////////////////////////////////////////////////// * 目次 [#n249582f] #contents(); /////////////////////////////////////////////////////////////////////////////// * ZIP [#h5fb2e12] ** 圧縮 [#pfdac5dc] $ zip out.zip target-file $ zip -r out.zip target-dir ** 暗号化圧縮 [#a556e192] $ zip -e target -P - 実行すると、解凍用のパスワードの入力を求められる。 - "-r" を付ければディレクトリを圧縮出来る。 ** 解凍 [#d090228c] $ unzip target.zip /////////////////////////////////////////////////////////////////////////////// * tar + bzip2 [#p406c7dc] ** 圧縮 [#jef1708f] $ tar -cvjf out.tar.bz2 target ** 解凍 [#se9f54e1] $ tar -xvjf target.tar.bz2 /////////////////////////////////////////////////////////////////////////////// * tar + xz [#x78dca3d] - Debian 6.x のtarは xzをサポートしているが、CentOS6.x では未サポート。 ** 圧縮 [#v697447f] $ tar -cvJf out.tar.xz target ** 解凍 [#wa78794b] $ tar -xvJf target.tar.xz - xz単体の解凍には、zip のように unxz コマンドも使えるし、 bzip2 のように "xz -d" も使える。 /////////////////////////////////////////////////////////////////////////////// * 高速圧縮 [#r721301e] - Cpu の Core を全て使って圧縮する //============================================================================= ** tar + pbzip2 [#ea0120fc] $ tar -cvf out.tar.bz2 -Ipbzip2 in-file または $ tar -cvf out.tar.bz2 --use-compress-program pbzip2 in-file - どれくらい差が出るか? |~CPU |>|>|>|Core i7-3520M (4-Core) | |~target |>|>|>|linux-2.6.32.65 (439MB)| |~tar + pbzip2 |~elapsed time |17.510 [sec] |~size |68824777 | |~tar + bzip2 |~elapsed time |38.542 [sec] |~size |68701378 | //============================================================================= ** tar + pigz [#ke1736a1] $ tar -cvf out.tar.gz -Ipigz in-file または $ tar -cvf out.tar.gz --use-compress-program pigz in-file /////////////////////////////////////////////////////////////////////////////// * cpio [#cpio] - cpio には色々機能があるが、ここでは tar からの置き換えを前提に記述する //============================================================================= ** 特徴 [#rc344691] *** 使用方法 [#ib3fed59] - 指定されたファイルを tar のように1個のファイルに纏める。 -- 入力ファイルは全て標準入力から渡さなければならない。つまり、 tar ではディレクトリを指定したらその配下のファイルが全て対象になったが、cpio の場合は個別にファイルを指定しなければならない。 --- 逆に考えれば、特定のパターンの名前を持ったファイルを個別に除外できる、という事でもある。 *** cpio と tar [#qe559b58] - tar は管理情報をアーカイヴの先頭にまとめて記述しており、そこが破損すると全てのファイルが復元不可能になる。 - cpio は、アーカイヴの中でファイル毎に管理情報を記録しており、アーカイヴの一部が破損しても、影響範囲はその破損部位に関係のあるファイルのみで済む。 //============================================================================= ** 使い方 [#p495902f] //----------------------------------------------------------------------------- *** cpio.xz を作成する [#ga3ac83f] $ find -print <target-dir> | cpio -o | xz > archive-name.cpio.xz //----------------------------------------------------------------------------- *** <target-file>.cpio.xz を解凍する [#n2615d92] $ xz -dc <target-file>.cpio.xz | cpio -i - xz, pbzpi2, bzip2, gzip 共に、 "-c" で解凍結果を標準出力に出力する。 - (p)bzip2 で元ファイルを勝手に削除させたくない場合は、 "-k" を追加指定する *** <target-file>.cpio の中身を閲覧する [#wf181ce6] - tar -tvf のように、内包するファイルのリストを表示させる $ cpio -it < <target-file>.cpio //----------------------------------------------------------------------------- *** cpio で POSIX.1 tar format を取り扱う [#c41a8805] - tar.bz2 archive を作成 $ find -print <target-dir> | cpio -o -H ustar | pbzip2 > archive-name.tar.bz2 -- "cpio -o -H ustar" の代わりに "cpio -oH ustar" と書いても動作する - 上で作ったものは、tar -xvjf で正常に解凍出来る。 - 尚、 PISIX.1 tar フォーマットは、 GNU tar フォーマットと似ているが同じ物ではない。しかしながら GNU tar でも取り扱うことが出来る。 //============================================================================= ** 参考リンク [#oe9680bd] - [[なぜ tar+gzip はよくないか?>http://archive.linux.or.jp/JF/JFdocs/Backup-mini-HOWTO/tar-gz.html]] - [[cpioコマンドの使い方>http://www.mediaweb.biz/database/modules/database/article.php?articleid=7]]