Re: [問題] 資料消失的隨身碟

看板Linux作者 (咖啡貓)時間17年前 (2008/08/22 10:16), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
切記一件事, 拔除隨身碟之前, 一定要先 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
文章代碼(AID): #18hY67v0 (Linux)
文章代碼(AID): #18hY67v0 (Linux)