Linux: Kniha kouzel, vanilková příchuť 1.17 (27. února 2022)
Veškerá moc příkazové řádky/příkazového řádku přehledně, pro začátečníky i pokročilé

12. Práce s archivy

Řada 1.x vanilkové příchuti Linuxu: Knihy kouzel je od 1. října 2020 do 1. března 2023 ve stavu dlouhodobé pasivní údržby; nahlášené chyby budou opravovány, ale aktivní vývoj se již věnuje novější vývojové řadě určené pro novější verze operačního systému a programů. Pokud nejste vázáni na starší verze programů, doporučuji vyhledat novou verzi z aktivně vyvíjené vývojové řady.
komprese tematický okruh zip

1. Úvod

Tato kapitola uvádí univerzální nástroje pro balení a rozbalování archivů v mnoha různých formátech a specificky se věnuje nejrozšířenějším formátům .7z, .zip, .tar, .gz a .tar.gz.

Univerzální nástroje (např. apack a aunpack) nepracují s archivem samy; místo toho pouze podle přípony rozpoznají jeho typ a zavolají odpovídající nástroj, je-li v systému nainstalovaný. Oproti tomu příkazy pro práci s určitým typem archivu (např. 7z, tar či zip) pracují s archivem samy.

Tato kapitola se nezabývá zálohováním ani správou verzí. Nepokrývá práci s obrazy souborových systémů ani různé typy softwarových balíčků (např. .deb či .rpm). Nezabývá se konverzí jednoho archivního formátu na jiný.

Tato verze kapitoly nepokrývá formát SquashFS.

Poznámka: Použití „souborů se seznamem“ při psaní této kapitoly nebylo testováno.

2. Definice

3. Zaklínadla

3/1 Univerzální nástroje

rozbalit archiv#1 (1)
aunpack [-X cílová/cesta] archiv.přípona
vybalit soubor či adresář#2
aunpack [-X cílová/cesta] archiv.přípona cesta/v/archivu
vytvořit nový archiv a uložit do něj soubory a adresáře#3
apack archiv.přípona cesta
vypsat soubory a adresáře v archivu (pro člověka)#4 (2)
als archiv.přípona
vypsat soubory a adresáře (pro skript)#5
vybalit konkrétní soubor na standardní výstup#6
acat archiv.přípona cesta/v/archivu
vypsat jen strukturu adresářů v archivu#7
vytvořit nový archiv a uložit do něj soubory (vstup ve formátu find -print0)#8
zdroj | apack -0 archiv.přípona
porovnat obsahy odpovídajících souborů ve dvou archivech#9
adiff archiv.přípona druhý-archiv.přípona

3/2 7Z

Příkaz „7z“ primárně podporuje formát .7z, ale podle manuálové stránky umí vytvořit také archivy formátů .bz2, .gz, .tar, .wim, .xz a .zip a rozbalit mnoho dalších formátů (ačkoliv na některé z nich volá externí programy).

rozbalit archiv#1
7z x [-ocílový/adresář] archiv.přípona
vybalit soubor či adresář (alternativy)#2 (3)
7z x [-spd] [-ocílový/adresář] archiv.přípona vzorek/cesty/v/archivu
7z x [-spd] [-ocílový/adresář] archiv.přípona @soubor-se-seznamem
vybalit konkrétní soubor na standardní výstup#3
7z x -so [-spd] archiv.přípona cesta/v/archivu
vytvořit archiv a uložit do něj soubory či adresáře (alternativy)#4
7z a -spd archiv.přípona cesta
7z a -spd archiv.přípona @soubor-se-seznamem
vypsat soubory a adresáře v archivu (pro člověka)#5
7z l archiv.přípona
přidat soubory či adresáře do archivu#6
7z a -spd archiv.přípona cesta
7z a -spd archiv.přípona @soubor-se-seznamem
smazat soubory či adresáře z archivu (alternativy)#7
7z d [-spd] archiv.přípona cesta/v/archivu
7z d [-spd] archiv.přípona [@soubor-se-seznamem]
vytvořit archiv, uložit do něj soubory či adresáře a ochránit heslem#8 (4)
7z a -p -spd [-mhe=on] archiv.přípona cesta
7z a -p -spd [-mhe=on] archiv.přípona @soubor-se-seznamem
otestovat integritu archivu#9
7z t archiv.přípona

3/3 TAR

rozbalit archiv#1
tar x[v]f archiv.tar
vybalit soubor či adresář#2
tar x[v]f archiv.tar cesta/v/archivu
vybalit konkrétní soubor na standardní výstup#3 (5)
tar xOf archiv.tar cesta/v/archivu
vytvořit archiv a uložit do něj soubory a adresáře#4
tar c[v]f archiv.tar cesta
vypsat soubory a adresáře v archivu#5
tar tf archiv.tar
přidat soubory či adresáře do archivu#6 (6)
tar r[v]f archiv.tar cesta
smazat soubory či adresáře z archivu#7
tar --delete --file archiv.tar cesta/v/archivu
otestovat integritu archivu#8 (7)
tar tf archiv.tar >/dev/null

3/4 GZIP

vybalit soubor (archiv smazat/ponechat)#1
gunzip soubor
gunzip -k soubor
zabalit soubor (původní soubor smazat/ponechat)#2
gzip [-9] soubor
gzip -k [-9] soubor
vybalit soubor na standardní výstup#3
zcat archiv.gz
zabalit soubor ze standardního vstupu#4
zdroj | gzip [-9] > archiv.gz
použití v rouře (zabalit/vybalit)#5
zdroj | gzip [-9] | cíl
zdroj | gunzip | cíl
otestovat integritu archivu#6
gzip -t archiv.gz

3/5 TAR + GZIP

rozbalit archiv#1
tar x[v]zf archiv.tar
vybalit soubor či adresář#2
tar x[v]zf archiv.tar cesta/v/archivu
vybalit soubor na standardní výstup#3
tar xOzf archiv.tar.gz cesta/v/archivu
vytvořit nový archiv a uložit do něj soubory a adresáře#4
tar c[v]zf archiv.tar.gz cesta
vypsat soubory a adresáře v archivu#5
tar tzf archiv.tar.gz
přidat soubory či adresáře do archivu#6
gunzip archiv.tar.gz
tar r[v]f archiv.tar cesta
gzip [-9] archiv.tar
smazat soubory či adresáře z archivu#7
cp archiv.tar.gz archiv.tar.gz.old
zcat archiv.tar.gz.old | tar --delete cesta/v/archivu | gzip [-9] > archiv.tar.gz
rm archiv.tar.gz.old

3/6 ZIP

rozbalit archiv#1
unzip [-d cílový/adresář] archiv.zip
vybalit soubor či adresář#2
unzip [-d cílový/adresář] archiv.zip vzorek/cesty
vybalit soubor na standardní výstup#3
unzip -p archiv.zip vzorek/cesty
vytvořit nový archiv a uložit do něj soubory a adresáře#4
zip -r archiv.zip cesta
vytvořit nový archiv, uložit do něj soubory a adresáře a ochránit heslem#5
zip -re archiv.zip cesta
vypsat soubory a adresáře v archivu#6
unzip -l archiv.zip
přidat další soubory či adresáře#7
zip -r archiv.zip cesta
přidat další soubory či adresáře a ochránit heslem#8 (8)
zip -re archiv.zip cesta
smazat z archivu soubory a adresáře#9
zip -d archiv.zip vzorek/cesty

4. Instalace na Ubuntu

Nástroje tar, gzip a zip jsou již součástí minimální instalace Ubuntu. Nástroje apack, aunpack a 7z je nutno nainstalovat:

apack, aunpack apod., 7z#1
sudo apt-get install atool p7zip-full
[sudo apt-get install arc arj lzip lzop march rpm unace unalz]
pro plnou podporu formátu RAR (vyžaduje nesvobodný balíček!)#2
sudo apt-get install rar
pro svobodnou podporu formátu RAR (pouze vybalování a vypsání obsahu)#3
sudo apt-get install unrar-free
sudo ln -s /etc/alternatives/unrar /usr/local/bin/rar
pokud se později rozhodnete přejít na nesvobodný balíček#4
sudo rm -f /usr/local/bin/rar
sudo apt-get purge unrar-free
sudo apt-get install rar

5. Ukázka

mkdir "Žluťoučký kůň"
printf %s\\n "žluťoučký kůň" "ŽLUŤOUČKÝ KŮŇ" >"Žluťoučký kůň/příšerně úpěl.txt"
apack "žluťoučký kůň příšerně úpěl.7z" "Žluťoučký kůň"
rm -R "Žluťoučký kůň"
ls -l
aunpack "žluťoučký kůň příšerně úpěl.7z"
ls -l "Žluťoučký kůň"
cat "Žluťoučký kůň/příšerně úpěl.txt"
printf %s\\n "Nový soubor" >"Žluťoučký kůň/nový.txt"
7z a -p -spd "žluťoučký kůň příšerně úpěl.7z" "Žluťoučký kůň/nový.txt"
Zadejte dvakrát po sobě stejné heslo (např. „abc“).
rm -R "Žluťoučký kůň"
aunpack "žluťoučký kůň příšerně úpěl.7z"
Zadejte vámi zvolené heslo.
ls -l "Žluťoučký kůň"

6. Tipy a zkušenosti

7. Další zdroje informací

man 7z
man atool
man zip
man unzip
1 Neuvedete-li parametr „-X“, extrahované soubory se umístí do nového podadresáře se jménem odvozeným od jména archivu, s výjimkou případu, že archiv obsahuje ve svém kořeni pouze jeden soubor či adresář. V tomto případě se daný soubor či adresář vybalí přímo do aktuálního adresáře.
2 Formát výstupu je závislý na typu archivu; proto není úplně vhodný pro zpracování skriptem.
3 Volba -spd vypne intepretaci vzorků v cestách. Při zadávání cest mimo archiv je to žádoucí, protože zde vzorky obecně intepretuje už příkazový interpret a není žádoucí, aby je 7z interpretoval znovu, ale u cest v archivu je nutné je interpretovat na straně 7z, takže pokud nehodláte vybalovat soubory, které ve svých názvech obsahují otazníky, hvězdičky či hranaté závorky, je vhodnější tento parametr vynechat.
4 Ověřeno na Ubuntu 18.04, že tato ochrana heslem je kompatibilní s programem 7-Zip na Windows 7.
5 Zadáte-li k rozbalení víc souborů, tar je vypíše v pořadí, v jakém jsou uloženy v archivu; ne v pořadí, v jakém jste je zadal/a.
6 Pozor, pokud soubory v archivu již existují, přidají se znovu, takže skončíte s archivem, ve kterém je několik souborů identifikovaných stejnou cestou. S takovým archivem se pak obtížně pracuje.
7 Poznámka: tar implementuje jen velmi slabou kontrolu, takže neodhalí náhodné porušení archivu. Dokáže ale odhalit, že archiv byl zkrácen nebo přepsán zcela nesmyslnými daty. V takovém případě vypíše hlášení na standardní chybový výstup a vrátí návratový kód 2.
8 Oveřeno na Ubuntu 18.04, že tato ochrana heslem je kompatibilní s Windows 7.
Správa procesůMarkdownZpracování textových souborů