FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

Probleme mit gzip

Probleme mit gzip 2003-10-11 20:19
Digital Juhnke
Moin,

nachdem gestern nacht meine Platte angefangen hat komische Geräusche zu machen, hab ich heut mittels knoppix es noch geschafft die wichtigsten daten zu retten.
Ganz bedarflos hab ich allerdings einige Verzeichnisse einfach mit

gzip -cr Verzeichnis > Verzeichnis.gz
eingezippt.
Wenn ich sie jetzt auspacke, oh Graus, dann rieg ich nur die jeweils erste Datei. Die Grösse der Zipdatei stimmt allerdings mit dem eigentlichen Inhalt über ein.

HÜÜLFE!

Re: Probleme mit gzip 2003-10-11 20:21
TriPhoenix
[img]http://www.fb18.de/gfx/9.gif[/img] Hm wie hast du das denn geschafft? gzip packt nur eine Datei. Wenn man mehr verpacken will muss man tar nehmen, gzip unterstützt leider nicht mehr als 1 Datei. Wenn du noch rankommst:

tar czvf verzeichnis.tar.gz verzeichnis

Re: Probleme mit gzip 2003-10-11 20:32
Popcorn
Juhnke, ist das eine Maxtor Platte?

Re: Probleme mit gzip 2003-10-11 20:35
Digital Juhnke
Ne das ist ne Seagate.
Ja das mit dem tar hat ich mir schon gedacht. grrr.
Ich hab auch schon sciherheitshalber [img]http://www.fb18.de/gfx/8.gif[/img] alles mit Nullen überschrieben. Tja so ein scheiss.
Kennt hier denn irgendjemand 'n vernünftiges RescueTool ?

Re: Probleme mit gzip 2003-10-11 20:39
TriPhoenix
Ich fürchte so aufm Heimrechner wirds schwer, die übeschriebenen Stellen zu recovern. Aber wennd ie Datei so groß ist wie sie soll (hab das gerade mal zuhause nachprobiert), würde ich davon ausgehen, dass jelgicher content gegzipt hintereinander geklebt hägnt. SO findet man z.B. dass genau in anzahl der files die signatur 1F 8B 08 08 vorkommt (Edit: nur die ersten drei sidn als signatur zu gebrauchen). Kurz danach der originalname. Verloren ists noch nicht.

Jetzt muss man nur noch:
Anhand der Signatur splitten, hoffen dabei wirklcih nu signaturen zu erwischen und dann mit der option -N entpacken (stellt den Namen wieder her).

Re: Probleme mit gzip 2003-10-11 20:46
Digital Juhnke
Hast du zufällig ne coole Idee, wie das am elegantesten geht ?

Re: Probleme mit gzip 2003-10-11 21:11
TriPhoenix
Hast du zufällig ne coole Idee, wie das am elegantesten geht ?

ALso elegant ists bestimmt nicht [img]http://www.fb18.de/gfx/28.gif[/img] Es hat in meinem test alles bis aufs letzte file immerhin retten können. Versuch macht kluch.

gzipsplit.c
#include <stdio.h> int main(int argc, char *argv[]) { char curoutfile[1024]; FILE *infile = NULL, *outfile = NULL; unsigned char buf[4] = {0, 0, 0, 0}; int filenum = 0; if (argc != 2) { printf("usage: gzipsplit <filename>\naborting...\n"); return 1; } // open file printf("processing %s...\n", argv[1]); infile = fopen(argv[1], "rb"); if (!infile) { printf("couldn't open input file\naborting...\n"); return 2; } // prefill buffer fread(buf, 1, 4, infile); while (!feof(infile)) { if ((buf[0] == 0x1f) && (buf[1] == 0x8b) && (buf[2] == 0x08) && (buf[3] == 0x08)) { filenum++; if (outfile) fclose(outfile); sprintf(curoutfile, "recover_%06d.gz", filenum); printf("creating output file %s\n", curoutfile); outfile = fopen(curoutfile, "wb"); if (!outfile) { printf("couldn't open output file\naborting...\n"); } } // write one byte fwrite(buf, 1, 1, outfile); buf[0] = buf[1]; buf[1] = buf[2]; buf[2] = buf[3]; // read one byte fread(&buf[3], 1, 1, infile); } printf("done"); fclose(infile); fwrite(buf, 1, 4, outfile); fclose(outfile); return 0; }
läuft unter jedem guten Unix und auch unter manchen Windoofs. Kompilieren mit
gcc gzipsplit.c -o gzipsplit

ausführen mit
./gzipsplit foobar.gz

raus kommen ganz viele rescue_xxxxxx.gz (ich war zu faul, den namen auch noch auszulesen) die im aktuellen verzeichnis landen, die man dann per
gunzip -N *.gz
entpacken können sollte (vorsicht, nimm die "originaldatei" vorher raus aus dem verzeichnis).

Re: Probleme mit gzip 2003-10-11 21:28
Digital Juhnke
Coolio, funzt super. Bei der letzten Datei hängt 0x00 zuviel dran. werd mal biscchen frickeln. Bene Grazie. [img]http://www.fb18.de/gfx/28.gif[/img]