web-dev-qa-db-ja.com

書き込み中にファイルの名前を変更しても安全ですか?

Ubuntuでは、Windowsとは異なり、ハードディスクに書き込まれているファイルの名前を変更できます(たとえば、プログラムの出力または別のファイルのコピーであるため)。また、ファイルを含むディレクトリの名前も変更できます。書かれた:システムは「ファイルは使用されています、操作は許可されていません」のようなメッセージを送信しません。この名前変更操作は100%安全ですか、または破損したファイルを作成するリスクがありますか?そして、最初の場合、それを可能にする技術的な理由は、他のオペレーティングシステムとは異なりますか? (おそらく、Linuxファイルシステム構造とiノードの使用に関連するものだと思います...?)

どうもありがとうございました。

4
Andrew

Linuxはファイルハンドルで動作し、Linuxでファイルの名前を変更または移動してもファイルハンドルは変更されません。ファイルを削除しても問題はありません。ファイルハンドルを所有するプロセスは、引き続き読み取りと書き込みを行うことができます。

inodeのウィキペディアのページ は、これについて最もよく読まれます。

コンピューティングでは、iノード(インデックスノード)は、多くのUnixファイルシステムで見られるデータ構造です。各iノードには、ファイルシステムオブジェクトに関するすべての情報(ファイル、デバイスノード、ソケット、パイプなど)が格納されます。最新のファイルシステムの特定の場合を除き、ファイルのデータコンテンツとファイル名は保存されません。

影響

ファイルのiノード番号は、同じデバイス上の別のディレクトリに移動した場合、またはディスクが最適化されて物理的な場所が変更される場合、同じままです。これはまた、FATやその子孫など、ファイルのディレクトリエントリとそのデータの両方が移動するときにこの不変性を保存する方法を持たない多くの非UNIXファイルシステムでは、完全に適合するiノードの動作を実装できないことを意味します。


あ、はい。

5
Rinzwind