Numele tar este, după majoritatea conturilor, prescurtarea arhiva de benzi. „Casetele” în cauză ar fi toate acele unități de stocare magnetică care au fost populare până în anii 1950.

Asta sugerează că tar instrumentul ar putea fi puțin vechi și a trecut de vârf. Dar adevărul este că, de-a lungul anilor și prin toate schimbările seismice din lumea IT, tar nu și-a pierdut nimic din puterea și valoarea sa.

În acest articol, pe baza conținutului de la Cartea Linux în acțiune, Vă voi arăta elementele de bază pentru crearea, compresia și restaurarea arhivei de gudron. Să începem de la început.

Crearea arhivelor

Acest exemplu va lua toate fișierele și directoarele din și sub directorul de lucru curent și va crea un fișier de arhivă pe care l-am numit inteligent archivename.tar.

Aici folosesc trei argumente după comanda tar:

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

* ceea ce spune tar pentru a include toate fișierele și directoarele locale recursiv.

$ tar cvf archivename.tar *
file1
file2
file3
directory1
directory1/morestuff
directory1/morestuff/file100
directory1/morestuff/file101

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

De asemenea, ar trebui să rețineți că utilizarea unui punct (.) În locul unui asterisc

în comanda anterioară ar include fișiere ascunse (ale căror nume de fișiere încep cu un punct) în arhivă.

Dacă urmăriți propriul computer (așa cum ar trebui cu siguranță), veți vedea un nou fișier numit archivename.tar. Extensia de nume de fișier .tar nu este necesară, dar este întotdeauna o idee bună să comunicați în mod clar scopul unui fișier în cât mai multe moduri posibil. xvf Extragerea arhivei pentru a restabili fișierele este ușoară: folosiți-o cvfin loc de

$ tar xvf archivename.tar
file1
file2
file3
directory1
directory1/morestuff
directory1/morestuff/file100
directory1/morestuff/file101

. Acest lucru, în exemplu, va salva copii noi ale fișierelor și directoarelor originale în locația curentă. -C Desigur, puteți, de asemenea, să vă trimită tar fișierele extrase în alt loc folosind

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

argument, urmat de locația țintă:

Nu veți dori întotdeauna să includeți toate fișierele într-un arboresc director în arhiva dvs.

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

$ tar cvf archivename.tar *.mp4

Iată cum puteți face acest lucru:

Grozav. Dar acele fișiere video sunt enorme. Nu ar fi frumos să faci acea arhivă puțin mai mică folosind compresia? z Nu mai spune nimic! Executați doar comanda anterioară cu

(zip) argument. Aceasta va spune programului gzip să comprime arhiva. .gz Dacă doriți să urmați convenția, puteți adăuga și un .tar extensie în plus față de

asta e deja acolo. Amintiți-vă: claritate.

$ tar czvf archivename.tar.gz *.mp4

Iată cum s-ar desfășura acest lucru: .tar.gz Dacă încercați acest lucru pe propriile fișiere .mp4 și apoi rulați ls -l în directorul care conține noile arhive, este posibil să observați că .tar fișierul nu este mult mai mic decât

fișier, poate aproximativ 10%. Ce-i cu asta? .mp4 Ei bine,

formatul de fișier este el însuși comprimat, deci este mult mai puțin spațiu pentru gzip să-și facă lucrurile. .mp4 Deoarece tar este pe deplin conștient de mediul său Linux, îl puteți folosi pentru a selecta fișiere și directoare care trăiesc în afara directorului dvs. de lucru curent. Acest exemplu adaugă toate /home/myuser/Videos/ fișiere în

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

director:

Deoarece fișierele de arhivă pot deveni mari, uneori ar putea avea sens să le împărțim î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. -b În acest exemplu,

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

îi spune lui Linux să împartă fișierul archivename.tar.gz în părți de 1 GB. Operația numește apoi fiecare dintre părți – archivename.tar.gz.partaa, archivename.tar.gz.partab, archivename.tar.gz.partac și așa mai departe:

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

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

Streaming sistem de fișiere arhive

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

Iată de unde încep 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ță – totul într-o singură comandă. Iată comanda:

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

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

Să creăm o arhivă a conținutului unui director numit importantstuff, care este plin de lucruri foarte importante:

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

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

Apoi am introdus (|) arhiva fără nume și comprimată într-un login ssh pe un server la distanță unde mi s-a cerut parola.

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

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

Acesta a fost 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ă o puteți muta pe o mașină separată și să o lăsați pe 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. ddNOTĂ: Acest lucru nu va funcționa pe o unitate țintă care nu are deja instalat un sistem de fișiere Linux. Pentru a rezolva această situație, va trebui să o utilizați

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

. --one-file-system /sys/ argumentul exclude toate datele din orice sistem de fișiere în afară de cel curent. Aceasta înseamnă că pseudo partiții ca /dev/ și /usr/ nu va fi adăugat la arhivă. Dacă există alte partiții pe care doriți să le includeți (așa cum veți face pentru /var/ și

în acest exemplu), atunci acestea ar trebui adăugate în mod explicit. --exclude În cele din urmă, puteți exclude date din sistemul de fișiere curent folosind

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

argument:

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

Acum să revenim 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 arhivare pe o unitate USB. Ar trebui să aibă sens acum pentru tine: Există mult mai multă bunătate administrativă sub formă de cărți, cursuri și articole disponibile la adresa meabootstrap-it.com