Gjenskape (berge) en fil i Linux

Har du noe lurt å dele med oss? NB. Dette er ikke et support forum.

Gjenskape (berge) en fil i Linux

Innleggav terjejh » lør 07.04.2007 4:01

Man holder på med et dokument, uhellet er ute og man mister en fil pga følgende:
- applikasjonen havarerer før lagring
- man kvitter uten å lagre
- man overskriver en fil man nettopp hadde åpen

Selv om man mister det som var på skjermen, kan innholdet fortsatt finnes i minnet med mulighet for å gjenskapes (berges), helt eller delvis. Avgjørende for et vellykket resultat, er å gå rett på bergingsoperasjonen, før det frigjorte minnet blir overskrevet med annet innhold.

Eksempel:
Jeg simulerer ovennevnte uhell ved å starte OpenOffice Writer 2.1 på openSUSE 10.2 og tar opp en tekstfil jeg har lagret fra før. Teksten i fila begynner med ordet Tynnklient. Så kvitter jeg OOo Writer.

1) Første trinn ligger nå i å lese ut all lesbar tekst fra minnet og skrive den til en temporær fil på disk. strings kommandoen synes å hente ut ascii tekst uten æøå *). Er her root i en terminal og står på et område som har plass nok for å lagre fila med minneinnholdet:
(NB! det tar noe tid avhengig av minnestørrelsen og innholdet):
Kode: Merk alt
# strings /dev/mem > memory.bin


I mitt tilfelle var den originale tekstfila på 8 kB, mens memory.bin fra minnet blir på 130 MB. Dette er likevel langt mindre, enn om jeg bruker cp kommandoen fra minnet, noe som i mitt tilfellet gir en fil på 524 MB (lik minnestørrelsen).

2) Trinn to er å åpne fila memory.bin med kommandoen less. (NB! Fila er gjerne stor, derfor "less"). Avbryt automatisk oppstart av telling av antall linjer med Ctrl+C
Kode: Merk alt
# less memory.bin


3) Trinn tre er å starte et søk med / og skrive et nøkkelord man vet var i teksten. Jeg bruker /Tynnklient. Søk neste med bare / og Return inntil rette tilslag finnes. I mitt tilfelle hadde jeg 8-10 tilslag på ordet Tynnklient i fila memory.bin, før jeg kom til den teksten jeg skulle ha. All råtekst kommer i en sammenhengende bolk (uten blanke linjer). Nå er det bare å merke og kopiere fra terminalvinduet og så lime inn igjen i tekstapplikasjonen det man skal ha.

Jfr. snapshot av terminalvinduet. Tynnklientløsning mangler bokstaven ø som nevnt *):

Bilde

EDIT:
*) strings er et godt verktøy for å strippe ut lesbare tegn fra binærfiler.
"man strings" viser at opsjonen "-e" (strings -e) benyttes for encoding. Kanskje andre her på forumet kan tilføye/avklare om/hvordan dette eventuelt kan få med æøå ;)


Eksemplet her er basert på et "Cool solution tip" dokument fra Novell: "Recovering a File in Linux"
http://www.novell.com/coolsolutions/tip/18724.html
Sist endret av terjejh den søn 08.04.2007 22:56, endret 2 ganger.

Erfaren
Brukerens avatar
medlem i 216 måneder
 

kult

Innleggav dajomu » søn 08.04.2007 18:24

Veldig stilig!
Kommer sikkert til nytte en eller annen dag.

Brukerens avatar
medlem i 224 måneder
 


Returner til Tips og triks / Favoritter



Hvem er i Forumene

Registrerte brukere: Google [Bot]