Na Příkaz Tar v systému Linux: Tar CVF a Tar XVF Vysvětlil s příklady Příkazů

jméno tar je, že většina účtů, pro krátké tape archive. „Pásky“ na všechny ty magnetické paměťové jednotky, které byly populární v roce 1950.

To naznačuje, že tar nástroj může být trochu starý a minulost jeho připravit. Pravdou však je, že během všech let a přes všechny seismické změny ve světě IT tar neztratil nic ze své síly a hodnoty.

v tomto článku vám na základě obsahu z mé knihy Linux in Action ukážu základy vytváření, komprese a obnovy archivu tar. Začněme od začátku.

Tento příklad bude mít všechny soubory a adresáře v a pod aktuálním pracovním adresáři a vytvořit soubor archivu, který jsem chytře pojmenovaný archivename.tar.

zde používám tři argumenty po příkazu tar:

  • c říká, tar vytvořit nový archiv,
  • v nastaví výstup na obrazovku, aby verbose tak dám aktualizace, a
  • f body s názvem já bych rád dal do archivu.

* je to, co říká, tar zahrnout všechny soubory a místních adresářů rekurzivně.

$ tar cvf archivename.tar *file1file2file3directory1directory1/morestuffdirectory1/morestuff/file100directory1/morestuff/file101

příkaz tar nikdy přesunout nebo odstranit původní adresáře a soubory, které jste krmit – to jen dělá archivované kopie.

měli byste také poznamenat, že pomocí tečky (.) namísto hvězdičky ( * ) v předchozím příkazu by zahrnoval i skryté soubory (jejichž názvy souborů začínají tečkou) v archivu.

Pokud sledujete svůj vlastní počítač (Jak byste určitě měli), uvidíte nový soubor s názvem archivename.dehet. Na .přípona názvu souboru tar není nutná, ale vždy je dobré jasně sdělit účel souboru co nejvíce způsoby.

extrahování archivu za účelem obnovení souborů je snadné: Stačí použít xvf místo cvf. To v příkladu uloží nové kopie původních souborů a adresářů do aktuálního umístění.

$ tar xvf archivename.tarfile1file2file3directory1directory1/morestuffdirectory1/morestuff/file100directory1/morestuff/file101

samozřejmě, můžete také dehet, pošlete své extrahované soubory na jiné místo pomocí -C argument, následuje cílové umístění:

$ tar xvf archivename.tar -C /home/mydata/oldfiles/

ne vždy chtít zahrnout všechny soubory v adresáři stromu v archivu.

Předpokládejme, že jste vytvořili nějaké videa, ale jsou v současné době udržovány v adresářích spolu se všemi druhy grafické, zvukové a textové soubory (obsahující vaše poznámky). Jediné soubory, které potřebujete zálohovat, jsou konečné videoklipy pomocí přípony souboru mp4.

zde je návod, jak to udělat:

$ tar cvf archivename.tar *.mp4

to je skvělé. Ale ty video soubory jsou obrovské. Nebylo by hezké, aby se tento archiv trochu zmenšil pomocí komprese?

už nic neříkej! Stačí spustit předchozí příkaz s argumentem z (zip). To řekne programu gzip komprimovat archiv.

Chcete-li sledovat konvenci, můžete také přidat rozšíření .gz kromě .tar, které již existuje. Pamatujte: jasnost.

Zde je, jak to bude hrát ven:

$ tar czvf archivename.tar.gz *.mp4

Pokud si to vyzkoušet na vlastní pěst .mp4 soubory a pak spustit ls-l v adresáři obsahující nové archivy, můžete si všimnout, že .tar.gz soubor není všechno, že mnohem menší než .tar soubor, možná 10%, nebo tak. Co je s tím?

Formát souboru .mp4 je sám o sobě komprimovaný, takže pro gzip je mnohem méně místa.

protože si tar plně uvědomuje své prostředí Linuxu, můžete jej použít k výběru souborů a adresářů, které žijí mimo váš aktuální pracovní adresář. Tento příklad přidá všechny soubory .mp4 v adresáři /home/myuser/Videos/ :

$ tar czvf archivename.tar.gz /home/myuser/Videos/*.mp4

protože archivní soubory mohou být velké, může mít někdy smysl rozdělit je na několik menších souborů, přenést je do nového domova a znovu vytvořit původní soubor na druhém konci. Pro tento účel je vytvořen dělený nástroj.

v tomto příkladu-b řekne Linuxu, aby rozdělil archivované jméno.dehet.gz soubor do 1 GB velké části. Operace pak pojmenuje každou z částí-archivename.dehet.gz.partaa, archivní jméno.dehet.gz.partab, archivní jméno.dehet.gz.partac, a tak dále:

$ split -b 1G archivename.tar.gz "archivename.tar.gz.part"

Na druhé straně znovu vytvoříte archiv čtením každé části v pořadí (cat archivename.dehet.gz.část*), pak přesměrovat výstup do nového souboru s názvem archivename.dehet.gz:

$ cat archivename.tar.gz.part* > archivename.tar.gz

Streaming file system archives

zde začíná dobrá věc. Ukážu vám, jak vytvořit archivní obraz fungující instalace Linuxu a streamovat jej do vzdáleného úložiště-vše v rámci jediného příkazu. Tady je příkaz:

# tar czvf - --one-file-system / /usr /var \ --exclude=/home/andy/ | ssh [email protected] \ "cat > /home/username/workstation-backup-Apr-10.tar.gz"

spíše než se snažit to všechno hned vysvětlit, použiji menší příklady k prozkoumání jednoho kusu najednou.

vytvoříme archiv obsahu adresáře s názvem importantstuff, který je naplněn, dobře, opravdu důležitými věcmi:

$ tar czvf - importantstuff/ | ssh [email protected] "cat > /home/username/myfiles.tar.gz"importantstuff/filename1importantstuff/[email protected]'s password:

dovolte mi vysvětlit tento příklad. Místo zadání názvu archivu hned po příkazových argumentech (tak jako doposud) jsem použil pomlčku (czvf -).

dash vydává data na standardní výstup. To vám umožní posunout Podrobnosti souboru archivu zpět na konec příkazu a řekne tar, aby místo toho očekával zdrojový obsah archivu.

pak jsem piped (|) nejmenovaný, komprimovaný archiv do SSH přihlášení na vzdáleném serveru, kde jsem byl požádán o mé heslo.

příkaz v uvozovkách pak popraven kočky proti archiv datový proud, který napsal streamovat obsah do souboru s názvem myfiles.dehet.gz v mém domovském adresáři na vzdáleném hostiteli.

jednou z výhod generování archivů tímto způsobem je, že se vyhnete režii středního kroku. Není třeba ani dočasně ukládat kopii archivu na místní počítač. Představte si, že zálohujete instalaci, která vyplní 110 GB ze 128 GB dostupného místa. Kam by šel archiv?

to byl jen adresář souborů. Předpokládejme, že potřebujete zálohovat aktivní operační systém Linux na jednotku USB, abyste ji mohli přesunout na samostatný počítač a vložit jej do hlavní jednotky tohoto stroje.

za předpokladu, že na druhém počítači již existuje nová instalace stejné verze Linuxu, další operace kopírování/vložení vygeneruje přesnou repliku první.

Poznámka: Toto nebude fungovat na cílové jednotce, která ještě nemá nainstalovaný souborový systém Linux. Chcete-li tuto situaci zvládnout, musíte použít dd

následující příklad vytvoří komprimovaný archiv na USB disku známý jako /dev/sdc1.

argument--one-file-system vylučuje všechna data z libovolného souborového systému kromě aktuálního. To znamená, že pseudo oddíly jako /sys/ a /dev/ nebudou přidány do archivu. Pokud existují i další oddíly, které chcete zahrnout (jako budete dělat pro /usr//var/ v tomto příkladu), pak by měly být explicitně přidán.

a Konečně, můžete vyloučit data z aktuálního souboru systému pomocí --exclude argumenty:

# tar czvf /dev/sdc1/workstation-backup-Apr-10.tar.gz \ --one-file-system \ / /usr /var \ --exclude=/home/andy/

Teď pojďme zpátky k full-service příkaz příklad. Pomocí toho, co jste se již naučili, archivujte všechny důležité adresáře systému souborů a zkopírujte archivní soubor na jednotku USB. Teď by vám to mělo dávat smysl:

# tar czvf - --one-file-system / /usr /var \ --exclude=/home/andy/ | ssh [email protected] \ "cat > /home/username/workstation-backup-Apr-10.tar.gz"

je Tu mnohem víc správy dobroty v podobě knih, kurzy a články jsou k dispozici na mé bootstrap-it.com.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *