パス (ファイルとディレクトリの両方) の任意のリストを削除できる必要があり、削除に失敗した場合はロールバックできる必要があります。これに対応できる Unix コマンドはありますか? そうでない場合は、bash スクリプトも機能します。
1 に答える
3
これを完全に一般的に行うコマンドはまずありません。O/S は、複数のパスをアトミックに削除することをサポートしていないため、コマンドで削除することはほとんど不可能です。SIGKILL を検討してください。コマンドは回復できず、カーネルは実行されたことを元に戻す必要があることを認識しないため、原子性が失われます。
削除されたファイルまたはディレクトリをごみ箱フォルダーに移動し、他のすべてが成功した場合にのみごみ箱フォルダーの内容を削除することで、アトミック性を概算できます (何か問題が発生した場合は、ごみ箱フォルダーからデータを回復します)。ただし、アトミックであるとは限りません。また、ファイルが異なるファイル システムにある場合、ごみ箱をどこに置くかを考える必要があるため、ファイル システムごとのごみ箱フォルダが必要です。また、すべて「makefile」と呼ばれる 30 個のファイルをアトミックに削除することについても心配する必要があります。つまり、ごみ箱ディレクトリにディレクトリ階層情報が必要になることを意味します (他のものは最終的にあいまいなので、ごみ箱ディレクトリの下にある実際のディレクトリである可能性があります)。
于 2013-05-07T19:59:54.487 に答える