最近,我的硬碟崩潰了,我不得不運行fsck
命令。許多文件已移至該資料夾,並且我已使用和lost+found
檢索了重要文件,但我找不到我的 SQL 資料庫。find
grep
問題
- 如何在我的lost+found目錄中找到InnoDB資料庫?
- 有可能 fsck 沒有儲存我的 SQL 資料庫嗎?
- 如果是的話我可以恢復這個檔案嗎?
答案1
嘗試#1:
也許它還在那裡,只是它的名字改為 fe /lost+found/#3456254 之類的。在你的地方,我file -szL
對 中的所有內容進行了遞歸/lost+found
,並 grep 了 innodb:
find /lost+found -type f|xargs -P 1 -n 500 file -szL|grep -i innodb
如果其中還有 innodb 資料庫,則您可以儲存資料。祝你好運!
嘗試#2:
如果您的資料庫有大量文字數據,基於磁區的六角搜尋也可以為您提供協助。
答案2
有問題的檔案可能無法透過 fsck 重建,因為它們已被刪除。 fsck 程式僅嘗試修復並盡力重建檔案。然而,它絕不是任何類型的備份。 fsck 執行的任何操作基本上都是不可逆的。
我在嘗試使用Lost+Found 目錄中包含的MySQL 資料庫部分時會非常小心,因為資料庫不包含在一個檔案中,而是包含在許多檔案中,這些檔案必須處於「同步」狀態,才能有希望在一個文件中復原資料庫。
至於檔案恢復,抱歉,您必須返回到您可能一直在進行的備份,因為資料很重要。不然的話,你就真的不走運了。
如果資料如此重要,那麼您也許可以嘗試尋求眾多資料復原服務之一的協助。它價格昂貴,而且結果並不完美。
答案3
我相信你運氣不好。您唯一的選擇是瀏覽lost+found
目錄並目視檢查每個文件,尋找有關其原始名稱的線索。
將來
有一篇部落格文章標題為:更新:自動從遺失+找到的檔案恢復,其中討論了兩種在這種情況下會有所幫助的工具。
make-lsLR.sh
- 定期呼叫此函數 (cron) 以建立儲存在 /root/ 中的所需檔案。當然,您可以輕鬆更改位置並排除其他目錄進行掃描。
check_lost+found.py
- 第二個腳本將在您的 fsck 設法弄亂您的檔案並將其儲存到遺失+發現目錄時運行。它需要 3 個參數:1) 混亂的lost+found 目錄所在的來源目錄,2) 將保存資料的目標目錄,3) 實際執行此操作而不是空運行的開關。
這兩個腳本一起工作,第一個腳本需要定期運行,以建立系統上存在的文件的清單。如果您需要從lost+found
目錄還原文件,第二個腳本可以使用此清單。