Re: [問題] 資料消失的隨身碟
切記一件事, 拔除隨身碟之前, 一定要先 umount,
否則部份仍在主記憶體中尚未寫回隨身碟的資料就會消失了,
而且這很有可能造成隨身碟的檔案系統損毀.
An application is preventing the volume '???' from being unmounted.
以上錯誤訊息表示, 某個應用程式佔據了隨身碟的某些資源,
這有可能是隨身碟中的某個檔案被打開來編輯尚未關閉,
或者某個程式是以隨身碟之中的某個子目錄做為 current working directory,
你必需結束這些佔用隨身碟的程式, 之後才能 umount 隨身碟.
那麼要如何知道哪些程式佔用隨身碟資源呢? 假設隨身碟是掛在 /media/usbdisk
find /media/usbdisk -exec lsof {} \;
接下來還有一個問題, 萬一隨身碟是掛在一個打不出名字的路徑呢?
隨身碟既然是在不同的作業系統之間交換檔案, 分別使用 CP950 或者 UTF8
不同的編碼系統, 這樣子怪怪無法辨認的 disk volume label 是常常發生的.
以下看一個例子, 如何指定一個怪怪的檔名, 首先故意造出一個怪怪的目錄:
install -d "$(echo '大五碼' | iconv -f utf8 -t cp950)/萬國碼"
ls 只會看到一串問號, 類似像這樣: ?j???X
ls -b 可以看到以八進位數字表示的實際名稱: \244j\244\255\275X
知道檔名的八進位編碼之後, 就可以八進位編碼去指定這個檔案了:
find "$(echo -e '\0244j\0244\0255\0275X')"
最後再補充一點, 如果你忘記了以上這些步驟, 無論如何就是 umount 不了,
記得拔下隨身碟之前, 就算不能 umount 也要先執行 sync
--
How shall my heart be unsealed unless it is broken?
By Kahlil Gibran
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.8.136
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):