Fin de fichier inattendue. Fichier compressé Gzip


16

Je deviens fou avec un fichier gzip.

Je peux décompresser le fichier sous Windows en utilisant WinRAR mais il est impossible sur n'importe quel système d'exploitation UNIX.

le fichier semble correct. Si je fais

file the_name_of_the_file.gz

Je reçois:

the_name_of_the_file.gz: gzip compressed data, from Unix, last modified: Sun Jan 30 14:10:21 2011

Mais si je le fais

gunzip -f the_name_of_the_file.gz

Je reçois toujours:

gzip: the_name_of_the_file.gz: unexpected end of file

Le même problème se produit lorsque j'essaie d'extraire le fichier à l'aide de l'outil GUI dans Ubuntu ou MacOSX,

Des idées?


S'agit-il du même fichier exact (c'est-à-dire que vous l'avez sur un lecteur flash et que vous l'avez ouvert à partir des deux systèmes d'exploitation) ou le téléchargez-vous individuellement? Si ce dernier, vous pourriez avoir un téléchargement incomplet qui ne contient pas toutes les données (aka, corrompu).
Freesnöw

1
La filecommande ne vérifiera pas tout le fichier. Il suffit de regarder quelques octets dans l'en-tête pour comprendre qu'il s'agit d'un gzfichier codé.

Il n'est pas corrompu car j'ai essayé d'abord sous Unix puis plus tard sous Windows.
cues7a

Avez-vous créé le fichier gzip? Si oui, quel système d'exploitation et application avez-vous utilisé pour créer le fichier gzip?
dim

Réponses:


5

Une solution de contournement pour décompresser un fichier en cas d' gzipéchec avec «fin de fichier inattendue» est d'utiliser zcat(également généralement fournie par le package gzip de votre distribution).

$ zcat file.raw.gz > file.raw


2

Avez-vous par hasard transféré le fichier de Win * vers Unix via ftp en mode ascii? Cela peut l'expliquer. Le fichier a-t-il la même taille sous Win * et Unix?


J'ai essayé de décompresser le fichier d'abord sous Windows puis sous Unix.
cues7a

1

Je soupçonne que vous corrompez le fichier lorsque vous le copiez sur la machine * nix.

FTP il en mode binaire.


Je pense que le fichier n'est pas corrompu parce que j'ai essayé de le tirer avec poing sous Unix et plus tard sous Windows.
cues7a

1
Ce que vous dites n'a aucun sens. Si vous n'avez pas besoin de créer une copie du fichier, dites-le. Si vous l'avez fait, votre processus de copie (FTP?) Était peut-être incorrect.
Robin Green

J'ai transféré le fichier via clé USB. J'ai d'abord essayé sous UNIX et cela n'a pas fonctionné, puis j'ai essayé sous Windows et cela a fonctionné.
cues7a

1

J'ai résolu le problème en utilisant l'utilitaire P7zip , un port de 7za.exe pour les systèmes POSIX.


Donc, vous dites que le fichier archivé a utilisé une méthode de compression qui n'est pas reconnue par les outils Unix hérités?
dim

0

Basé sur quelques expériences avec WinRar, ma première supposition est qu'il extrait des fichiers incomplets ou corrompus sans donner d'erreur, tandis que gzip donne (correctement) une erreur.

Que fait 7zip de votre fichier?

Quelle version gzip -Vannonce?

Qu'est-ce que ça gzip -t the_name_of_the_file.gzvous dit? (probablement le même EOF inattendu, mais mérite un essai)


gzip -V: gzip 1.3.12 ,, gzip -t the_name_of_the_file -> EOF inattendu
cues7a

0

J'ai eu le même problème et, dans mon cas, c'était dû au fait que le fichier était un fichier vide (0 octet) gz, créé avec la touchcommande:

$touch file.txt.gz
-rw-r--r-- 1 user user    0 2016-05-24 11:48 file.txt

gzip ne pouvait pas le décompresser, lorsqu'il était appelé avec la commande:

$gzip -dv file.txt.gz
gzip: file.txt.gz: unexpected end of file

La manière correcte de représenter un txtfichier vide aurait été de générer d'abord le txtfichier, puis de le compresser et, enfin, de le décompresser:

$touch file.txt

$gzip -v file.txt
file.txt:         0.0% -- replaced with file.txt.gz

$gzip -dv file.txt.gz
file.txt.gz:      0.0% -- replaced with file.txt

Je ne sais pas si ce scénario représente votre cas, mais il peut vous donner un indice ou aider quelqu'un d'autre.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.