
當我嘗試對包含重要文件的 SD 卡上的寫入速度進行基準測試時,我搞砸了。
sync; sudo dd if=/dev/zero of=/dev/sdb1 bs=1M count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 23.5386 s, 45.6 MB/s
^C
我意識到我是直接寫入 /dev/sdb1 而不是寫入已安裝卡內的文件,因此由於擔心覆蓋數據,我在基準測試似乎結束後立即取消了(事實並非如此)。現在它會自動掛載,但不顯示任何內容(無法在檔案總管中按一下它,並且 gparted 僅將其顯示為未知的 exfat 卡。
我能做些什麼?
答案1
有很多恢復應用程序,我個人發現它們photorec
效果foremost
最好。 Photorec 是軟體包的一部分testdisk
,最重要的是可以從軟體包中安裝foremost
。
a) 攝影
現在只需運行$ photorec /dev/sdb
即可開啟 photorec 的互動介面。
按下回車鍵 ( [Proceed]
) 選擇磁碟。在下一個畫面中,系統會要求您選擇一個分割區。如果 photorec 找到正確的分割區,您可以從這裡選擇要還原檔案的分割區。如果它沒有正確偵測到分區,只需選擇No partition [Whole disk]
並再次按回車鍵即可執行[Search]
.在下一個畫面中選擇檔案系統類型後,您需要選擇儲存已復原的檔案的目錄。用 確認C
。
b) 最重要的是
雖然 photorec 的工作原理是嘗試在使用中尋找驅動器和媒體的“資料塊”文件雕刻,最重要的是做得有點不同。它仍然使用檔案雕刻概念,但它忽略底層檔案系統的類型,並直接透過將磁碟機的段複製到 RAM 中來運作,然後掃描 RAM 中的檔案頭類型。 Foremost 附帶了大量內建標頭來恢復大多數類型的常見文件,如果您想添加自訂頁首/頁腳來檢測不太常見的文件類型,foremost 為您提供了此功能。
若要使用映像上的預設選項來執行最重要的,請執行以下命令:
$ foremost -i /dev/sdb -v
/dev/sdb1
如果您只想從該分割區還原文件,可以使用此處。
這會將所有復原的檔案儲存到output
(首先將建立的新目錄)。您可以使用該標誌指定另一個輸出目錄-o
,並-a
忽略錯誤/儲存損壞的檔案。
可選:過濾恢復的文件
這是可選的,但有時您只對特定類型的文件感興趣,甚至更糟:恢復工具為您提供一百萬個文件,其中數千個看起來像是JPEG 文件,但實際上它只是一個損壞的文件文件,根本不是圖片。要過濾掉這些,您可以使用這回答我在超級用戶上的另一個問題。
未來如何防止這種情況發生
dd
我看到人們經常弄亂他們的數據。這太容易了。我的建議:
#!/bin/bash
read -r -p "Have you checked at least TWICE if the parameters are correct? [y/N] " response
response=${response,,}
if [[ "$response" =~ ^(yes|y)$ ]]; then
dd "$@"
else
echo "Better be safe than sorry."
fi
將其另存為/usr/bin/sdd
或任何您想要的名稱。chmod +x
之後它。從現在開始,始終使用sdd
而不是dd
.