如果您在檔案從一個檔案系統 (ext4) 移至另一個檔案系統 (NTFS) 時刪除該文件,會發生什麼情況?

如果您在檔案從一個檔案系統 (ext4) 移至另一個檔案系統 (NTFS) 時刪除該文件,會發生什麼情況?

從昨天起這件事一直困擾著我。我使用 GNOME Files (Nautilus) 將視訊檔案從「下載」資料夾移至 NTFS 磁碟機。現在,當我剪下並貼上該檔案時,它立即出現在目標位置(單獨的 NTFS 檔案系統,在同一硬碟上使用 ntfs-3g)。我知道當您將文件從一個文件系統移動到另一個文件系統時,它實際上會複製然後刪除該文件(如果我錯了,請糾正我)但我急忙從源中“移動+刪除”該文件,稍後發現檔案管理器是即使我從來源中刪除了該檔案並且它消失了,仍然將檔案移至 NTFS 檔案系統。當移動條達到 100% 後,它給了我一個錯誤。但我檢查了目標目的地,檔案仍然移動到目的地並且播放正常。

那麼,這裡究竟發生了什麼事? Linux 上的檔案操作是否會隨後進行,以免中斷行動操作?或者移動到我的目標目的地的檔案會損壞?或者是由於檔案移動時的最後一次複製操作而導致的錯誤,因為移動操作無論如何都會刪除該檔案?

答案1

刪除檔案不會清除其資料(內容) - 它只會刪除表明該檔案存在的元數據,並將相應的磁碟空間標記為「可供以後使用」。

但更重要的是,作業系統將保持只要需要,元資料就會存在。即使您從其目錄(或從所有目錄,如果有多個硬鏈接)取消文件的鏈接,只要至少有一個進程保持該文件打開,操作系統就不會刪除實際文件。因此,在其餘的複製操作期間,該文件仍然存在 - 只是無名(但仍然佔用其空間)。

做過說「複製操作」是因為電腦無法在磁碟之間物理移動資料 - 首先將檔案複製到目的地,然後原始文件被刪除。這實際上就是您收到錯誤訊息的原因:您的檔案管理器使用兩個單獨的操作(複製和刪除);複製成功,但刪除失敗(因為你有已經刪掉了)。

答案2

在 Linux 上,大多數情況下您可以刪除開啟的檔案。這將使該檔案從目錄清單中消失。然而,文件佔用的空間只有在文件不再使用後才會被釋放。

您的情況失敗的只是移動操作的最後一步:刪除來源檔案/目錄。

相關內容