
我曾經想知道為什麼透過 PHP 或 shell 刪除目錄不像在 Windows 中點擊「刪除」那麼容易。我現在意識到刪除只是從文件分配表中取消文件鏈接,因此要刪除目錄,必須取消其中所有文件的鏈接。
是否有可能刪除目錄條目,但不能刪除其中的檔案條目?作業系統是否會定期檢查檔案系統中無法存取的檔案?
答案1
許多 UNIX 有一個unlink
允許用戶root
取消目錄連結的命令,但它確實如此不是遞歸地取消目錄內容的鏈接,所以這是非常危險的。如果發生這種情況,請使用fsck
恢復斷開連接的目錄,該目錄將以lost+found
隨機名稱出現在檔案系統的資料夾中(因為發生這種情況時名稱已遺失unlink
)。
答案2
是的,這是可能的,而不是不太可能,因為作業系統中有適當的程式來防止這種情況發生,但磁碟錯誤和奇怪的情況可能會導致事情發生。
一般是這樣的查克德斯克,FSCK,以及許多其他實用程式的設計目的。他們讀取分配表並將其與已知的文件條目進行匹配......任何錯誤都會導致採取一些操作。
在 Windows 中,您通常可以透過檢視特性右鍵單擊驅動器圖示時的選項。它可能然後進行檢查,儘管 Windows 似乎更喜歡啟動磁碟檢查,並且它會告訴您它將在下次重新啟動時執行此操作。
在 Linux 中,...在活動系統上使用 fsck 實用程式可能會嚴重傷害自己,這就是為什麼 Linux 機器通常總是在啟動期間執行檔案系統檢查(fsck!)。簡單地重新啟動通常會導致檢查發生。 (雖然我確實知道,當 UPS 發生故障時,從我的家庭伺服器上拔掉電源也會觸發一個!)(檔案系統被標記為髒)
作業系統?沒有任何線索。有點像你在機器附近喝了一杯拿鐵咖啡,它通過與最近的 GeniusBar 鏈接修復了自身的問題。 (我認為您可能也需要在星巴克™內或附近)