次のようにmysqlバックアップファイルをパッケージ化しようとしています。
find /data/mysqldata \( ! -name "*mysql-bin*" -a ! -name "*.log" \) |
xargs tar -zcf /data/backup.tgz
実際にこのコマンドをPopenで実行し、select-poll方式で出力が読み込まれるのを待っていましたが、tarプログラムを再起動したかのようにバックアップファイルが大きくなりすぎて、突然小さすぎる場合がありました。これは通常、ターゲットファイルが非常に大きく混乱している場合に発生します。
ベストアンサー1
GNUの使用tar
:
tar -cz -f /data/backup.tgz --exclude '*.log' --exclude 'mysql-bin.*' /data/mysqldata
あなたが経験している問題は、xargs
それをtar
複数回(少なくとも2回)実行することです。バックアップファイルは、2回目の実行時にtar
「縮小」(上書き)されます。
それがまさにそのことですxargs
。できるだけ多くの引数を使用してユーティリティを実行し、より多くの引数(あなたのファイル名)を取得したら、リストを切り取り、ユーティリティへの他の呼び出しでリストを引き続き使用します。
質問起こったすべてのディレクトリとファイル名をに送信するため、xargs
非常に長いリストが生成されます。