何か良いアイデアがあれば、連絡いただけると有り難いです
概要
次の調査をしたときの記録. 正確には一行野郎では無いですが..
次のようにアーカイブしたい対象を列挙した input.txt があり、
input.txt に列挙したデータ群を無圧縮でも良いので、できる限り速くアーカイブにしたい.
$ cat input.txt
./.bashrc
./.emacs.d/bookmarks
以下略
その他、条件は以下であった.
・input.txt に列挙したデータの個数は 20万個 ほどであった.
・input.txt に列挙したデータの総サイズは 20GB ほどであった.
・input.txt に記したデータ構造(ツリー)でアーカイブにする.
・スクリプトを作って並列化はさせたくは無い (∵ バグ混入を避けるため).
実行
以下、生成されるアーカイブ(約20GB) を output.*
という形式にしている.
結果は以下であった.
## 下記だと 12分
$ cat input.txt | zip -0 -ry -@ output.zip &>/dev/null
## 下記だと 36分
$ tar cv -I pigz -f output.gz -T input.txt &>/dev/null
## 下記だと 40分経過しても終了せず
$ tar cv -f output.tar -T input.txt &>/dev/null
結論
・平凡そうに見える zip -0 -r が最も速くて意外だった
・データ数や総サイズなどの条件次第で結果は異なる気がする.
参考にしたサイト
URL |
---|
https://mickey-happygolucky.hatenablog.com/entry/2018/04/21/011811 |