恢復閃存驅動器文件

恢復閃存驅動器文件

我需要從 16GB Lexar 隨身碟中復原檔案。印刷電路板似乎沒有任何損壞,所以我希望可以恢復。當我將 USB 插入 Windows 電腦時,它會將其識別為驅動器,但提示我插入磁碟。經過幾天的努力,我決定在 Ubuntu 上嘗試。

運行lsusb命令:

Bus 002 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 8086:0186 Intel Corp. WiMAX Connection 2400m
Bus 001 Device 003: ID 0bda:5801 Realtek Semiconductor Corp. 
Bus 001 Device 007: ID 058f:1234 Alcor Micro Corp. Flash Drive
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

這款隨身碟被認為是 Alcor Micro Corp. 到目前為止一切順利。但是,當我運行時sudo fdisk -l

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xb43778ae

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     3074047     1536000   27  Hidden NTFS WinRE
/dev/sda2         3074048   921657343   459291648    7  HPFS/NTFS/exFAT
/dev/sda3       954587136   976773119    11092992   17  Hidden HPFS/NTFS
/dev/sda4       921659390   954587135    16463873    5  Extended
/dev/sda5       921659392   954587135    16463872   83  Linux

Partition table entries are not in disk order

驅動器無法識別。最後,我跑了tail -f

==> /var/log/syslog <==
Mar 24 08:55:10 danny-Satellite-E305 kernel: [ 6791.398762] usb 1-1.2: new high-speed USB device number 9 using ehci-pci
Mar 24 08:55:10 danny-Satellite-E305 kernel: [ 6791.644599] usb 1-1.2: New USB device found, idVendor=058f, idProduct=1234
Mar 24 08:55:10 danny-Satellite-E305 kernel: [ 6791.644610] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Mar 24 08:55:10 danny-Satellite-E305 kernel: [ 6791.644616] usb 1-1.2: Product: Mass Storage Device
Mar 24 08:55:10 danny-Satellite-E305 kernel: [ 6791.644621] usb 1-1.2: Manufacturer: Alcor Micro
Mar 24 08:55:10 danny-Satellite-E305 kernel: [ 6791.645100] usb-storage 1-1.2:1.0: USB Mass Storage device detected
Mar 24 08:55:10 danny-Satellite-E305 kernel: [ 6791.645183] scsi13 : usb-storage 1-1.2:1.0
Mar 24 08:55:11 danny-Satellite-E305 kernel: [ 6792.642812] scsi 13:0:0:0: Direct-Access     Generic  USB Flash Disk   7.76 PQ: 0 ANSI: 4
Mar 24 08:55:11 danny-Satellite-E305 kernel: [ 6792.643071] sd 13:0:0:0: Attached scsi generic sg2 type 0
Mar 24 08:55:11 danny-Satellite-E305 kernel: [ 6792.647022] sd 13:0:0:0: [sdb] Attached SCSI removable disk

有恢復資料的想法嗎?先致謝!

答案1

製作違規設備的映像ddrescue- 您將需要足夠的存儲空間來容納整個驅動器,無論您已經(或曾經)存儲在其上的數據量有多少,在這種情況下,您似乎需要 16GB 來存儲一個克隆/ dev/sdb。

ddrescue 是將完成這項工作的程序,如果它沒有安裝,我們需要安裝它sudo apt-get install gddrescue(不是拼寫錯誤,g 是 GNU 的縮寫)

打開終端CtrlAltT並更改為將儲存圖像檔案的目錄並發出命令sudo ddrescue -d /dev/sdb sdb.img sdb.logfile

-d 直接存取磁碟機(忽略快取) /dev/sdb 是我們用於輸入的裝置 sdb.img 是我們用於輸出的檔案 sdb.logfile 追蹤我們的位置和結果是。

如果由於任何原因進程在完成之前停止,日誌檔案允許從我們中斷的地方繼續。

成像將開始,您將看到如下內容:

解救

rescued表示成功讀取的資料量,errsize表示無法讀取的資料大小。隨著這個過程的繼續,我們希望看到前者增加,後者接近零。我記得 ddrescue 使用一種稱為資料雕刻的過程,其中失敗的區塊被減半並重新嘗試。

ddrescue 是一個非常強大的工具,您可以在手動的。 請密切關注第三章!選擇錯誤的檔案或裝置進行輸出肯定會毀掉你的一天。

獲得生成的映像後,我們可以對其運行測試和恢復程序,而不會對故障或故障設備造成任何進一步的壓力。

最終 ddrescue 將在終端螢幕上輸出「Finished」。如果 errsize 很高並且您覺得可能想要嘗試恢復更多,您可以重新運行命令並應用開關來重試失敗的塊,甚至反向讀取(在固態設備上可能沒有幫助) by:sudo ddrescue -d --try-again --retrim --reverse /dev/sdb sdb.img sdb.logfile或者您認為對上述手冊可能有幫助的任何其他開關組合。一旦您完成恢復所有資料的嘗試,您就可以看看我們擁有什麼了。

發出命令fdisk -l sdb.img或任何您為圖像命名的內容。運氣好的話,您將得到與此類似的輸出,表示分區表完好無損。

Disk sdb.img: 4013 MB, 4013948928 bytes
1 heads, 24 sectors/track, 326656 cylinders, total 7839744 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000174fe

  Device Boot      Start         End      Blocks   Id  System
sdb.img1   *        2048     7839743     3918848    b  W95 FAT32

請注意「開始」編號,這表示檔案系統從磁區 2048 開始。

有了這些資訊和一些基本的數學技能或計算器,我們就可以得出我們需要嘗試我們的流程的偏移量。 2048 個磁區 X 每個磁區 512 個位元組 = 1048576

由於我們由於失敗而創建了此映像,因此我們將首先嘗試修復檔案系統

發出命令sudo losetup --offset 1048576 /dev/loop2 sdb.img以在循環設備上設定影像。

然後發出命令sudo fsck /dev/loop2

在我們盡最大努力修復系統後,我們將建立一個安裝點sudo mkdir /mnt/loop並安裝先前設定的循環設備sudo mount /dev/loop2 /mnt/loop

現在希望我們有一些資料可以複製到另一個驅動器。我們看看吧:

ls /mnt/loop
autorun.inf  casper-rw  ldlinux.sys  pool                smart-fail.txt
boot         dists      md5sum.txt   preseed             syslinux
casper       install    pics         README.diskdefines  wubi.exe

看來我有一些。希望你也這樣做!複製完文件後,我使用以下命令卸載循環設備sudo umount /dev/loop2

如果這種方法不太成功,我也可以使用命令`sudo testdisk sdb.img(或任何您命名的映像檔)來嘗試testdisk。按 Enter 鍵選擇影像,然後選擇分割區類型,如果偵測到類型,它將提示您如何繼續。請注意,這通常是閃存驅動器上的英特爾。

您可以選擇「分析」來搜尋遺失的分割區,或直接進入「進階」以使用檔案系統工具選擇已知或已復原的分割區。選擇分區後,您將看到一個文件列表,其中包含有關如何選擇要複製的文件等的說明。如果有任何不清楚的地方您可以給我留言,我會回覆您。

相關內容