問題点
このようなシェルコマンドを打っていました。
find . -name "*hoge.cif" | xargs tar -cf myfile.tar
すると、myfile.tar
ができたのでサーバーから落としてきてローカルで展開したところ、あれれ?ファイル全部入ってないぞとなりました。
find . -name "*hoge.cif" | wc -l
でファイル数を調べてみたらちゃんと8000近くあるのに、
tar -tf myfile.tar | wc -l
でアーカイブされたファイル数を数えてみても1503しか入っていない。
問題はどうやらxargs
の挙動みたいでした。
こちらのサイトを参考にしたところ、xargs
は引数が多すぎるとバッファにためて実行を繰り返すみたいです。となるとずっとアーカイブファイルを上書きしてたってことか、、、。
解決策
上記サイトを参考に
find . -name "*hoge.cif" | tar -c -T - --null -f myfile.tar
とすれば解決!!