Qu'est-ce que le "truc" GNU tar ././@LongLink?
J'ai lu qui un tar entrée de type " L " (76) est utilisé par gnu tar et gnu-conforme goudron utilitaires pour indiquer que l'entrée suivante dans l'archive a un "long" de nom. Dans ce cas, le bloc d'en-tête avec le type d'entrée de 'L' généralement de code le nom ././@LongLink .
Ma question est: où est le format de la bloc suivant décrit?
Le format d'une archive tar est très simple: c'est juste une série de blocs de 512 octets. Dans le cas normal, chaque fichier dans une archive tar est représenté comme une série de blocs. Le premier bloc est un bloc d'en-tête contenant le nom de fichier, type d'entrée, date de modification, et d'autres métadonnées. Ensuite, le fichier raw de données suit, en utilisant autant de blocs de 512 octets comme requis. Alors la prochaine entrée.
Si le fichier est plus long qu'à l'adaptation de l'espace alloué dans le bloc d'en-tête, gnu tar utilise apparemment ce qui est connu comme "le ././@LongLink truc". Je ne peux pas trouver une description précise.
Lorsque l'entrée est de type 'L', comment puis-je savoir combien de temps le "long" nom de fichier est? Est le nom long limitée à 512 octets, en d'autres termes, ce qui s'inscrit dans un bloc?
Le plus important: où cela est-il documenté?
source d'informationauteur Cheeso
Vous devez vous connecter pour publier un commentaire.
Juste par l'observation d'une seule archive, voici ce que je pensais à propos de la 'L' type de l'entrée dans les archives tar, et le "././@LongLink" nom:
'L' entrée est présente dans un en-tête pour une série de 1 ou plusieurs blocs de 512 octets qui détiennent simplement le nom de fichier pour un fichier ou un répertoire avec un nom de plus de 100 caractères. Par exemple, si le nom de fichier est de 1200 caractères, la taille du bloc d'en-tête sera de 1200, et il y aura 3 blocs supplémentaires avec le nom de fichier de données; le dernier bloc est partiellement rempli.
Suite de cette série c'est un autre bloc d'en-tête, dans la forme traditionnelle - un en-tête de type '0' (fichier régulier) ou '5' (répertoire), suivi par le nombre de blocs de données avec les données d'entrée. Dans l'en-tête de cette série, le nom sera tronqué pour les 100 premiers caractères du nom réel.
MODIFIER
Voir mon œuvre ici:
http://cheesoexamples.codeplex.com/SourceControl/changeset/view/99885#1868643
Noter que les informations à propos de tout cela peut être trouvé dans la libtar projet:
http://www.feep.net/libtar/
Le projet d'en-tête est libtar.h (opposé à POSIX goudron.h) comprend un nom de fichier long, et long lien symbolique.
Obtenir le "faux" en-têtes + données pour les longs noms de fichiers/liens, puis le "réel" de l'en-tête (sauf pour le nom de fichier et le lien symbolique).
Bien sûr, sous MS-Windows, vous n'aurez probablement pas gérer les liens symboliques, bien qu'avec Win7, il est dit que les liens symboliques sous MS-Windows sont de travail (enfin.)
Définition pertinente de libtar.h: