Sounds to me like your SD card is corrupted. How old is it? Especially older SD cards and those from lesser-known brands tend to age quickly. I would suggest you to follow step 1. of my tutorial below first, before you take any further action. Then I would use
chkdsk or similar tools to try and repair the drive. You might also wanna try
testdisk to repair the filesystem. If nothing works....
For recovery you can use my following tutorial: (If you don't have Linux installed, a live USB (e.g. xubuntu) will do fine.)
1. Create an image of the drive
This is a pretty important step that will prevent you from doing even more damage than good. This is a good idea even before you proceed to try and fix the drive. The file recovery we will do later will be performed on the disk image, instead of the real disk. To create a disk image, simply issue the following command: (Status flag is optional, it shows the progress statistic as
dd is running)
$ sudo dd if=/dev/sdX of=image.dd bs=1M status=progress
X with your drive letter. (You can find it out with
2. Perform file recovery
There are plenty of recovery applications, personally I find that
foremost work best.
photorec is usually part of the
testdisk package. On debian, you can install both as followed:
$ sudo apt-get install testdisk foremost
$ photorec image.dd now to open up photorec's interactive interface.
Hit return (
[Proceed]) to select the disk image. In the next screen, you're asked to select a partition. If photorec finds the correct partitions, you can select the one you want to recover the files from here. If it doesn't detect the partitions properly, simply select
No partition [Whole disk] and hit return again to perform the
[Search]. Once selected the filesystem type in the next screen, you need to select a directory in which the recovered files should be saved. Confirm with
Once it's done, proceed with step 3.
While photorec works by trying to find "data blocks" of the drive and media within using file carving, foremost does it a bit differently. It's still using the file carving concept but it ignores the type of underlying filesystem and directly works by copying segments of the drive into your RAM, which is then being scanned for file header types. Foremost comes with a lot of built-in headers to recover most types of common files, if you want to add custom headers/footers to detect less common file types, foremost offers you this ability.
To run foremost using the default options on the image, run the following command:
$ foremost -i image.dd -v
That will save all recovered files into
output (new directory that foremost will create). You can specify another output directory using the
-o flag, and
-a to ignore errors/save corrupted files.
3. Filter the recovered files
This is optional, but sometimes you are only interested in specific types of files, or even worse: Recovery tools give you a million of files out of which thousands appear to be, for example, a JPEG file, but in reality it's just a corrupted file and not a picture at all. To filter these out you can use this answer I gave to another question on SuperUser.