tar, pax, darのベンチマーク
良く使うアーカイブについて簡単なベンチマークしてみました。
アーカイブの対象は、以下の通り
総サイズ:33,030,144 byte
総ファイル数:5,148個(ファイル=1,946, ディレクトリ=3,186, シンボリックリック=16)
アーカイブ方式 | サイズ(byte) | アーカイブにかかった時間(s) | 圧縮率 | 単位時間当たりに圧縮できるサイズ(MB/s) | |||||
tar | 16,281,600 | 0.25 | 49% | 126.0 | |||||
targz | 9,263,442 | 1.04 | 28% | 30.3 | |||||
tarbz2 | 8,706,244 | 4.69 | 26% | 6.7 | |||||
pax | 16,281,600 | 0.78 | 49% | 40.4 | |||||
paxgz | 9,260,991 | 1.49 | 28% | 21.1 | |||||
paxbz2 | 8,717,847 | 5.18 | 26% | 6.1 | |||||
dar | 13,191,132 | 1.04 | 40% | 30.3 |
もう少しアーカイブ対象を変えて結果を検証する必要があります。
paxのアーカイブ形式は、デフォルトではtar形式ですが、tarコマンドと比べてアーカイブに約3倍の時間がかかります。体感でも少し遅いと感じます。
darコマンドは、アーカイブコマンドと言うよりバックアップコマンドなので圧縮率は、比較してもあまり意味がありません。
フル/差分/増分のバックアップが作成できるので、うまく設計すれば大抵のバックアップ要件を満たしてくれます。
paxも差分を作ることができますが、darではファイルの削除についても管理できるところが優れています。
darで3GBのデータをバックアップする予定ですが、予想では、100秒程度の時間がかかり1.7GBに圧縮されるでしょう。
※実際には約7分かかりました。バックアップ対象のファイルがJPEGやMPEG4だったので、まったく圧縮されませんでした。
C:\Users\ksaito>backup-pub.bat start 2007/12/23 02:47 C:\Users>dar -c backup\pub -R .\Public -g Videos -g Pictures -------------------------------------------- 3276 inode(s) saved with 0 hard link(s) recorded 0 inode(s) changed at the moment of the backup 0 inode(s) not saved (no inode/file change) 0 inode(s) failed to save (filesystem error) 14 inode(s) ignored (excluded by filters) 0 inode(s) recorded as deleted from reference backup -------------------------------------------- Total number of inode considered: 3290 -------------------------------------------- fin 2007/12/23 02:54 C:\Users>
ぼんくら〈下〉 (講談社文庫)
- 作者: 宮部みゆき
- 出版社/メーカー: 講談社
- 発売日: 2004/04/15
- メディア: 文庫
- 購入: 4人 クリック: 17回
- この商品を含むブログ (128件) を見る
paxコマンド
tarとcpioをサポートしたコマンドです。
fオプションでアーカイブファイルを指定します。
下記のようにzオプションでtarzip形式のファイルをリストすることができます。
$ sudo apt-get install pax $ pax -zf apache-lenya-1.2.5-bin.tar.gz | head apache-lenya-1.2.5-bin apache-lenya-1.2.5-bin/legal apache-lenya-1.2.5-bin/tools apache-lenya-1.2.5-bin/tools/bin apache-lenya-1.2.5-bin/tools/configure apache-lenya-1.2.5-bin/tools/configure/lib apache-lenya-1.2.5-bin/tools/configure/src apache-lenya-1.2.5-bin/tools/configure/src/java apache-lenya-1.2.5-bin/tools/configure/src/java/org apache-lenya-1.2.5-bin/tools/configure/src/java/org/apache $
下記のsオプションを使うとパスの置換ができるので結構使えそうです。
-s/パターン1/パターン2/
こんな感じで"-bin"のような配布側では必要ですが受け取り側では不要なパスを置換したりします。
$ pax -s/-bin// -zf apache-lenya-1.2.5-bin.tar.gz | head apache-lenya-1.2.5 apache-lenya-1.2.5/legal apache-lenya-1.2.5/tools apache-lenya-1.2.5/tools/bin apache-lenya-1.2.5/tools/configure apache-lenya-1.2.5/tools/configure/lib apache-lenya-1.2.5/tools/configure/src apache-lenya-1.2.5/tools/configure/src/java apache-lenya-1.2.5/tools/configure/src/java/org apache-lenya-1.2.5/tools/configure/src/java/org/apache $
パイプを使った入出力が基本でアーカイブする条件の指定も細かくできるので使い慣れればtarより便利そうです。