Linuxでcpを使用してコピー操作中にファイル名が変更された場合はどうなりますか?

Linuxでcpを使用してコピー操作中にファイル名が変更された場合はどうなりますか?

だから使いたいのですが…

cp /var/log/somelogs/* ./temp

...一部のログファイルを一時フォルダにコピーして分析します。問題は、ログファイルを生成するプロセスが私の制御下になく、ログが非常に頻繁に循環することです。忙しい時間には15秒ごと!最終的にcpが発生し、同時にログ回転が発生します。こんなことが起きたらどうなるのだろうか。

フォルダの詳細を確認するために、1秒も待たずにフォルダが破損しているかどうかはどうすればわかりますか?エラーコードのためにcpがシャットダウン/衝突する可能性がありますか?標準出力で何かを印刷しますか?あるいは、破損​​しているか、名前が間違っている可能性があるフォルダのログを自動的に転送することもできます。

残念ながら、fsはext4であり、私のコントロールの範囲外であるため、スナップショットを利用することはできません。 shh :/

答え1

コマンドラインのワイルドカード文字( " /var/log/somelogs/*")が最初に展開されます(cp実行が開始される前)。生成されたファイルのリストに存在しなくなったファイル名が含まれている場合(cp前のファイルをコピーしたときに実行されるログが回転したため)、文句を言い、次のファイルをcp試した後にゼロ以外の終了状態(bash変数$?)を返します。望むよりman cp

ワイルドカード拡張を参照してください。

echo cp /var/log/somelogs/* ./temp

関連情報