15 примера команди тар за Сисадмин и програмере

тар је један од популарних формата за архивирање датотека доступних у Уник и Линук системима.

Само име је изведено из Тапе АРцхиве јер је развијено за писање секвенцијалних података на уређајима са траком. Понекад се назива и тарбалл.

Подразумевано, тар само архивира датотеке без компресије, али користећи неке делове. Можемо користити различите технике компресије да бисмо добили компресовани излаз. Услужни програм тар је обично укључен у већину Линук дистрибуција подразумевано, а сам формат је подржан у другим оперативним системима, укључујући Виндовс и мацОС, преко различитих алата и услужних програма.

У овом чланку ћемо покрити неке од уобичајених примера и употребе команде тар и њених подржаних заставица.

Па да почнемо…

Креирајте тар архиву

Да бисте креирали једноставну некомпримовану архиву, синтакса за команду тар је:

$ tar cvf <tar-file-name> <files-to-archive>

Овде заставице ц означавају креирање, в за опширни излаз и ф за одређивање имена датотеке тар архиве. По договору, наведите име тар датотеке са екстензијом .тар. Датотеке које треба архивирати могу се навести помоћу џокер знакова или као појединачни или вишеструки називи/путања датотека.

Као пример, имам три датотеке у свом директоријуму:

$ 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
$

И желим да направим тар архиву која садржи све три датотеке, то се може урадити на следећи начин:

$ 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
$

Могу да наведем само одређене датотеке за архивирање, као што су:

$ 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
$

Направите компримовану архиву (ГЗ)

тар не само да омогућава архивирање датотека, већ и њихово компресовање ради уштеде простора. Један од популарних формата компресије је гунзип, обично представљен екстензијом .гз после .тар или као тгз. Можемо да користимо з заставицу да одредимо да нам је потребно да датотеке буду компримоване помоћу гунзип-а. Ево примера:

$ 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
$

Можете приметити да се величина обе архивске датотеке значајно разликује иако обе садрже исте три датотеке. Ово је због употребе компресије помоћу з заставице.

  Обрнута претрага Снимак екрана из анимеа да бисте видели из које је серије

Направите компримовану архиву (БЗ2)

тар подржава неколико других формата компресије. Један од њих је бз2 или бзип2 који је представљен екстензијом тар.бз2 или понекад као тбз2. Може вам дати мању величину архиве, али заузврат троши више ЦПУ-а, тако да би процес компримовања/декомпресије могао бити спорији од гз архиве.

Пример:

$ 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
$

Унтар све датотеке

тар архива (без обзира да ли је компримована или некомпримована) може се извући једноставно коришћењем опције к. Примери у наставку ће појаснити његову употребу:

$ 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
$

Ово ради за гз компримовану архиву као:

$ 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
$

Или чак за бз2 компримовану архиву као:

$ 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
$

Листа садржаја тар

Да бисте навели садржај тар архиве, можете користити т заставицу као што је приказано испод:

$ 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
$

Унтар специфичне датотеке

Само једна датотека се може издвојити из тар или тар.гз или тар.бз2 архиве тако што ћете навести име датотеке као:

$ 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
$

Слично томе, можете навести више имена датотека раздвојених размаком да бисте их издвојили заједно у једном потезу.

$ 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
$

Унтар користећи Вилдцард

Да бисте издвојили једну или више датотека користећи џокер ПАТТЕРН, користите ознаку –вилдцардс:

$ 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
$

Додај фајлове у архиву

Нове датотеке се могу додати/додати постојећим некомпримованим тарбалл-овима коришћењем р или –аппенд заставица са новим именима датотека или шаблоном (запамтите да ово ради само са некомпримованим .тар датотекама, а не са компресованим форматима тар.гз или тар.бз2):

$ 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
$

Можете приметити да листинг садржаја арцхиве.тар поново приказује две новододате датотеке.

  Могу ли веб локације да виде вашу физичку локацију?

Избришите датотеке из архиве

Уклањање одређених датотека из тар архиве је могуће помоћу ознаке –делете као што је приказано испод (упоредите тар листу пре и након брисања датотека):

$ 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
$

Опет ово ради само за некомпримоване архивске датотеке и неће успети за компримоване архивске формате.

Креирајте помоћу Верифи

Док креирате некомпримоване тар датотеке, можете да проверите садржај архиве користећи В заставицу као:

$ tar cvfW archive.tar file*.txt
file1.txt
file2.txt
file3.txt
Verify file1.txt
Verify file2.txt
Verify file3.txt
$

Ово се не може користити са заставицама компресије, иако креирану тар датотеку можете компресовати касније користећи гзип или друге алате.

Извуците тар у фасциклу

Ако желите да издвојите свој тарбалл садржај у одређену фасциклу уместо у тренутни директоријум, користите ознаку -Ц са путањом директоријума као што је приказано у наставку:

$ 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
$

Користите дифф Флаг

Можете користити –дифф или д заставицу да пронађете било какве промене између датотека у тар архиви и оних у систему датотека. Ево примера који покреће дифф једном када је датотека унутар тар и споља била иста. Након ажурирања датотеке, поново је покренута да би се показала разлика у излазу.

$ 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
$

Изузми датотеке

Изузимање одређених датотека може бити услов приликом креирања тар архива. Ово се може постићи са заставицом –екцлуде.

$ 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
$

Као што можете приметити из горњег излаза, можемо да наведемо ознаку –екцлуде више пута да бисмо навели више имена датотека или образаца у стању И. Имајте на уму да од шест датотека у директоријуму у горњем примеру, само две датотеке задовољавају услов да буду укључене у арцхиве.ат.гз.

  Како променити локацију на Самсунг Галаки С8

Прикажи величину садржаја тар

Можемо добити величину садржаја компресоване тар архиве користећи доњу команду:

$ 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
$

Слично за бз2 архиву:

$ 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
$

Сачувај дозволе

Подразумевано, команда тар чува дозволу за датотеке и директоријуме које архивира иако можете експлицитно да наведете исто користећи -п заставицу или –пресерве-пермиссионс као што је приказано у наставку:

$ tar cvpzf archive.tar.gz *.txt
file1.txt
file2.txt
file3.txt
$

Резиме 👨‍💻

тар је дуго времена користан услужни програм на Уник/Линук системима и првенствено се користио у задацима архивирања и прављења резервних копија. Услужни програм је еволуирао са много опција током времена. Може се користити за једноставне до сложене задатке, с обзиром да знате функције које нуди. Овај чланак је покрио неке од основних операција које можете да урадите са командом тар и приказује како вам она може помоћи у свакодневним задацима системске администрације.

Погледајте његову ман страницу ман тар или користите команду тар –хелп или тар –усаге да бисте добили више детаља.