為什麼U盤不安全移除也不會丟失文件?

為什麼U盤不安全移除也不會丟失文件?

我們經常會被微軟教育:拔出U盤前一定要安全移除:

為什麼U盤不安全移除也不會丟失文件?

作為一個程序員,我也很理解這點。因為如果文件操作都立刻進行,效率非常低,尤其對於大量小文件而言更是如此。操作系統的文件子系統有個buffer,將數據暫時存儲起來,在方便的時刻再一次寫入設備。這個安全移除就是最後一個“方便的時刻”。

不過,不知道你有沒有發現,現在大部分人都是用完直接拔掉,也很少聽說文件丟失,這是為什麼呢?

原因

其實微軟做過調查發現要求用戶每次點擊鼠標好幾次並不是個很好的辦法,很少有用戶喜歡這麼做。它在Windows XP後改變了原先的做法,會盡量在用戶操作完成後立刻刷新buffer。這樣數據安全了,那麼會不會造成磁盤存取效能下降呢? 其實操作系統會判斷存儲媒介的種類,只有外部可移動設備會被設置這種策略。通過哪裡能觀察到這種策略呢?我們可以在設備管理器中看到:

為什麼U盤不安全移除也不會丟失文件?

移動設備都默認被設置為可以快速刪除,寫緩存被禁用了。帶來的好處是可以不用安全移除了!如果你需要更好的性能,可以選擇下面那個“更好的性能”選項。如果是本地硬盤,則默認開關完全不同:

為什麼U盤不安全移除也不會丟失文件?

結論

微軟在不停的改進windows的使用體驗。這個巨大的進步卻沒有廣為人知,可能是顧及到可能的數據丟失。據我經驗,在文件操作完畢後,等個一兩秒鐘,立刻拔出U盤,沒有出現過任何問題。怎麼判斷文件操作結束了呢?有很多U盤都帶有指示燈,在燈光不再閃爍時,再拔出是個好主意。尤其是你只是讀取,並不寫入的時候。

這就是你的數據不會丟失的原因。

凡事總有例外

如果你有很重要的數據,你希望能夠100%確定數據不會丟失。那麼通過安全移除可以確保無憂。但在很多時候,安全移除總是提示:

為什麼U盤不安全移除也不會丟失文件?

可你明明已經關閉了所有應用程序了啊?!其實系統中總有些程序在有意無意的掃描你的文件,這些程序包括殺毒軟件、流氓軟件或者某些“殺毒軟件+流氓軟件”。而你很難判斷是誰鎖住了U盤。在幾次徒勞的嘗試後,你也許就只有重新啟動確保數據安全了。這也許就是微軟不大張旗鼓宣傳這個改進的主要原因:總有些人不按規則出牌。

如果你不希望白白認輸,希望找出幕後黑手,那麼請跟我來。

破案過程

萬事別伸手,伸手必被捉。U盤不能被移除是因為它的句柄(Handle)被鎖住了(Lock),我們通過看看是誰鎖住的Handle,就能夠順藤摸瓜,找到幕後的黑手。先下載破案工具:

1. Sysinternals的良心免費工具:Handle (Handle)

2. 還是Sysinternals的良心免費工具:Process Explorer (Process Explorer)

假設我們的U盤是H盤,先運行Handle (Win7以上主要管理員權限):

為什麼U盤不安全移除也不會丟失文件?

我們看到CleanMyPCService.exe鎖住了U盤(H:)。那麼我們是不是可以關掉這個exe就萬事大吉了呢?Too Simple, Sometimes....啊同學們!很多時候我們可能在任務欄裡面根本找不到這個程序,甚至你啟動任務管理器也難以發現他們的蹤影。沒關係,我們不是還有另外一個工具嗎,讓我們利用它來讓黑手現形:

為什麼U盤不安全移除也不會丟失文件?

名字和指紋(PID)都對上了,黑手抓住了!

為什麼U盤不安全移除也不會丟失文件?

我們可以用ProcessExplore關閉這個程序,再安全移除,從此王子與公主過上了幸福的生活。

結束後的新結束

慢著,這麼麻煩,讓我們一般用戶情何以堪,這裡不是你們程序員秀優越感的地方!好吧,介紹一個方便的工具:LockHunter(Download LockHunter)。它的功能十分強大:

1. 顯示鎖住文件或者文件夾的進程和其詳細信息。

2. 可以解鎖、刪除、拷貝和重命名鎖住的文件。

3. 允許下次OS啟動的時候再自動刪除。

4. 殺掉鎖文件的進程,還可以殺掉那個進程的文件,斬草除根!

5. 集成到Explore的右鍵菜單裡,方便快捷。

最妙的是OS支持廣泛:WinXP、Win7、Win8和Win10。32位和64位!

讓我們用它來打開U盤:

為什麼U盤不安全移除也不會丟失文件?

噠噠,黑手再次現形!我關,我刪!世界清靜了!


分享到:


相關文章: