Återskapa filer efter formatering av kameraminne?

Här behandlar vi ritprogram, program för fotoretuschering, bildhantering och liknande. Vänligen observera att trådar rörande grafikkort hör hemma i Hårdvara och drivrutiner!
Kategoriregler
Här behandlar vi ritprogram, program för fotoretuschering, bildhantering och liknande. Vänligen observera att trådar rörande grafikkort hör hemma i Hårdvara och drivrutiner!
ErikH
Inlägg: 151
Blev medlem: 16 jan 2010, 19:17
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Gävle

Återskapa filer efter formatering av kameraminne?

Inlägg av ErikH »

Hej.

Jag har av misstag formaterat SD-minnet med semesterbilder i min kamera. Efter mitt misstag har jag lämnat SD-minnet orört och inte lagt in några nya bilder. Kan jag på något sätt "sona mitt brott" och återskapa bilderna med hjälp av Ubuntu?

Hälsningar
Erik
revoltism
Inlägg: 612
Blev medlem: 20 jan 2008, 15:30
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Re: Återskapa filer efter formatering av kameraminne?

Inlägg av revoltism »

Testdisk borde troligen lösa ditt problem.
|- Grafikkort: ATI Radeon X1950 Pro - Moderkort: Asus P5W DH Deluxe - Skärm: LG L225W - Tangentbord: Logitech DiNovo Edge - Mus: Logithech MX Revolution -|
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Återskapa filer efter formatering av kameraminne?

Inlägg av David Andersson »

Det finns flera program i ubuntus förråd. Programmet photorec i paketet testdisk är en av dem. Jag har också provat foremost (i paketet foremost) och recoverjpeg (i paketet recoverjpeg).

Det finns instruktioner på engelska för alla tre programmen här: https://help.ubuntu.com/community/DataRecovery (se innehållsförteckningen till höger).

Det underlättar troligen om du först gör en kopia (image, avbildning) av hela SD-minnet till hårddisken. Även det står i https://help.ubuntu.com/community/DataRecovery (Imaging a damaged drive), men eftersom minnet inte är trasigt kan man göra det lite enklare med bara kommandot dd.

Börja med att kopiera hela SD-minnet till en fil, låt säga sdminne.img, på hårddisken, och använd sedan en, två eller alla tre program för att rädda bilder från sdminne.img. Om du väljer att använda flera program (som ibland kompletterar varandras resultat) så kan du efteråt använda programmet fdupes (i paketet fdupes) för att hitta och radera dubletter. Så alla återstående räddade bilder är unika.

Om du väljer att bara använda ett av programmen så skulle jag rekommendera foremost.

Ingen av programmen kan räkna ut vad filerna hette, så de återskapade bilderna har till synes slumpmässiga filnamn. Om det är viktigt kan vi försöka återställa originalfilnamnen med EXIF-data. Det borde vara möjligt eftersom det är kamerabilder.

Om filsystemet på SD-minnet var fragmenterad så får man vara beredd på att inte alla filer kan räddas.

Säj till om du behöver tydliga instruktioner för att köra kommandona dd, foremost, recoverjpeg, photorec och/eller fdupes. (Alla körs i terminalen.)
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Återskapa filer efter formatering av kameraminne?

Inlägg av m!rage »

Jag simulerade ditt problem med mitt eget kamerakort (/dev/sdd). Först skapade jag en avbild av hela kortet:

Kod: Markera allt

sudo dd if=/dev/sdd of=sdd.img
Sedan skrev jag över filsystemet på avbilden med parted. Det ska naturligtvis inte du göra:

Kod: Markera allt

sudo parted sdd.img
GNU Parted 2.3
Using /home/anton/sdd.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help                                                             
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  check NUMBER                             do a simple check on the file system
  cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER   copy file system to another partition
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkfs NUMBER FS-TYPE                      make a FS-TYPE file system on partition NUMBER
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  mkpartfs PART-TYPE FS-TYPE START END     make a partition with a file system
  move NUMBER START END                    move partition NUMBER
  name NUMBER NAME                         name partition NUMBER as NAME
  print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
  quit                                     exit program
  rescue START END                         rescue a lost partition near START and END
  resize NUMBER START END                  resize partition NUMBER and its file system
  rm NUMBER                                delete partition NUMBER
  select DEVICE                            choose the device to edit
  set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
  toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
  unit UNIT                                set the default unit to UNIT
  version                                  display the version number and copyright information of GNU Parted
(parted) print                                                            
Model:  (file)
Disk /home/anton/sdd.img: 3965MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32,3kB  3965MB  3965MB  primary  fat16

(parted) mkfs 1 fat16
WARNING: you are attempting to use parted to operate on (mkfs) a file system.
parted's file system manipulation code is not as robust as what you'll find in
dedicated, file-system-specific packages like e2fsprogs.  We recommend
you use parted only to manipulate partition tables, whenever possible.
Support for performing most operations on most types of file systems
will be removed in an upcoming release.
Warning: The existing file system will be destroyed and all data on the partition will be lost. Do you want to continue?
parted: invalid token: 1
Yes/No? y                                                                 
Partition number? 1                                                       
File system type?  [ext2]? fat16                                          
(parted) print                                                            
Model:  (file)
Disk /home/anton/sdd.img: 3965MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      32,3kB  3965MB  3965MB  primary  fat16        lba

(parted) quit
Efter denna misshandel kunde Foremost utan problem återskapa filer från det förra filsystemet i avbilden:

Kod: Markera allt

sudo foremost -i sdd.img -o storkatalog/
Processing: sdd.img
|**************************************|
Även filer jag tidigare raderat återställdes. Filnamnen förstördes dock som sagt:

Kod: Markera allt

sudo ls -R storkatalog/
storkatalog/:
audit.txt  jpg

storkatalog/jpg:
00001722.jpg  00111418.jpg  00237754.jpg  00342330.jpg	00437434.jpg  00528058.jpg  00631866.jpg  00741434.jpg	00865978.jpg  00995130.jpg  01119034.jpg  01210938.jpg	01321658.jpg  01425210.jpg  01521850.jpg  01604538.jpg	06326202.jpg  06418106.jpg  06477626.jpg
00028346.jpg  00119354.jpg  00244666.jpg  00346938.jpg	00443962.jpg  00537786.jpg  00637626.jpg  00749882.jpg	00870714.jpg  01002682.jpg  01123642.jpg  01216698.jpg	01327418.jpg  01430842.jpg  01526458.jpg  01608634.jpg	06331962.jpg  06421690.jpg  06480698.jpg
00033466.jpg  00127802.jpg  00252090.jpg  00351162.jpg	00448954.jpg  00545722.jpg  00643130.jpg  00758586.jpg	00875578.jpg  01009722.jpg  01128506.jpg  01221946.jpg	01332538.jpg  01435578.jpg  01530554.jpg  01612730.jpg	06338490.jpg  06425402.jpg  06485306.jpg
00038970.jpg  00134714.jpg  00259258.jpg  00355898.jpg	00454074.jpg  00553786.jpg  00646458.jpg  00765626.jpg	00880442.jpg  01017018.jpg  01133754.jpg  01227578.jpg	01337786.jpg  01440442.jpg  01540154.jpg  01620922.jpg	06344890.jpg  06429754.jpg  06489274.jpg
00043834.jpg  00141498.jpg  00266810.jpg  00360506.jpg	00459194.jpg  00559674.jpg  00650042.jpg  00772538.jpg	00885690.jpg  01024442.jpg  01139002.jpg  01233338.jpg	01343034.jpg  01447098.jpg  01544250.jpg  01627706.jpg	06350522.jpg  06433082.jpg
00048826.jpg  00150330.jpg  00274362.jpg  00365242.jpg	00464314.jpg  00565434.jpg  00653754.jpg  00780346.jpg	00891066.jpg  01031610.jpg  01144890.jpg  01238970.jpg	01349818.jpg  01453498.jpg  01548986.jpg  04597050.jpg	06356538.jpg  06436794.jpg
00053434.jpg  00157114.jpg  00281530.jpg  00370234.jpg	00469818.jpg  00571194.jpg  00657850.jpg  00788282.jpg	00896698.jpg  01038906.jpg  01149626.jpg  01245882.jpg	01356602.jpg  01460282.jpg  01553722.jpg  04919738.jpg	06362938.jpg  06441274.jpg
00058554.jpg  00164410.jpg  00288698.jpg  00374970.jpg	00475066.jpg  00577338.jpg  00661946.jpg  00796090.jpg	00902458.jpg  01046842.jpg  01155130.jpg  01251514.jpg	01364026.jpg  01467322.jpg  01560890.jpg  04919866.jpg	06372026.jpg  06444986.jpg
00062906.jpg  00171066.jpg  00296506.jpg  00380986.jpg	00480186.jpg  00583226.jpg  00670778.jpg  00803642.jpg	00912698.jpg  01061434.jpg  01159482.jpg  01258426.jpg	01367866.jpg  01472698.jpg  01565370.jpg  04926394.jpg	06381242.jpg  06448186.jpg
00068026.jpg  00178746.jpg  00304314.jpg  00387770.jpg	00484794.jpg  00589242.jpg  00679482.jpg  00810554.jpg	00921658.jpg  01068858.jpg  01164602.jpg  01265082.jpg	01371834.jpg  01477818.jpg  01569722.jpg  04931386.jpg	06390970.jpg  06451386.jpg
00073274.jpg  00185914.jpg  00308282.jpg  00394810.jpg	00489658.jpg  00595002.jpg  00687802.jpg  00817082.jpg	00930234.jpg  01076282.jpg  01170106.jpg  01271866.jpg	01375546.jpg  01484602.jpg  01574074.jpg  04936506.jpg	06393146.jpg  06454586.jpg
00078522.jpg  00193210.jpg  00312634.jpg  00400826.jpg	00494522.jpg  00600378.jpg  00695610.jpg  00823738.jpg	00940090.jpg  01083962.jpg  01175482.jpg  01278394.jpg	01380666.jpg  01491130.jpg  01578426.jpg  04941754.jpg	06396474.jpg  06458298.jpg
00083514.jpg  00200762.jpg  00317242.jpg  00408890.jpg	00499514.jpg  00605882.jpg  00702522.jpg  00830010.jpg	00949690.jpg  01091898.jpg  01182010.jpg  01284922.jpg	01390010.jpg  01495994.jpg  01583546.jpg  04949946.jpg	06399418.jpg  06461370.jpg
00088506.jpg  00208314.jpg  00322234.jpg  00416826.jpg	00504634.jpg  00611002.jpg  00710458.jpg  00837434.jpg	00959546.jpg  01098298.jpg  01188282.jpg  01290938.jpg	01399354.jpg  01501626.jpg  01588026.jpg  06307642.jpg	06402874.jpg  06464442.jpg
00093498.jpg  00215610.jpg  00326970.jpg  00421946.jpg	00509754.jpg  00616250.jpg  00718394.jpg  00844858.jpg	00967610.jpg  01103802.jpg  01194682.jpg  01300026.jpg	01407930.jpg  01507258.jpg  01592250.jpg  06307770.jpg	06406202.jpg  06467898.jpg
00098746.jpg  00223546.jpg  00333370.jpg  00427066.jpg	00514618.jpg  00621498.jpg  00725946.jpg  00849594.jpg	00976826.jpg  01108666.jpg  01199290.jpg  01307322.jpg	01413306.jpg  01511866.jpg  01596346.jpg  06312762.jpg	06409402.jpg  06471610.jpg
00103994.jpg  00230458.jpg  00337850.jpg  00431930.jpg	00519354.jpg  00626746.jpg  00733370.jpg  00857530.jpg	00985914.jpg  01113018.jpg  01204922.jpg  01314362.jpg	01419706.jpg  01516858.jpg  01600314.jpg  06319162.jpg	06413370.jpg  06474682.jpg
Jag försökte sedan återskapa hela filsystemet med testdisk, men det lyckades inte riktigt. Testdisk hittade ett filsystem kallat 'FAT16 >32M', till skillnad från 'FAT16 LBA' som jag skapade med parted ovan. Att återställa detta gjorde dock ingen skillnad - filsystemet var fortfarande tomt. Vill du ändå prova kan du efteråt montera filsystem som finns inuti avbilden genom att först ladda ner, kompilera och installera Sleuth Kit (http://www.sleuthkit.org/sleuthkit/download.php):
Gömt innehåll: Visa!
  • tar xf sleuthkit-3.2.2.tar.gz
    cd sleuthkit-3.2.2/
    ./configure --prefix=/home/anton/bin/sleuthkit
    make -j4
    make install
Använd på följande vis:
cd /home/anton/bin/sleuthkit/bin
./mmls ~/sdd.img
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

Slot Start End Length Description
00: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000000 0000000062 0000000063 Unallocated
02: 00:00 0000000063 0007743329 0007743267 Win95 FAT16 (0x0E)
03: ----- 0007743330 0007744511 0000001182 Unallocated
Multiplicera start-värdet med 512 (sektorstorleken) enligt guiden David Andersson länkade till för att få 63*512=32256. Montera med kommandot:

Kod: Markera allt

sudo mount -o loop,offset=32256 -t vfat sdd.img /mnt/
Om filsystemet mot förmodan återställts hittar du nu innehållet i /mnt
Sammanfattningsvis skulle jag också rekommendera att du helt enkelt skapar en avbild med dd på samma sätt som jag gjorde, och därefter plockar ut alla filer som går med foremost. Eftersom detta även hittar dubletter som du (förhoppningsvis) redan kopierat till annan plats kan du hitta dessa med fdupes, exempelvis:

Kod: Markera allt

sudo fdupes -R storkatalog/jpg/ /sökväg/till/din/bildsamling/
Glöm inte sudo, eftersom endast root kan läsa de återställda filerna. Lycka till :)
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Återskapa filer efter formatering av kameraminne?

Inlägg av David Andersson »

m!rage skrev: Glöm inte sudo, eftersom endast root kan läsa de återställda filerna.
Det blir enklare att bara använda sudo framför dd, men inte framför foremost och fdupes. Då kan man hantera de räddade filerna som en vanlig användare utan extra krångel.
ErikH
Inlägg: 151
Blev medlem: 16 jan 2010, 19:17
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Gävle

Re: Återskapa filer efter formatering av kameraminne?

Inlägg av ErikH »

Tack för tipsen.

Jag har börjat jobba utifrån era förslag. Det ser inte helt bra ut.

erik@erik-laptop:~$ sudo dd if=/media/CANON_DC of=sdd.img
dd: läser "/media/CANON_DC": Är en katalog
0+0 poster in
0+0 poster ut
0 byte (0 B) kopierade, 0,00912294 s, 0,0 kB/s
erik@erik-laptop:~$ foremost -i sdd.img -o storkatalog/
Processing: sdd.img
||
erik@erik-laptop:~$ ^C
erik@erik-laptop:~$
m!rage
Inlägg: 2550
Blev medlem: 28 apr 2009, 21:47
OS: Arch Linux
Ort: Lund

Re: Återskapa filer efter formatering av kameraminne?

Inlägg av m!rage »

Du ska köra dd på själva enheten, inte mappen där minneskortet är monterat. Se mitt tidigare exempel:

Kod: Markera allt

sudo dd if=/dev/sdd of=sdd.img
En kort förklaring av kommandona kan nog vara på sin plats:
  • dd kopierar data i olika former från det som är angivet efter if till det som är angivet efter of. Här använder vi dd för att kopiera data från enheten /dev/sdd utan att ta hänsyn till filsystem eller annat, till en fil: sdd.img. Anledningen är att vi vill kopiera all rådata som finns på minneskortet, även filer som är raderade eller bortformatterade (eftersom det är dessa vi vill återskapa). sdd.img är ett filnamn jag bara hittade på, men du kan kalla filen för "minneskortsavbild" eller vad du vill.
  • foremost letar efter borttagna filer och återskapar dessa till en mapp som jag i mitt exempel angav till "storkatalog". Denna mapp måste existera så skapa den först (Platser->Hem, högerklicka och skapa ny mapp, döp till "storkatalog" eller vad du vill). Vi låter här foremost leta filer i en avbild av minneskortet, eftersom det är mindre riskfyllt än att arbeta direkt mot en enhet (exempelvis /dev/sdd) innehållandes data vi inte har kontroll över i nuläget.
Mitt minneskort låg under /dev/sdd men det varierar beroende på vilken dator du har, hur många hårddiskar och usb-minnen du har anslutna, i vilken ordning dessa anslöts och flera andra faktorer. För att ta reda på enhetsbeteckningen för just ditt minneskort använder du enklast kommandot mount när minneskortet är inpluggat. Du får då en utskrift över alla lagringsenheter som är monterade i systemet (varav vissa är virtuella, exempelvis proc och sysfs - dessa behöver du inte bry dig om). Bland alla rader finns en liknande denna:
/dev/sdc1 on /media/CANON_DC type vfat (rw,nosuid,nodev,uhelper=hal,uid=1000,shortname=winnt)
Jag hittade på att enheten är /dev/sdc och att dess partition är /dev/sdc1. I så fall ska du köra dd på hela enheten, exempelvis:

Kod: Markera allt

sudo dd if=/dev/sdc of=minneskortsavbild
Hittar du inte någon sådan rad så klistra in den fullständiga utskriften från mount i ett inlägg här så hjälper jag dig.

En sak till: Du måste troligtvis använda en riktig minneskortläsare och inte kameran kopplad till datorn, ifall det är så du gör nu. Jag har också en Canon-kamera och denna ger mig bara tillgång till mappen DCIM på minneskortet vilket inte är tillräckligt i detta fall.
ErikH
Inlägg: 151
Blev medlem: 16 jan 2010, 19:17
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Gävle

Re: Återskapa filer efter formatering av kameraminne?

Inlägg av ErikH »

:D :D

Hej och ett stort tack till alla som hjälpt mig. Nu har jag en mapp i min dator med alla filer återskapade. De har fått nya namn, men vad sjutton spelar det för roll. Jag låter dem få en egen mapp i min bildsamling. Övriga bilder brukar automatiskt lägga sig i datumordning. Kanske försöker jag vid senare tillfälle återskapa namnen, men det känns just nu som överkurs.

En en gång. Jag är mycket tacksam för den tid som lagts ned på att hjälpa mig.

/Erik
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Återskapa filer efter formatering av kameraminne?

Inlägg av David Andersson »

ErikH skrev: Hej och ett stort tack till alla som hjälpt mig. Nu har jag en mapp i min dator med alla filer återskapade. De har fått nya namn, men vad sjutton spelar det för roll.
Kul att det löste sig.
ErikH skrev: Övriga bilder brukar automatiskt lägga sig i datumordning. Kanske försöker jag vid senare tillfälle återskapa namnen, men det känns just nu som överkurs.
Alla räddningsprogram ovan bör klara att återskapa exif-data i jpeg-filer, d.v.s. där kameran sparar datum, blixt, fokus m.m. De flesta foto-hanterings-program kan visa bilderna i datum-ordning enligt exif-data, oavsett filnamn, så du har nog rätt i att fixa filnamnen är onödigt. Säg till om bilderna visas i fel ordning eller med fel datum, så löser vi det då (även om jag just nu inte kan komma på hur vi skulle kunna göra det).

Till sist, markera tråden som löst. Här ska finnas instruktion (har ej testat): http://ubuntu-se.org/phpBB3/viewtopic.php?f=208&t=44692
Skriv svar

Återgå till "Bildhantering"