rembourrage de goudron avec des zéros

10

Lors de l'exécution d'un tar sur un fichier compressé bz2, je rencontre l'erreur suivante,

tar: dump.sql: fichier réduit de 19573448400 octets; rembourrage avec des zéros

Quelqu'un peut-il indiquer la cause de ce problème?

Merci.

Iliyas Shirol
la source

Réponses:

8

Ce n'est pas une erreur. C'est INFO.

Je suis prêt à parier que vous compressez / décompressez une image de machine virtuelle, ou un fichier autrement peu alloué.

Bzip2 a détecté que le fichier est principalement composé de zéros et l'a compressé afin qu'il ne se trouve pas dans le fichier compressé.

Il s'agit de la différence entre la taille réelle et la taille apparente des fichiers épars.

Tom O'Connor
la source
J'ai trouvé un fil qui corrobore utilement et explique plus en détail: groups.google.com/d/msg/comp.os.linux.misc/RES9Kvw7kO4/…
Martin Eden
1
Si ce n'est pas une erreur, pourquoi produit-il un code de sortie différent de zéro?
Ben Collins
Dans mon cas, le fichier .tar.bz2 contenait en fait des données corrompues: il contenait un tas d'octets NUL à l'emplacement indiqué dans le message, où il était censé contenir des données non nulles. Je ne sais pas pourquoi. Lorsque j'ai essayé de créer un autre .tar.bz2 à partir de ce fichier, cela a fonctionné correctement.
200_success
1
Cela m'est juste arrivé lors de la création d'une archive tar brute (non compressée). Certainement pas lié à bzip. Et de toute façon, l'encodage de la longueur d'exécution n'est pas vraiment inhabituel, donc ce n'est pas quelque chose que bzip dérangerait de signaler.
Wyatt8740
1

Le fichier en question a été appelé dump.sql, donc probablement pas un fichier compressé bz2. - Dans tous les cas, le problème n'a rien à voir avec bz2 ou le type de contenu du fichier.

Le message signifie qu'un stat()fichier dans le fichier a signalé une taille différente de la quantité qui pouvait réellement être lue dans le fichier. Cela peut se produire si le fichier a été modifié pendant tarson fonctionnement.

Cela se produit également sur des «fichiers virtuels» comme ceux du système de fichiers Linux / sys. Beaucoup d'entre eux sont signalés avec une taille de 4096 octets (une valeur arbitraire). Une fois read(), ils ne renvoient que quelques octets.

Robert Siemer
la source