Comanda Tar în Linux: Tar CVF și tar XVF explicate cu exemple de comenzi

numele tar este, după majoritatea conturilor, scurt pentru arhiva de bandă. „Casetele” în cauză ar fi toate acele unități de stocare magnetice care au fost populare încă din anii 1950.

care sugerează că instrumentul tar ar putea fi un pic vechi și trecut de prim. Dar adevărul este că, de-a lungul tuturor anilor și prin toate schimbările seismice din lumea IT, tar nu și-a pierdut nici o putere și valoare.

în acest articol, pe baza conținutului din cartea mea Linux în acțiune, vă voi arăta elementele de bază ale creării, compresiei și restaurării arhivelor tar. Să începem cu începutul.

acest exemplu va lua toate fișierele și directoarele din și sub directorul de lucru curent și va construi un fișier de arhivă pe care l-am numit inteligentarchivename.tar.

aici folosesc trei argumente după comanda tar:

  • c îi spune lui tar să creeze o nouă arhivă,
  • v setează ieșirea ecranului la verbose, așa că voi primi actualizări și
  • f indică numele fișierului pe care aș vrea să-l dau arhivei.

* este ceea ce spunetar să includă toate fișierele și directoarele locale recursiv.

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

comanda tar nu va muta sau șterge niciunul dintre directoarele și fișierele originale pe care le alimentați – face doar copii arhivate.

de asemenea, trebuie să rețineți că utilizarea unui punct (.) în loc de un asterisc ( * ) în comanda anterioară ar include chiar și fișiere ascunse (ale căror nume de fișiere încep cu un punct) în arhivă.

Dacă urmăriți pe propriul computer (așa cum ar trebui cu siguranță), atunci veți vedea un nou fișier numit archivename.gudron. La .extensia numelui de fișier tar nu este necesară, dar este întotdeauna o idee bună să comunicați clar scopul unui fișier în cât mai multe moduri posibil.

extragerea arhivei dvs. pentru a restabili fișierele este ușoară: Doar folosi xvf în loc de cvf. Aceasta, în exemplu, va salva copii noi ale fișierelor și directoarelor originale în locația curentă.

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

desigur, puteți trimite tar fișierele extrase într-un alt loc folosind argumentul -C, urmat de locația țintă:

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

nu veți dori întotdeauna să includeți toate fișierele dintr-un arbore de directoare din arhiva dvs.

Să presupunem că ați produs câteva videoclipuri, dar acestea sunt păstrate în prezent în directoare împreună cu tot felul de fișiere grafice, audio și text (care conțin notele dvs.). Singurele fișiere pe care trebuie să le faceți o copie de rezervă sunt clipurile video finale folosind extensia .mp4.

Iată cum se face asta:

$ tar cvf archivename.tar *.mp4

asta e grozav. Dar acele fișiere video sunt enorme. Nu ar fi frumos să facem acea arhivă un pic mai mică folosind compresia?

nu mai spune nimic! Doar rulați comanda anterioară cu argumentulz (zip). Asta va spune programului gzip să comprime arhiva.

Dacă doriți să urmați Convenția, puteți adăuga și o extensie.gz în plus față de.tar care este deja acolo. Amintiți-vă: claritate.

Iată cum ar juca:

$ tar czvf archivename.tar.gz *.mp4

dacă încercați acest lucru pe propriile fișiere .mp4 și apoi executați ls-l pe directorul care conține noile arhive, este posibil să observați că.tar.gz fișierul nu este tot atât de mult mai mic decât.tar fișier, poate 10% sau cam asa ceva. Ce – i cu asta?

Ei bine,.mp4 formatul de fișier este în sine comprimat, deci există mult mai puțin loc pentru gzip să-și facă lucrurile.

deoarece tar este pe deplin conștient de mediul său Linux, îl puteți utiliza pentru a selecta fișiere și directoare care trăiesc în afara directorului dvs. de lucru curent. Acest exemplu adaugă toate fișierele.mp4 din Directorul/home/myuser/Videos/ :

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

deoarece fișierele de arhivă pot deveni mari, uneori ar putea avea sens să le descompunem în mai multe fișiere mai mici, să le transferăm în noua lor casă și apoi să recreăm fișierul original la celălalt capăt. Instrumentul divizat este realizat în acest scop.

în acest exemplu, -b îi spune Linux să împartă numele arhivei.gudron.fișier gz în piese de dimensiuni de 1 GB. Operațiunea numește apoi fiecare dintre părți-archivename.gudron.gz.partaa, numele de arhivă.gudron.gz.partab, numele de arhivă.gudron.gz.partac, și așa mai departe:

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

pe de altă parte, re-creați arhiva citind fiecare dintre părți în ordine (cat archivename.gudron.gz.parte*), apoi redirecționați ieșirea către un nou fișier numit archivename.gudron.gz:

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

arhive de sistem de fișiere Streaming

Iată de unde începe lucrurile bune. Vă voi arăta cum să creați o imagine de arhivă a unei instalări Linux funcționale și să o transmiteți într — o locație de stocare la distanță-toate într-o singură comandă. Iată comanda:

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

în loc să încerc să explic toate acestea imediat, voi folosi exemple mai mici pentru a le explora pe rând.

să creăm o arhivă a conținutului unui director numit importantstuff care este umplut cu, ei bine, lucruri foarte importante:

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

permiteți-mi să explic acest exemplu. În loc să introduc numele arhivei imediat după argumentele Comenzii (așa cum ați făcut până acum), am folosit o liniuță (czvf -).

liniuța transmite datele la ieșirea standard. Vă permite să împingeți detaliile numelui fișierului de arhivă înapoi la sfârșitul comenzii și îi spune lui tar să aștepte conținutul sursă pentru arhivă.

am apoi prin conducte ( / ) arhiva anonim, comprimat la o autentificare ssh pe un server de la distanță în cazul în care mi sa cerut parola.

comanda închisă între ghilimele a executat apoi cat împotriva fluxului de date de arhivă, care a scris conținutul fluxului într-un fișier numit myfiles.gudron.gz în directorul meu de acasă de pe gazda de la distanță.

un avantaj al generării arhivelor în acest fel este că evitați cheltuielile generale ale unui pas de mijloc. Nu este nevoie să salvați temporar o copie a arhivei pe mașina locală. Imaginați-vă că faceți o copie de rezervă a unei instalații care umple 110 GB din spațiul său disponibil de 128 GB. Unde ar merge arhiva?

era doar un director de fișiere. Să presupunem că trebuie să faceți o copie de rezervă a unui sistem de operare Linux activ pe o unitate USB, astfel încât să îl puteți muta pe o mașină separată și să îl aruncați în unitatea principală a mașinii.

presupunând că există deja o nouă instalare a aceleiași versiuni Linux pe a doua mașină, următoarea operație de copiere / lipire va genera o replică exactă a primei.

Notă: Aceasta nu va funcționa pe o unitate țintă care nu are deja instalat un sistem de fișiere Linux. Pentru a gestiona această situație, va trebui să utilizați dd

următorul exemplu creează o arhivă comprimată pe unitatea USB cunoscută sub numele de /dev/sdc1.

argumentul--one-file-system exclude toate datele din orice sistem de fișiere în afară de cel curent. Aceasta înseamnă că partițiile pseudo precum /sys/ și /dev/ nu vor fi adăugate în arhivă. Dacă există alte partiții pe care doriți să le includeți (așa cum veți face pentru /usr/ și /var/ în acest exemplu), atunci acestea ar trebui adăugate în mod explicit.

în cele din urmă, puteți exclude datele din sistemul de fișiere curent folosind--exclude argument:

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

acum să ne întoarcem la acel exemplu de comandă full-service. Folosind ceea ce ați învățat deja, arhivați toate directoarele importante ale unui sistem de fișiere și copiați fișierul de arhivă pe o unitate USB. Ar trebui să aibă sens pentru tine acum:

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

există mult mai multă bunătate administrativă sub formă de cărți, cursuri și articole disponibile la mine bootstrap-it.com.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *