A tar a Unix és Linux alapú rendszerekben elérhető egyik népszerű fájlarchiválási formátum.
Maga a név a Tape ARchive-ból származik, mivel azt szalagos eszközökön történő szekvenciális adatok írására fejlesztették ki. Néha tarballnak is nevezik.
Alapértelmezés szerint a tar csak tömörítés nélkül, de bizonyos részek felhasználásával archiválja a fájlokat. Különféle tömörítési technikákat alkalmazhatunk a tömörített kimenet eléréséhez. A tar segédprogram általában alapértelmezés szerint benne van a legtöbb Linux-disztribúcióban, és magát a formátumot más operációs rendszerek is támogatják, beleértve a Windowst és a macOS-t is, különböző eszközökön és segédprogramokon keresztül.
Ebben a cikkben bemutatunk néhány gyakori példát és a tar parancsot és a támogatott jelzők használatát.
Tehát kezdjük…
Tartalomjegyzék
Tar Archívum létrehozása
Egy egyszerű tömörítetlen archívum létrehozásához a tar parancs szintaxisa a következő:
$ tar cvf <tar-file-name> <files-to-archive>
Itt a c a létrehozást, a v a részletes kimenetet, az f pedig a tar archívum fájlnevét jelenti. Megállapodás szerint adja meg a tar fájlnevet .tar kiterjesztéssel. Az archiválandó fájlok megadhatók helyettesítő karakterekkel, vagy egyetlen vagy több fájlnévként/útvonalként.
Például három fájl van a könyvtáramban:
$ ls -l total 12 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $
És szeretnék létrehozni egy tar archívumot, amely mindhárom fájlt tartalmazza, ezt a következőképpen lehet megtenni:
$ tar cvf archive.tar * file1.txt file2.txt file3.txt $ ls -l archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar $
Csak bizonyos fájlokat adhatok meg az archiváláshoz, például:
$ tar cvf archive1.tar file1.txt file2.txt file1.txt file2.txt $ ls -l archive1.tar -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive1.tar $
Tömörített archívum (GZ) létrehozása
A tar nemcsak a fájlok archiválását teszi lehetővé, hanem a tömörítést is, hogy helyet takarítson meg. Az egyik népszerű tömörítési formátum a gunzip, amelyet általában .gz kiterjesztéssel jelölnek a .tar után vagy tgz-ként. Használhatjuk a z flaget annak meghatározására, hogy a fájlokat gunzip segítségével kell tömöríteni. Íme egy példa:
$ tar cvzf archive.tar.gz file* file1.txt file2.txt file3.txt $ ls -l archive.tar archive.tar.gz -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 12 20:21 archive.tar.gz $
Megfigyelhető, hogy mindkét archív fájl mérete lényegesen eltérő, bár mindkettő ugyanazt a három fájlt tartalmazza. Ennek oka a z zászlót használó tömörítés.
Tömörített archívum létrehozása (BZ2)
A tar számos más tömörítési formátumot is támogat. Az egyik a bz2 vagy a bzip2, amelyet a tar.bz2 kiterjesztéssel vagy néha tbz2-vel jelölnek. Lehet, hogy kisebb archívumot ad, de több CPU-t fogyaszt, így a tömörítési/kicsomagolási folyamat lassabb lehet, mint a gz archívum.
Példa:
$ tar cvjf archive.tar.bz2 file* file1.txt file2.txt file3.txt $ ls -l archive.tar archive.tar.gz archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 12 20:15 archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 12 20:25 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 12 20:21 archive.tar.gz $ file archive.tar* archive.tar: POSIX tar archive (GNU) archive.tar.bz2: bzip2 compressed data, block size = 900k archive.tar.gz: gzip compressed data, from Unix, original size modulo 2^32 10240 $
Távolítsa el az összes fájlt
A tar archívum (akár tömörített, akár tömörítetlen) egyszerűen kibontható az x opció használatával. Az alábbi példák tisztázzák a használatát:
$ tar xvf archive.tar file1.txt file2.txt file3.txt $ ls -l total 24 -rw-r--r-- 1 abhisheknair abhisheknair 10240 Sep 19 18:25 archive.tar -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $
Ez így működik egy gz tömörített archívumnál:
$ tar xvf archive.tar.gz file1.txt file2.txt file3.txt $ ls -l total 16 -rw-r--r-- 1 abhisheknair abhisheknair 188 Sep 19 18:27 archive.tar.gz -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $
Vagy akár egy bz2 tömörített archívumhoz is:
$ tar xvf archive.tar.bz2 file1.txt file2.txt file3.txt $ ls -l total 16 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $
Lista tar Tartalom
A tar archívum tartalmának listázásához használhatja a t jelzőt az alábbiak szerint:
$ tar tvf archive.tar.bz2 -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt $
Untar Specific Files
Egy tar vagy tar.gz vagy tar.bz2 archívumból csak egy fájl bontható ki a következő fájlnév megadásával:
$ tar xvf archive.tar.bz2 file1.txt file1.txt $ ls -l total 8 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt $
Hasonlóképpen több fájlnevet is megadhat szóközzel elválasztva, hogy egyszerre kibontsa őket.
$ tar xvf archive.tar.bz2 file1.txt file3.txt file1.txt file3.txt $ ls -l total 12 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $
Távolítsa el a helyettesítő karaktert
Egy vagy több fájl kibontásához helyettesítő karakteres PATTERN használatával, használja a –wildcards jelzőt:
$ tar xvf archive.tar.bz2 --wildcards "file*" file1.txt file2.txt file3.txt $ ls -l total 16 -rw-r--r-- 1 abhisheknair abhisheknair 212 Sep 19 18:31 archive.tar.bz2 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 19 Sep 12 20:08 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt $
Fájlok hozzáadása az archívumhoz
Új fájlok hozzáadhatók/hozzáfűzhetők a meglévő tömörítetlen tarballokhoz az r vagy –append kapcsolóval új fájlnevekkel vagy helyettesítő karaktermintával (ne feledje, ez csak tömörítetlen .tar fájlokkal működik, tar.gz vagy tar.bz2 tömörített formátumokkal nem):
$ tar rvf archive.tar file-new* file-new.txt file-new2.txt $ tar tvf archive.tar -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt -rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt -rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new2.txt $
Megfigyelhető, hogy az archive.tar tartalmának listázása ismét megjeleníti a két újonnan hozzáadott fájlt.
Fájlok törlése az archívumból
Adott fájlok eltávolítása a tar archívumból lehetséges a –delete kapcsolóval az alábbiak szerint (hasonlítsa össze a tar listát a fájlok törlése előtt és után):
$ tar tvf archive.tar -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt -rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt -rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new.txt -rw-r--r-- abhisheknair/abhisheknair 9 2021-09-19 19:10 file-new2.txt $ tar --delete -f archive.tar file-new.txt file-new2.txt $ tar tvf archive.tar -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt -rw-r--r-- abhisheknair/abhisheknair 15 2021-09-19 18:59 file2.txt -rw-r--r-- abhisheknair/abhisheknair 10 2021-09-19 18:58 file4.txt $
Ez ismét csak a tömörítetlen tarballoknál működik, és a tömörített archív formátumoknál nem működik.
Létrehozás a Verify segítségével
Tömörítetlen tar fájlok létrehozásakor ellenőrizheti az archívum tartalmát a W jelzővel a következőképpen:
$ tar cvfW archive.tar file*.txt file1.txt file2.txt file3.txt Verify file1.txt Verify file2.txt Verify file3.txt $
Ez nem használható tömörítési jelzőkkel, bár a létrehozott tar fájlt később gzip vagy más eszközök segítségével tömörítheti.
Tar kibontása mappába
Ha a tarball tartalmát egy adott mappába szeretné kibontani az aktuális könyvtár helyett, használja a -C kapcsolót a könyvtár elérési útjával az alábbiak szerint:
$ tar xvf archive.tar -C new-directory/ file1.txt file2.txt file3.txt file2.txt file4.txt $ ls -l new-directory/ total 16 -rw-r--r-- 1 abhisheknair abhisheknair 13 Sep 12 20:08 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 15 Sep 19 18:59 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 24 Sep 12 20:08 file3.txt -rw-r--r-- 1 abhisheknair abhisheknair 10 Sep 19 18:58 file4.txt $
Diff Flag használata
A –diff vagy d kapcsolóval megkeresheti a tar archívumban lévő fájlok és a fájlrendszerben lévő fájlok közötti változásokat. Íme egy példa, amely egyszer lefuttatja a diff-et, amikor a tar-on belüli és a külső fájl azonos volt. A fájl frissítése után ismét lefutott, hogy megmutassa a kimeneti különbséget.
$ tar dvf archive.tar file4.txt file4.txt $ $ echo newline > file4.txt $ $ tar dvf archive.tar file4.txt file4.txt file4.txt: Mod time differs file4.txt: Size differs $
Fájlok kizárása
Tar-archívumok létrehozásakor követelmény lehet bizonyos fájlok kizárása. Ez az –exclude jelzővel érhető el.
$ tar --exclude="dir/file2.txt" --exclude="dir/file-new*.txt" -cvzf archive.tar.gz dir/ dir/ dir/file1.txt dir/file3.txt $ ls -l dir total 24 -rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new.txt -rw-r--r-- 1 abhisheknair abhisheknair 9 Sep 19 19:10 file-new2.txt -rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:20 file-new3.txt -rw-r--r-- 1 abhisheknair abhisheknair 5 Sep 19 19:27 file1.txt -rw-r--r-- 1 abhisheknair abhisheknair 6 Sep 19 19:27 file2.txt -rw-r--r-- 1 abhisheknair abhisheknair 8 Sep 19 19:27 file3.txt $ tar tvf archive.tar.gz drwxr-xr-x abhisheknair/abhisheknair 0 2021-09-19 19:30 dir/ -rw-r--r-- abhisheknair/abhisheknair 5 2021-09-19 19:27 dir/file1.txt -rw-r--r-- abhisheknair/abhisheknair 8 2021-09-19 19:27 dir/file3.txt $
Amint a fenti kimenetből észrevehető, többször megadhatjuk az –exclude jelzőt, hogy több fájlnevet vagy mintát adjunk meg ÉS feltételben. Ne feledje, hogy a fenti példában a könyvtárban található hat fájl közül csak két fájl felelt meg az archive.at.gz fájlba való felvétel feltételének.
Tar Tartalomméret megtekintése
A tömörített tar archívum tartalmának méretét az alábbi paranccsal kaphatjuk meg:
$ tar tvf archive.tar.gz -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt $ tar -xzf archive.tar.gz --to-stdout|wc -c 56 $
Hasonlóan a bz2 archívumhoz:
$ tar tvf archive.tar.bz2 -rw-r--r-- abhisheknair/abhisheknair 13 2021-09-12 20:08 file1.txt -rw-r--r-- abhisheknair/abhisheknair 19 2021-09-12 20:08 file2.txt -rw-r--r-- abhisheknair/abhisheknair 24 2021-09-12 20:08 file3.txt $ tar -xjf archive.tar.bz2 --to-stdout|wc -c 56 $
Engedélyek megőrzése
Alapértelmezés szerint a tar parancs megőrzi az archiválás alatt álló fájlok és könyvtárak engedélyeit, bár ugyanezt kifejezetten megadhatja a -p jelző vagy a -preserve-permissions használatával, az alábbiak szerint:
$ tar cvpzf archive.tar.gz *.txt file1.txt file2.txt file3.txt $
Összefoglaló 👨💻
A tar egy hasznos segédprogram Unix/Linux rendszereken sokáig, és elsősorban archiválási és biztonsági mentési feladatokhoz használták. A segédprogram az idők során számos lehetőséggel fejlődött. Egyszerű és összetett feladatokhoz használható, ha ismeri az általa kínált funkciókat. Ez a cikk bemutatja a tar paranccsal végrehajtható néhány alapvető műveletet, és bemutatja, hogyan segíthet a napi rendszerfelügyeleti feladatokban.
További részletekért tekintse meg a man tar kézikönyvoldalát, vagy használja a tar –help vagy tar –usage parancsot.