Recently the micro SD card in my mobile got corrupted, here are the steps I took to rescue most of the files:
1. Remove the card from the mobile immediately and do not use it
2. Install ddrescue
$ sudo apt install gddrescue
3. Insert the card and find the mount point of the sd card
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk |-sda1 8:1 0 15G 0 part |-sda2 8:2 0 100M 0 part |-sda3 8:3 0 109.7G 0 part |-sda4 8:4 0 1K 0 part |-sda5 8:5 0 333.1G 0 part / |-sda6 8:6 0 7.9G 0 part |-cryptswap1 252:0 0 7.9G 0 crypt [SWAP] sr0 11:0 1 1024M 0 rom mmcblk0 179:0 0 59.5G 0 disk |-mmcblk0p1 179:1 0 59.5G 0 part
In my case, mmcblk0p1 is the one we want. So, the mount point for the card is /dev/mmcblk0p1
4. Run ddrescue
$ sudo ddrescue -dr3 /dev/mmcblk0p1 /home/<username>/sdcard.image ddrescue.log GNU ddrescue 1.19 Press Ctrl-C to interrupt Initial status (read from logfile) rescued: 63847 MB, errsize: 99328 B, errors: 71 Current status rescued: 63847 MB, errsize: 83456 B, current rate: 0 B/s ipos: 8209 MB, errors: 59, average rate: 72 B/s opos: 8209 MB, run time: 3.66 m, successful read: 24 s ago Finished
The first run will take some time depending on the size of your drive, subsequent runs will take considerably less time and will only focus on recovering corrupted files. Please note that ddrescue and dd_rescue are different programs and do different things, in this case we used ddrescue.
5. Check the drive for errors
$ sudo fsck.exfat sdcard.image exfatfsck 1.2.3 WARN: volume was not unmounted cleanly. Checking file system on sdcard.image. File system version 1.0 Sector size 512 bytes Cluster size 128 KB Volume size 59 GB Used space 10200 MB Available space 50 GB Totally 99 directories and 1113 files. File system checking finished. No errors found.
6. Finally, mount the rescued image to verify what files have been recovered
$ mkdir /media/recovered $ sudo mount sdcard.image /media/recovered
Then you can browse this directory at your heart’s content and back up any rescued files.
If the card is using the exFAT file system and this is not recognised by Ubuntu, install the required packages:
$ sudo apt install exfat-fuse exfat-utils
For worst situations, this data recovery guide may come in handy.