ディレクトリエントリは、iノードへの単なるポインタです。iノードには、ファイルに関するメタ情報(名前以外)、およびファイルのデータへのポインター(ある場合)が含まれています。ファイルのコピーを開始すると、iノードへのハンドルを取得します。
オペレーティングシステムは、iノードへの参照のカウントを維持します。iノードへの参照がある限り、iノードとファイルのデータは保持されます。iノードへのすべての参照が削除されると、iノードが削除され、ファイルに必要なスペースが解放されます。
ファイルをコピーするために開いているので、プロセスがファイルを閉じるまで保持されます。これは、ファイル転送が終了したときに発生し、コピープロセスが失敗した場合に発生します。ファイル転送が途中で失敗し、ファイルへのすべてのハードリンクを削除した場合、転送を正常に再開することはできません。
編集:他の人が指摘したように、同じデバイス上のファイルの移動は、データを移動せずに行われます。代わりに、宛先ディレクトリに新しいディレクトリエントリが作成され、元のディレクトリエントリが削除されます。
同じファイルに対して複数のディレクトリエントリを持つことができます。これらはハードリンクと呼ばれます。これらは、元のエントリを削除せずにファイルの新しいディレクトリエントリを作成することによって作成されます。ファイルシステムのiノードには、ファイルを指すディレクトリエントリの数を記録する参照カウントがあります。
EDIT2:プロセスがクラッシュまたは強制終了された場合、メモリ内のアクセスカウントがゼロに減少するため、ファイルは完全に削除されます。これは、プログラムが正常に終了したときに発生するアクションです。
電源障害またはその他のシステムの異常なシャットダウンの場合、ディスクをfsck
完全にマウントする前に(ファイルシステムチェック)が必要になります。ディスク上のiノードとディレクトリ構造の状態に応じて、スペースが回復されるか、ファイルがディレクトリに残るか、ディレクトリに新しいエントリが作成されlost+found
ます。結果は、どの変更がディスクにフラッシュされたか、ファイルシステムジャーナルに書き込まれたかによって異なります。