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…
Innholdsfortegnelse
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.
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.
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.
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.