大量のファイルをバックアップ echo + xargs + tar
コマンドラインで大量のファイルをtarで固めようとすると
Argument list too long
と怒られてしまいました。
いろいろ調べてみると、引数となる値が大きすぎるとカーネルがエラーとして弾いてしまうらしい。
こういうときはxargsを使うと良いみたい。
xargsを使うと引数を分割して処理してくれるらしく、Argument list too longをうまく回避することができる。
実際にファイル名にhogeがつく多数のファイルをtarで固めてみることにする。
echo hoge* | xargs tar cfv hogebakup.tar.gz
うまくtarで固めることができたのだが、実際解凍してみると一部分しかバックアップされていないことに気づく。
どうもxargsが分割して処理を行っているせいで、実際tarで固められているのは最後に分割処理されたファイルのようだ。
オプションをcではなくてrに変えてやるとうまくいった。
echo hoge* | xargs tar rfv hogebakup.tar.gz
これで大量バックアップもへっちゃらです。