15 tar Kommandoeksempler for Sysadmin og utviklere

tar er et av de populære filarkiveringsformatene som er tilgjengelige i Unix- og Linux-baserte systemer.

Selve navnet er avledet fra Tape ARchive da det ble utviklet for å skrive sekvensielle data på båndenheter. Det er også referert til som tarball noen ganger.

Som standard arkiverer tar bare filene uten komprimering, men bruker noen deler. Vi kan bruke forskjellige komprimeringsteknikker for å få en komprimert utgang. tar-verktøyet er vanligvis inkludert i de fleste Linux-distribusjoner som standard, og selve formatet støttes på tvers av andre operativsystemer, inkludert Windows og macOS, via forskjellige verktøy og verktøy.

Vi vil dekke noen av de vanlige eksemplene og bruken av tar-kommandoen og dens støttede flagg i denne artikkelen.

Så la oss komme i gang…

Opprett tar-arkiv

For å lage et enkelt ukomprimert arkiv, er syntaksen for tar-kommandoen:

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

Her står flagg c for opprettelse, v for detaljert utgang og f for å spesifisere tar-arkivfilnavnet. Av konvensjon, spesifiser tar-filnavnet med filtypen .tar. Filer som skal arkiveres kan spesifiseres med jokertegn eller som enkelt eller flere filnavn/stier.

Som et eksempel har jeg tre filer i katalogen min:

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

Og jeg vil lage et tar-arkiv som inneholder alle tre filene, det kan gjøres som:

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

Jeg kan også spesifisere spesifikke filer som skal arkiveres, som:

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

Opprett komprimert arkiv (GZ)

tar tillater ikke bare arkivering av filer, men komprimerer dem også for å spare plass. Et av de populære komprimeringsformatene er gunzip, vanligvis representert med utvidelsen .gz etter .tar eller som tgz. Vi kan bruke z-flagg for å spesifisere at vi trenger at filene skal komprimeres med gunzip. Her er et eksempel:

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

Du kan observere at størrelsen på begge arkivfilene er vesentlig forskjellig selv om begge inneholder de samme tre filene. Dette skyldes bruk av komprimering ved hjelp av z-flagg.

  Hva skjer hvis du avregistrerer Firestick?

Opprett komprimert arkiv (BZ2)

tar støtter flere andre komprimeringsformater. En av dem er bz2 eller bzip2 som er representert med utvidelse tar.bz2 eller noen ganger som tbz2. Det kan gi deg en mindre arkivstørrelse, men bruker i sin tur mer CPU, så prosessen med å komprimere/dekomprimere kan være tregere enn gz-arkiv.

Eksempel:

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

Fjern alle filer

Et tar-arkiv (enten det er komprimert eller ukomprimert) kan enkelt trekkes ut ved å bruke x-alternativet. Eksemplene nedenfor vil tydeliggjøre bruken:

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

Dette fungerer for et gz-komprimert arkiv som:

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

Eller til og med for et bz2-komprimert arkiv som:

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

List tjæreinnhold

For å liste innholdet i et tar-arkiv, kan du bruke t-flagget som vist nedenfor:

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

Bare én fil kan trekkes ut fra et tar- eller tar.gz- eller tar.bz2-arkiv ved å spesifisere filnavnet som:

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

På samme måte kan du spesifisere flere filnavn atskilt med mellomrom for å trekke dem ut på én gang.

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

Untar med Wildcard

For å pakke ut én eller flere filer ved hjelp av et jokertegn PATTERN, bruk –jokertegn-flagg:

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

Legg til filer i arkiv

Nye filer kan legges til/legges til eksisterende ukomprimerte tarballer ved å bruke r- eller –append-flagg med nye filnavn eller jokertegn (husk at dette bare fungerer med ukomprimerte .tar-filer og ikke med tar.gz- eller tar.bz2-komprimerte formater):

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

Du kan observere at oppføringen av innholdet i archive.tar igjen viser de to nylig lagt til filene.

  6 beste PPC-administrasjonsprogramvare for digitale markedsførere tipsbilk.net

Slett filer fra arkivet

Fjerning av spesifikke filer fra et tar-arkiv er mulig ved å bruke –delete-flagg som vist nedenfor (sammenlign tar-oppføringen før og etter sletting av filer):

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

Igjen fungerer dette bare for ukomprimerte tarballer og vil mislykkes for komprimerte arkivformater.

Opprett med Bekreft

Mens du lager ukomprimerte tar-filer, kan du verifisere innholdet i arkivet ved å bruke W-flagget som:

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

Dette kan ikke brukes med komprimeringsflagg, selv om du kan komprimere den opprettede tar-filen senere ved å bruke gzip eller andre verktøy.

Pakk ut tjære til mappe

Hvis du vil trekke ut tarball-innholdet til en bestemt mappe i stedet for den gjeldende katalogen, bruk -C-flagget med katalogbanen som vist nedenfor:

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

Bruk diff Flag

Du kan bruke –diff eller d flagg for å finne eventuelle endringer mellom filene i tar-arkivet og de i filsystemet. Her er et eksempel som kjører diff en gang når filen inne i taren og utsiden var den samme. Etter oppdatering av filen ble den kjørt igjen for å vise forskjellen i utdata.

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

Ekskluder filer

Å ekskludere spesifikke filer kan være et krav når du oppretter tar-arkiver. Dette kan oppnås med –ekskluder flagg.

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

Som du kan merke fra utdataene ovenfor, kan vi spesifisere –exclude-flagget flere ganger for å spesifisere flere filnavn eller mønstre i AND-tilstand. Merk at av de seks filene i katalogen i eksemplet ovenfor, var det bare to filer som tilfredsstilte betingelsen for å bli inkludert i archive.at.gz.

  Fiks Xbox One-feilkode 0X87E107DF

Se tjære innholdsstørrelse

Vi kan få størrelsen på innholdet i et komprimert tar-arkiv ved å bruke kommandoen nedenfor:

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

Tilsvarende for bz2-arkiv:

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

Bevar tillatelser

Som standard bevarer tar-kommandoen tillatelse til filer og kataloger den arkiverer, selv om du eksplisitt kan spesifisere det samme ved å bruke -p-flagg eller -preserve-tillatelser som vist nedenfor:

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

Oppsummering 👨‍💻

tar er et nyttig verktøy på Unix/Linux-systemer i lang tid og ble først og fremst brukt i arkiverings- og sikkerhetskopieringsoppgaver. Verktøyet har utviklet seg med mange alternativer over tid. Den kan brukes til enkle til komplekse oppgaver, gitt at du kjenner funksjonene den tilbyr. Denne artikkelen dekket noen av de grunnleggende operasjonene du kan gjøre med tar-kommandoen og viser hvordan den kan hjelpe deg i dine daglige systemadministrasjonsoppgaver.

Se man-siden man tar eller bruk tar –help eller tar –brukskommandoen for å få flere detaljer.