Comenzi de arhivare si comprimare
1. tar (tape archive) - reprezinta principala comanda de arhivare pe Linux. Tar nu realizeaza comprimare (in mod default) ci doar arhivare.
tar optiuni output_file files/dirs
Comanda tar primeste obligatoriu una dintre optiunile:
-c = create - creaza o arhiva
-x = extract - extrage fisierele din arhiva
-t = table of content (vizualizare continut)
-r = adauga la sfarsitul arhivei
-u = adauga in arhiva doar fisierele noi
-C DIR = specifica directorul destinatie in care se va decomprima (altfel in directorul curent)
Important
Folosind optiunea -x se pot suprascrie fisierele care exista pe hard disk cu cele care se dezarhiveaza.
Alte optiuni:
-f = file (se specifica fisierul arhiva care se creaza)
-v = verbose
--atime-preserve = nu schimba atime pentru fisierele adaugate
Exemplu
|
a) se creaza arhiva.tar in directorul curent din directorul /home/stud/dir_care_se_arhiveaza
tar -cvf arhiva.tar /home/stud/dir_care_se_arhiveaza
b) vizualizarea continutului unei arhive
tar -tf arhiva.tar
c) adaugare fisier a.txt la arhiva.tar
tar -rf arhiva.tar a.txt
d) adaugare fisiere noi in arhiva. Acestea sunt adaugate, versiunile mai vechi din arhiva nu sunt inlocuite.
tar -uf arhiva.tar f*
e) pastreaza atime pentru fisierele adaugate
tar --atime-preserve -cvf arhiva.tar dir1/
f) Extrage doar un fisier din arhiva
tar -xvf arhiva.tar a.txt
g) Extrage continutul arhivei in directorul /tmp
tar -xjvf arhiva.tar.bz2 -C /tmp
|
2. BZIP2, GZIP
Programul tar poate fi folosit si pentru a compresa fisiere. Se folosesc optiuni specifice care au drept efect trecerea fisierelor printr-un program de compresie inainte de arhivare.
Optiuni ale comenzii tar pentru comprimare:
-j = create bzip2 (fisierele care se arhiveaza sunt trecute prin filtrul de compresie bzip2)
Exemplu
|
Creaza in directorul curent arhiva directorului /home/dan/dir1 numita archivefile.tar.bz2 comprimata cubzip2
tar -cvjf archivefile.tar.bz2 /home/dan/dir1
echivalent cu
tar -cvf - /home/dan/dir1 | bzip2 > archivefile.tar.bz2
Extragere arhiva bz2:
tar -xjvf arhiva.tar.bz2
echivalent cu
bunzip2 arhiva.tar.bz2 - rezulta fisierul arhiva.tar
tar -xvf arhiva.tar
|
-z = creaza o arhiva comprimata cu gzip
Exemplu
|
tar -czvf arhiva.tar.gz dir1/
tar -xzvf arhiva.tar.gz
|
Exista si comenzile zip, unzip, gzip si gunzip dar sunt mai putin folosite datorita faptului ca in general se foloseste comandatar impreuna cu optiuni de compresie.
Exemplu: Backup la directorul /etc in /root : tar -cjvf /root/etc-$(date +%F).tar.bz2 /etc
3. SCP - Secure Copy (Copy over SSH)
Reprezinta posibilitatea de a copia fisiere remote de pe calculatoare conectate in LAN sau pe Internet. Copierea are loc criptat.
Pentru aceasta avem nevoie de acces prin SSH la calculatorul de pe care dorim sa copiem sau pe care dorim sa copiem. Datele sunt copiate folosindu-se un tunel SSH creat intre sursa si destinatie.
scp optiuni SURSA DESTINATIE
- P = port (poate folosi un alt port - default 22)
- p = preserve (atime, mtime si permisiunile)
- r = recursive copy (pt. directoare)
- v = verbose
Exemplu
|
a) Se copiaza fisierul arhiva.tar.bz2 de pe calculatorul local pe calculatorul cu IP-ul 192.168.0.1 in directorul/home/dan sub numele de arhiva-stud.tar.bz2. Userul dan trebuie sa aiba acces prin ssh la 192.168.0.1
scp /home/stud/arhiva.tar.bz2 dan@192.168.0.1:/home/dan/arhiva-stud.tar.bz2
b) Sursa poate fi host-ul remote identificat prin nume DNS. Conexiunea foloseste portul destinatie 2323 (daemonul ssh trebuie sa asculte pe acest port). Se copiaza fisierul /etc/passwd in dir. curent.
scp -P 2323 root@host.ro:/etc/passwd .
c) Copiaza recursiv directorul /etc/ sub numele /backup-etc/
scp -rpv /etc/ root@backuphost:/backup-etc/
|
4. rsync
Solutie de backup incrementala folosind rsync si Linux
Inainte de a configura o solutie de backup, care este critica pentru orice utilizator privat sau din mediul de afaceri, trebuie sa ne punem cateva intrebari:
La ce vreau sa fac bakup?
Pentru cat timp vreau sa pastrez backup-ul?
Pe ce mediu vreau sa salvez datele?
Ce importanta au datele care sunt salvate?
Cel mai rau lucru care se poate intampla este ca solutia de backup in care ne-am pus toata increderea sa nu functioneze la momentul oportun (dupa ce s-a produs pierderea datelor, sa nu le putem recupera). De aceea verificarea functionarii backup-ul este de importanta capitala.
rsync (remote syncronization) este o utilitara inclusa in toate distributiile moderne de Linux. Aceasta realizeaza sincronizarea fisierelor si directoarelor locale cu cele de pe un alt calculator remote sau cu un alt director local.
Sintaxa de baza este:
#rsync /sursa /destinatie
Acesta comanda copiaza directorul numit /sursa in directorul numit /destinatie (cu crearea directorul destinatie daca nu exista).
O varianta mai complexa poate fi:
# rsync -e ssh -av --delete /usr/local/backup/ daniel@backup.host:/home/backups/
Acesta comanda face un backup incremental (doar diferentele dintre sursa si destinatie) pe un calculator remote.
-e ssh : reprezinta modalitatea de transport a datelor folosind protocolul ssh. Se creaza un tunel criptat prin care fisierele si directoarele sunt copiate. Pentru a folosi ssh ca protocol de comunicare trebuie sa fie setat ssh sa realizeze autentificare fara parola folosind chei publice si private. Altfel procesul nu poate fi automatizat fiindca trebuie introdusa parola de autentificare.
-a : archive mode, echivalent cu -rlptgoD ( r = recursive, l = copiaza si linkurile, p = pastreaza permisiunile fisierelor intre sursa si destinatie, t = pastreaza ctime, atime, mtime, o=pastreaza owner, g=group pt fisier sau director, D = preserve device (numai pt Root))
-v : verbose
--delete : sterge fisierele sau directoarele de la destinatie care sunt diferite fata de sursa
/usr/local/backup reprezinta sursa backup-ului
daniel@backup.host:/home/backups -> username daniel pe calculatorul remote backup.host (poate fi dat si ca IP) care are drept de scriere in directorul destinatie, iar /home/backups reprezinta destinatia
Rularea automata a script-ului de back-up
Pentru a executa un backup incremental automat in fiecare seara, se creeaza un cronjob.
Intr-un script (fisier cu drept de executie pt owner care trebuie sa fie root pentru a evita eventualele probleme legate de drepturile de acces) scriem comanda de mai sus care realizeaza backup incremental apoi ca root executam
# crontab -e : deschide fisierul cu cron joburile lui root pentru editare folosind editorul implicit (vi, emacs, etc)
0 0 * * * /calea_catre_scriptul_creat_mai_sus: ruleaza scriptul cu numele calea_catre_scriptul_creat_mai_sus la ora 0:0 in fiecare zi
Alta posibilitate ar fi sa copiem scriptul creat mai sus in /etc/cron.daily (redhat, fedora, slackware etc). Fisierele aflate in/etc/cron.daily se executa automat la ora 22:00 (sau cea configurata in /etc/crontab) a fiecarei zile.
rsync este o unealta cu foarte multe optiuni (vezi man rsync) simpla, dar foarte flexibila.
Exemplu
|
1. Pentru a realiza o sincronizare a doua directoare( /home si /backup/home) de pe acelasi computer:
rsync -a --delete /home /backup/home
2. Daca vrem sa sincronizam/copiem un director recursiv, dar vrem sa omitem un anume director sau fisier, putem folosi optiunea --exclude-from
rsync -e ssh -aq --delete --exclude-from=': /etc/.rsync-filter' /home/mihai/ root@10.0.0.2:/home/mihai/
Aceasta comanda sincronizeaza /home/mihai/ de pe calculator local cu /home/mihai/ de pe calculatorul 10.0.0.2 omitand directoarele si fisierele precizate in fisierul .rsync-filter din /etc. Autentificarea la serverul ssh de pe 10.0.0.2 se realizeaza cu userul root.
Fisierul /etc/.rsync-filter trebuie creat si trebuie sa contina pe cate o linie numele directoarelor sau fisierelor pe care vrem sa le excludem sau sa le includem in sincronizare/copiere (pot si folosite si "regular expressions").
O linie este formata din action apoi spatiu si numele fisierelor/directoarelor (patternul) care vor fi excluse sau incluse. Action este + in cazul in care includem pentru sincronizare, respectiv - daca dorim sa expludem.
In acest exemplu in care dorim sa excludem directoarele samba si jeny precum si toate fisierule cu extensie php, fisierul .rsync-filter contine:
- samba/
- jeny/
- *.php
Daca se termina numele in / este director.
Exemplu:
Se copiaza doar directorul task si fisierele py si odt.
+ task/
+ *.py
+ *.odt
- *
3. Pentru a realiza o arhiva gzip a lui /usr/local/backup si a o copia temporar in /tmp si apoi pe host-ul remote 192.168.3.l ca username jeny cu stergerea ulterioara din /tmp
#!/bin/bash
DATE=`date +%F`
tar -czpf /tmp/backupfile-$DATE.gz /usr/local/backup
rsync -e ssh -a /tmp/backupfile-$DATE.gz jeny@192.168.3.1:/home/backups
rm /tmp/backupfile-$DATE.gz
4. rsync poate fi folosit si pentru o simpla copiere ( ca si cp) rsync /etc/named.conf /home/omi/named.conf
Comanda este echivalenta cu:
cp /etc/named.conf /home/omi/named.conf
rsync poate functiona si client-server. Cu clientul de rsync ne conectam la serverul rsync de pe calculatorul destinatie. Astfel nu mai este nevoie de ssh ca protocol de trasport.
|
Dostları ilə paylaş: |