Co přesně je GNU tar ././@LongLink „trik“?

hlasů
14

Četl jsem , že tar typ vstupu ‚L‘ (76) se používá GNU tar a gnu kompatibilních dehtu nástrojů, které naznačují, že další záznam v archivu má „dlouhé“ jméno. V tomto případě se hlavička blok s typem vstupu z ‚L‘ obvykle kóduje název ././@LongLink.

Moje otázka zní: pokud je formát dalšího bloku je popsáno?

Formát archivu tar je velmi jednoduchá: je to jen řada 512 bajtů bloky. V normálním případě, každý soubor v archivu tar je reprezentován jako série bloků. První blok je blok záhlaví, který obsahuje název souboru, typ záznamu, modifikovaný času a další metadata. Pak následuje data raw souborů pomocí tolik 512 bajtové bloky, jak je požadováno. Pak další záznam.

Pokud je název souboru je delší, než se vejde do prostoru přiděleného v bloku záhlaví GNU tar zřejmě používá to, co je známé jako „././@LongLink triku“. Nemohu najít přesný popis toho.

Je-li typ položky je ‚L‘, jak mám vědět, jak dlouho bude „dlouhá“ filename je? Je dlouhý název omezena na 512 bajtů, jinými slovy, ať se vejde do jednoho bloku?

A co je nejdůležitější: pokud je to zdokumentováno?

Položena 16/01/2010 v 21:15
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
12

Pouhým pozorováním jediného archivu tady je to, co jsem se domníval, o ‚L‘ vstupní typu v dehtových archivech, a „././@LongLink“ jméno:

Dále jen ‚L‘ entry je přítomen v záhlaví pro sérii 1 nebo více 512 bajtových bloků, které drží jen název pro soubor nebo adresář s názvem více než 100 znaků. Například, v případě, že jméno souboru je 1200 znaků dlouhé, pak se velikost v bloku záhlaví budou 1200, a tam bude 3 další bloky s názvem souboru dat; poslední blok je částečně vyplněna.

Následovat tuto sérii je další hlavička blok, v tradiční podobě - ​​hlavička s typem ‚0‘ (běžný soubor) nebo ‚5‘ (adresář), následuje odpovídající počet datových bloků s daty záznamu. V záhlaví tohoto seriálu, bude název zkrácen na prvních 100 znaků skutečného jména.

EDIT
Viz moje implementace zde: http://cheesoexamples.codeplex.com/SourceControl/changeset/view/99885#1868643

Odpovězeno 16/01/2010 v 23:37
zdroj uživatelem

hlasů
2

Všimněte si, že informace o všech, které lze nalézt v libtar projektu:

http://www.feep.net/libtar/

Navrhovaná záhlaví je libtar.h (na rozdíl od POSIX tar.h), který zřetelně obsahuje dlouhý název souboru, a dlouhé symbolický odkaz.

Získejte „fake“ hlaviček + data pro dlouhé názvy souborů / odkazy pak „skutečný“ záhlaví (s výjimkou pro aktuální název souboru a symbolický odkaz) po tom.

HEADER type 'L'
BLOCKS of data with the real long filename
HEADER type 'K'
BLOCKS of data with the real symbolic link
HEADER type '0' (or '5' for directory, etc.)
BLOCKS of data with the actual file contents

Samozřejmě, pod MS-Windows, pravděpodobně nebude zpracovávat symbolické odkazy, i když s Win7 se říká, že symbolické odkazy pod MS-Windows pracují (konečně).

Relevantní definice z libtar.h:

/* GNU extensions for typeflag */
#define GNU_LONGNAME_TYPE   'L'
#define GNU_LONGLINK_TYPE   'K'
Odpovězeno 20/06/2013 v 02:28
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more