Linux v příkazech - archivace a komprese
V tomto díle se seznámíme s příkazy pomocí kterých lze ukládat adresáře a soubory do archivu nebo je komprimovat.
15.9.2004 08:00 |
Petr Hatina
| Články autora
| přečteno 92499×
Pojem archivace a komprese
Jako archivaci rozumíme uložení kopie dat na jiné místo, nejčastěji pro
zálohování dat pro potřebu obnovy v případě zničení či poškození originálních
dat. Používá se rovněž pro distribuci.
Kompresí pak rozumíme (pro potřeby archivace) bezztrátové zmenšení velikosti
dat. Data jsou kompresním programem převedena do komprimovaného tvaru a
uložena ve zvláštním souboru. Pro zpřístupnění původních dat je třeba provést
opačnou operaci – dekomprimaci dat, která obnoví data do původního
souboru.
Komprese dat se rovněž používá velmi často, a to jak pro archivaci, tak pro
distribuci dat, výrazné zmenšení velikosti dat může být v případě
distribuce přes Internet dost rozhodujícím faktorem.
Program tar
S příkazem tar se asi budete setkávat nejčastěji, používá se jako standardní
archivační prostředek pro distribuci programů a zdrojových souborů v Linuxu.
Kromě toho s ním úzce spolupracují běžné kompresními programy.
Tar slouží k archivaci, k uložení určených souborů do jednoho soubor archivu.
Pokud je třeba kupříkladu archivovat celý adresář uživatele bu včetně
podadresářů, použije se příkaz:
V příkladu je použit parametr -c (tedy vytvoření archivu).
Vzhledem k tomu, že tar je původně určen pro archivaci na pásku, je nutné při
archivaci do souboru uvádět dále parametr -f jménosouboru archivu
. Parametr -v způsobí vypisování informací o průběhu
archivace.
Výsledkem je soubor bu.tar. Jeho obsah si můžeme vypsat příkazem
Pokud chceme, aby se současně při archivace provedla i komprese programem
gzip , zapneme jí parametrem -z .
tar -cvzf bu.tar.gz /home/bu
Výsledný archiv je nyní menší a má rozšířenou příponu .tar.gz ,
která signalizuje kompresi programem gzip .
Obdobně lze v programu tar provést kompresi pomocí bzip2 , pomocí
parametru -j . Výsledkem je soubor s příponou
tar.bz2 .
tar -cvjf bu.tar.gz /home/bu
Opačnou operaci, tj. obnovu dat z archivu do původního tvaru, provedeme s
pomocí parametru -x :
Pokud nemá archiv příponu jen tar , znamená to, že jeho obsah je
komprimován. Proto při obnovení přidáme parametr který současně provede i
dekomprimaci programem příslušným k uvedené příponě:
tar -xvzf bu.tar.gz #obnova souborů komprimovaných s gzip
tar -xvzf bu.tgz #to samé, jen je použit zkrácený tvar přípony
tar -xvjf bu.tar.bz2 #obnova souborů komprimovaných s bzip2
tar -xvZf bu.tar.Z #to samé pro dříve užívaný compress
Tar není jen jediný program, lze jej chápat spíše jako standard (popis taru je
součástí POSIX). Nejrozšířenější implementací zejména v GNU/Linux systémech
je GNU tar, existují ale i jiné implementace, např. vynikající star,
který kromě vyšší rychlosti obsahuje sofistikované filtry pro výběr souborů k
archivaci, podporu ACL, automatickou detekci formátu, lepší podporu POSIX
standardů apod.
Kompresní programy můžeme použít i samostatně, pro kompresi a dekompresi
souborů.
gzip
Program gzip se pro kompresi používání nejčastěji. Výsledný
soubor má příponu .gz . Komprimace souboru plan.txt se provede
příkazem:
Výsledkem je soubor plan.txt.gz . Co je ale podstatné vědět,
původní soubor byl smazán. Pokud ho chceme obnovit, použijeme parametr
-d , nebo samostatný příkaz gunzip pro dekompresi
souboru.
gzip -d plan.txt.gz
#nebo
gunzip plan.txt.gz
Lze provést i společnou kompresi více souborů, popřípadě s parametrem
-r kterým se komprimuje celý adresář s podadresáři.
gzip *.txt #všechny soubory s příponou .txt
Z každého souboru se tímto způsobem vytvoří samostatný komprimovaný soubor s
příponou .gz . Pokud chceme vytvořit jeden společný soubor,
použijeme spojení s výše uvedeným příkazem tar :
tar -cvzf bu.tar.gz /home/bu #pomocí parametru z přímo v taru
#nebo
tar cf - /home/bu | bzip2 > bu.tar.gz #propojením taru a gzipu
Užitečný je parametr -c , který přesměruje výstup gzipu do
standardního výstupu, který lze pak nasměrovat do vlastního souboru.
Vedlejším, ale rovněž cenným efektem je že po kompresi nedojde ke smazání
původního souboru.
gzip -c plan.txt > plan.tgz
Parametrem -l můžeme vypsat obsah komprimovaného souboru:
Velikost výsledného komprimovaného souboru lze ovlivnit pomocí parametru
kompresního poměru s hodnotou -1 až -9 (standardně
nastaveno 6). Se vzrůstající zadanou hodnotou se poněkud zmenší velikost
souboru, zatímco doba komprese se může prodloužit až několikanásobně.
Se soubory komprimovanými pomocí gzip pracuje několik dalších utilit,
například zcat který zobrazí obsah souboru bez rozbalení, či
gzexe , který komprimuje spustitelné soubory tak, že výsledný
archiv je spustitelný.
bzip2
Soubor bzip2 je novější program pro kompresi souborů. Výsledný soubor je
obvykle menší než v případě gzipu, cenou je pak podstatně vyšší časová a
paměťová náročnost komprese.
Výsledný soubor má příponu .bz2 . Syntaxe použití je podobná jako
u příkazu gzip.
bzip2 plan.txt #komprese
bzip2 -d plan.txt.bz2 #dekomprese
bunzip2 plan.txt.bz2 #dekomprese
Při používání bzipu , a hlavně rozbalování jím komprimovaných
souborů, na počítači s velmi malou kapacitou paměti je vhodné vědět o
parametru -s , který způsobí, že bzip při dekompresi
použije jen polovinu paměti než standardně vyžaduje ale za cenu dvojnásobné
doby dekomprese. Číselný parametr -1 až -9 při
kompresi totiž určuje velikost bloků dat v paměti po kterých je komprese
prováděna, a stejná velikost paměti je požadována i při rozbalování.
Výhodou bzip2 oproti gzipu, kromě určité úspory výsledného souboru, je možnost
obnovy dat i z poškozeného archivu. Díky tomu že bzip2 komprimuje data po
blocích lze poškozený archiv zpracovat pomocí programu
bzip2recover , který ho rozdělí na jednotlivé bloky a zapíše je
do samostatných očíslovaných souborů. Ty lze pak jednoduše najednou
dekomprimovat a zachránit tak data z nepoškozených bloků.
Porovnání
Pro porovnání gzip a bzip2 si ukážeme několik
příkladů komprese s pomocí různých voleb na adresáři se zdrojovým kódem
kernelu o celkové velikosti 174 MB.
#archivace bez komprese
#doba archivace: 20s, velikost souboru: 188190720
tar -cf linux.tar ./linux-2.6.3-4mdk
#standardní komprese s gzip
#doba komprese: 1 min 54 s, velikost souboru: 42058686
gzip -c linux.tar > linuxgzipstd.tar.gz
#maximální komprese s gzip
#doba komprese: 4 min 50s, velikost souboru: 41584712
gzip -c -9 linux.tar > linuxgzip9.tar.gz
#minimální komprese s gzip
#doba komprese: 1 min 01s, velikost souboru: 52064664
gzip -c -1 linux.tar > linuxgzip1.tar.gz
#standardní komprese s bzip2
#doba komprese: 8min 11s, velikost souboru: 33121918
bzip2 -c linux.tar > linuxbz2.tar.bz2
Jak je z porovnání vidět, komprese má velký význam, velikost archivu se
zmenšila vždy na méně než čtvtrtinu, další optimalizace pomocí parametru
poměru komprese však již další podstatné zmenšení nepřinesla, projevila se ale
na značném prodloužení doby komprese. Při porovnání výsledků komprese je třeba
také vědět, že některé programy zpracovávající data si provádějí vlastní
interní kompresi dat, takže znovu provedená externí komprese již nemá
významnější efekt. To se týká například některých formátů obrázků či zvuků
(gif, jpg, mp3, apod.)
dump
Zatímco výše uvedené archivační a kompresní soubory pracovaly na úrovni
adresářů a souborů, dump zálohuje data přímo čtením příslušného blokového
zařízení. Výhodou je pak vysoká rychlost. Dump je podporován pouze pro
ext2/ext3.
Archivace celé složky home se provede takto:
Parametr 0 souvisí s pojmem inkrementálního zálohování. Při prvním provádění
zálohy zadáme hodnotu 0 a tím se provede plná záloha všech souborů, zatímco
při následujících zálohách zadáváme stále se zvyšující pořadového číslo a tím
se zálohují jen soubory nově vytvořené nebo modifikované od poslední provedené
archivace s nižším pořadovým číslem. To má tu výhodu že opakované archivace
mohou být malé a rychlé, na druhé straně si ale musíme udržovat zálohy od
pořadového čísla 0 a v případě nutnosti plné obnovy je všechny použít ve
správném pořadí.
Parametrem -f se určí kam se má archiv zapsat. Kromě jména
souboru lze jako cíl archivace uvést i přímo fyzická zařízení v adresáři
/dev , např. /dev/st0 (páska).
Jestliže zálohujeme celé souborové systémy, hodí se parametr -u ,
kterým se zapíše informace o provedené archivaci do souboru /etc/dumpdates,
takže si lze příště dotazem dump -w zjistit zda a které souborové
systémy je potřeba zálohovat.
dump -0uf /dev/st0 /dev/hda5
restore
Pro obnovu souborů z archivu slouží opačný příkaz, restore :
restore -tf archiv #vypíše seznam souborů v archivu
restore -xf archiv /home #provede obnovu
Restore umožňuje pracovat v interaktivním režimu, kdy po zadání parametru
-i se zobrazí příkazová řádka příkazu restore. V ní lze procházet
mezi adresáři (příkaz cd ), vypisovat si je (ls ),
přidávat do seznamu adresářů a souborů které mají být obnoveny
(add ). Následně pak příkazem extract provést obnovu
vybraných souborů a adresářů.
restore -if archiv
add bfu
extract
quit
Jak již bylo uvedeno výše, dump je podporován jen na ext2/ext3, nicméně
existuje xfsdump pro XFS souborový systém, a pro další systém lze použít
script
reiserfsdump, který alespoň simuluje rozhraní dumpu pomocí taru.
Zdroje
man tar
man bzip
man bzip2
man gzip2
man dump
man restore
Verze pro tisk
|
Nejsou žádné diskuzní příspěvky u dané položky.
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|