#author("2022-07-15T08:26:34+09:00","","") #author("2022-07-18T15:38:28+09:00","","") #topicpath /////////////////////////////////////////////////////////////////////////////// * 目次 [#n249582f] #contents(); /////////////////////////////////////////////////////////////////////////////// * ZIP [#zip] //============================================================================= ** 圧縮 [#pfdac5dc] $ zip out.zip target-file $ zip -r out.zip target-dir //============================================================================= ** 暗号化圧縮 [#a556e192] $ zip -e <dest-file.zip> <src-file-or-dir> -P <passwd> - 実行すると、解凍用のパスワードの入力を求められる。 - "-r" を付ければディレクトリを圧縮出来る。 //============================================================================= ** 解凍 [#d090228c] $ unzip target.zip //============================================================================= ** zipinfo [#hee151b1] - アーカイヴファイルの情報を取得する $ zipinfo <zip-archive-file> //----------------------------------------------------------------------------- *** zipinfo のオプション [#udacc825] |~option |~desctiption |~remark | |-1 |ファイル名のみ表示 | | |-2 |ファイル名のみを表示(「-h」「-t」「-z」オプションを併用可) | | |-m |格納されているファイルごとの圧縮率を表示 | | |-l |格納されているファイルごとの圧縮後サイズを表示 | | |-v |格納されているファイルごとの詳細な情報を出力 | | |-h |ヘッダを表示 | | |-t |トータル行を表示 | | |-z |ZIPファイルのコメントを表示 | | |-T |タイムスタンプを8桁.6桁(YYYYMMDD.hhmmss)形式で表示 | | |-M |1画面ごとに停止しながら表示 | | |-x <file-name> |出力から除外するファイル名を指定 | | /////////////////////////////////////////////////////////////////////////////// * tar + bzip2 [#tar_bzip2] //============================================================================= ** 圧縮 [#jef1708f] $ tar -cvjf out.tar.bz2 target //============================================================================= ** 解凍 [#se9f54e1] $ tar -xvjf target.tar.bz2 /////////////////////////////////////////////////////////////////////////////// * tar + xz [#tar_xz] - 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" も使える。 /////////////////////////////////////////////////////////////////////////////// * 7z [#archive7z] //============================================================================= ** 圧縮 [#zad1acb5] $ 7z a <out-archive-name>.7z <src> //============================================================================= ** 解凍 [#j275b053] $ 7z e <src-archive-name>.7z //============================================================================= ** アーカイヴ内容の一覧を表示(tar -tvf に相当) [#b99a51a9] $ 7z l <src-archive-name>.7z /////////////////////////////////////////////////////////////////////////////// * Zstandard [#cd9ac17f] - Facebook が開発した可逆圧縮アルゴリズム - bzip2 等と同様、アーカイヴ機能はないので、ディレクトリなどを圧縮する場合は tar や cpio 等と組み合わせて使う。 - 拡張子は ''.zst'' - 特徴は、 xz と比べて圧倒的に高速。 -- Zstandard は CPU Core1 個で動作するが、それでも CPU 8Core 使って動作した場合の pbzip2, pixz よりはるかに速い。 - 圧縮率は、bzip2, xz と比べてやや落ちる。 //============================================================================= ** 圧縮 [#z306c12e] $ zstd -z <src-file> //============================================================================= ** 解凍 [#le2c1bde] $ zstd -d <src-file> //============================================================================= ** tar と組み合わせて圧縮 [#r4123ef5] $ tar -cvf <out-archive-name>.tar.zstd <src-file-or-dir> -I zstd /////////////////////////////////////////////////////////////////////////////// * 高速圧縮 [#r721301e] - CPU の Core を全て使って圧縮する //============================================================================= ** tar にサポートされていないプログラムを tar と組み合わせて使うとき [#ncdb064e] - tar の以下のオプションを使う -- ''-I''<compressor-program> -- ''-I'' <compressor-program> (-I の後ろはスペースを空けても空けなくても OK) -- ''--use-compress-program'' <compressor-program> - 例(圧縮プログラムに bzip2 のパラレル版である pbzip2 を使う場合) $ tar -cvf out.tar.bz2 in-file -Ipbzip2 //============================================================================= ** tar + pxz [#tar_pxz] - pxz は、xz の parallel 版。 ** tar + pixz [#tar_pxz] - pixz は、xz の parallel 版。 - tar が pxz をサポート外としている可能性があるが、その場合でも以下のコマンドのように、 ''-I'' オプションで渡すことにすれば問題なく実行できるだろう。 $ tar -cvf ${out_target}.tar.xz ${source} -Ipxz $ tar -cvf ${out_target}.tar.xz ${source} -I pixz //============================================================================= ** tar + pbzip2 [#tar_pbzip2] $ 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 [#tar_bpigz] $ tar -cvf out.tar.gz in-file -Ipigz または $ tar -cvf out.tar.gz in-file --use-compress-program pigz //============================================================================= ** p7zip [#b1ce863f] /////////////////////////////////////////////////////////////////////////////// * cpio [#cpio] - cpio には色々機能があるが、ここでは tar からの置き換えを前提に記述する //============================================================================= ** 特徴 [#rc344691] //----------------------------------------------------------------------------- *** 使用方法 [#ib3fed59] - 指定されたファイルを tar のように1個のファイルに纏める。 -- 入力ファイルは全て標準入力から渡さなければならない。つまり、 tar ではディレクトリを指定したらその配下のファイルが全て対象になったが、cpio の場合は個別にファイルを指定しなければならない。 --- 逆に考えれば、個別にファイルを取捨選択出来る、という事でもある。 //----------------------------------------------------------------------------- *** cpio と tar [#qe559b58] - tar は管理情報をアーカイヴの先頭にまとめて記述しており、そこが破損すると全てのファイルが復元不可能になる。 - cpio は、アーカイヴの中でファイル毎に管理情報を記録しており、アーカイヴの一部が破損しても、影響範囲はその破損部位に関係のあるファイルのみで済む。 //============================================================================= ** 使い方 [#cpio-xz] //----------------------------------------------------------------------------- *** 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 を取り扱う [#cpio-posix-tar] - 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 でも取り扱うことが出来る。 //============================================================================= ** 参考リンク [#links] - [[なぜ 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]] /////////////////////////////////////////////////////////////////////////////// * lzh / lha [#i888a0c4] //----------------------------------------------------------------------------- ** 解凍 [#p3922984] - 解凍時は、-e または -x を使う $ lha -e <archive-file> $ lha -x <archive-file> //----------------------------------------------------------------------------- ** 圧縮 [#l7aea468] //----------------------------------------------------------------------------- ** option [#nd6e7d30] |~option |~description |~remark | | -l <archive-file> | <archive-file> に含まれるファイルの一覧を表示する | |