たとえば、大きなファイル(500 mbなど)をバックアップ(500 mbなど)してHDD AのフォルダAに保存するJavaプロセスがあり、フォルダAを1日1回コピーするようにcronスクリプトをスケジュールしたい場合は、HDD Bへ... JavaプロセスがフォルダAに書き込んでいる間にcronスクリプトがトリガされるとどうなりますか?待ちますか?まだ作成されていないファイルは無視されますか?
答え1
通常、Unix コマンドは、ファイルが開いていて記録されているかどうかに関係なく、ファイルを同じ方法で処理します。したがって、cronジョブを使用してcp
ディレクトリをコピーする場合、コピーされる内容は、コマンドがディレクトリを調べたときにディレクトリにあった内容によってのみ異なりますcp
。ファイルにcp
アクセスしたときに部分的にのみ記録された場合、部分的に記録されたコピーが作成されます。これが発生しないようにするには、連携プロセス間でロック方式を実装してディレクトリへの同時アクセスを防ぐ必要があります。