GNU/Linux >> Znalost Linux >  >> Linux

extrahujte jeden soubor z velkého souboru tgz

Bohužel za účelem rozbalení jednoho člena .tar.gz archiv musíte zpracovat celý archiv a pro jeho opravu toho moc udělat nemůžete.

Zde je .zip (a některé další formáty jako .rar ) archivy fungují mnohem lépe, protože zip formát má centrální adresář všech souborů v něm obsažených s přímými posuny směřujícími do středu zip soubor, takže členy archivu lze rychle extrahovat bez zpracování celé věci.

Můžete se zeptat, proč zpracovávám .tar.gz je tak pomalý?

.tar.gz (často zkráceno jako .tgz ) je jednoduše .tar archiv komprimovaný pomocí gzip kompresor. gzip je streamovací kompresor, který může pracovat pouze s jedním souborem. Pokud chcete získat jakoukoli část gzip stream, musíte ho dekomprimovat jako celek a to je to, co ho skutečně zabije pro .tar.gz (a pro .tar.bz2 , .tar.xz a další podobné formáty založené na .tar ).

.tar formát je ve skutečnosti velmi, velmi jednoduchý. Je to jednoduše proud 512bajtových záhlaví souboru nebo adresáře (jméno, velikost atd.), za každým následuje obsah souboru nebo adresáře (v případě potřeby doplněn na velikost bloku 512 s 0 bajty). Když u záhlaví pozorujete zcela nulový blok 512, znamená to konec .tar archiv.

Někteří lidé si myslí, že dokonce .tar Členové archivu nejsou rychle přístupní, ale to není úplně skutečný. Pokud .tar archiv obsahuje málo velkých souborů, ve skutečnosti můžete rychle vyhledat další záhlaví, a tak můžete najít potřebného člena archivu v několika málo hledáních (ale stále může vyžadovat tolik hledání, kolik je členů archivu). Pokud je vaše .tar archiv obsahuje spoustu malých souborů, to znamená, že rychlé vyhledání členů je prakticky nemožné i pro nekomprimované .tar .


Pokud extrahujete pouze jeden soubor z velkého souboru tar, používáte GNU tar , a můžete zaručit, že soubor tar nebyl nikdy připojen k pak můžete dosáhnout výrazného zvýšení výkonu pomocí --occurrence .

Tato možnost říká taru, aby se zastavil, jakmile najde první výskyt každého požadovaného souboru, takže např.

tar xf large-backup.tar --occurrence etc/passwd etc/shadow

nebude procházet celým tarballem poté, co najde jednu kopii každého z passwd a shadow , místo toho se zastaví. Pokud se tyto soubory objeví blízko konce, nárůst výkonu nebude velký, ale pokud se objeví i v polovině 500G souboru, ušetříte spoustu času.

Pro lidi používající tar pro jednorázové zálohy a nepoužívání skutečných páskových jednotek je tato situace pravděpodobně typickým případem.

Všimněte si, že můžete také předat --occurrence=NUMBER načíst NUMBER. výskyt každého souboru, což pomáhá, pokud víte, že existují více verzí v archivu. Ve výchozím nastavení se chování rovná NUMBER z 1.


Při použití velkého tarballu:

--fast-read extrahovat pouze první záznam archivu, který odpovídá operandu názvu souboru, path/to/file v tomto případě – což je v tarballu stejně vždy jedinečné

tar -xvf file.tgz --fast-read path/to/file

výše bude hledat, dokud nenajde shodu, a poté skončí


Linux
  1. Tar:Extrahovat jeden soubor do adresáře bez vytváření podsložek?

  2. Chyba výstupu z archivu:Tar.xz:Formát souboru nebyl rozpoznán?

  3. Otevření souboru .tar.gz jediným příkazem

  1. Jak převést soubor Tar na soubor Tgz?

  2. Jak extrahuji jeden kus bajtů ze souboru?

  3. Formát indexovaného archivu?

  1. Jak extrahovat jeden atribut ze souboru XML?

  2. Jak extrahovat nebo rozbalit soubor tar.xz v Linuxu

  3. Chyba Tar:Neočekávané EOF v archivu