Rsync este un utilitar rapid si versatil in linia de comanda care sincronizeaza fisiere si foldere între doua locatii la distanta, sau de la / la un demon rsync la distanta. Acesta ofera un transfer rapid de fisiere prin transferul numai a diferentelor dintre sursa si locatiile de destinatie.
Rsync poate fi utilizat pentru oglindire de date, backup - uri incremental, copierea fisierelor între sisteme si ca un înlocuitor pentru comenzi scp
si cp
pentru utilizarea de zi cu zi.
In acest tutorial, va vom arata cum sa utilizati rsync prin exemple practice si explicatii detaliate ale optiunilor cele mai comune rsync.
instalarea Rsync
Utilitarul rsync este pre-instalat pe cele mai multe distributii Linux si Mac OSX. Puteti verifica daca acesta este instalat pe sistemul dumneavoastra tastând:
rsync --version
rsync version 3.1.2 protocol version 31
Daca nu aveti rsync instalat pe sistemul dvs., puteti instala cu usurinta folosind managerul de pachete de distributie dumneavoastra.
Instalati Rsync pe Ubuntu si Debian
sudo apt install rsync
Instalati Rsync pe CentOS si Fedora
sudo yum install rsync
Rsync sintaxa comanda
Înainte de a intra în modul de utilizare a comanda rsync, sa începem prin revizuirea sintaxei de baza.
Expresiile de utilitate rsync iau forma urmatoare:
Local to Local: rsync [OPTION]... SRC [SRC]... DEST Local to Remote: rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST Remote to Local: rsync [OPTION]... [USER@]HOST:SRC [DEST]
OPTION- Cu privire la optiunile rsync
SRC - Directorul sursa
DEST - director de destinatie
USER - nume de utilizator la distanta
HOST - Gazda la distanta
Rsync ofera o serie de optiuni care controleaza fiecare aspect al comportamentului sau. Cele mai utilizate optiuni sunt:
-a, --archive
Modul de arhiva, echivalent -rlptgoD. Utilizate în mod obisnuit optiunea care va sincronizeaza directoare recursiv, dispozitive speciale de transfer si de bloc, pastreaza legaturile simbolice, timpii de modificare, de grup, dreptul de proprietate si permisiunile.
-z, --compress
. Aceasta optiune va forta rsync pentru a comprima datele pe masura ce este trimis la masina de destinatie. Utilizati aceasta optiune numai în cazul în care conexiunea la aparatul corespondent este lent.
-P, Echivalent --partial --progress.
Aceasta optiune va spune rsync pentru a afisa o bara de progres în timpul transferului si pentru a pastra fisierele partial transferate. Este util atunci când transferul de fisiere mari prin conexiuni de retea sau instabile lente.
--delete
Când utilizati aceasta optiune rsync va sterge fisierele straine din locatia de destinatie. Este util pentru oglindire.
-q, --quiet.
Utilizati aceasta optiune daca doriti sa suprime mesajele non-eroare.
-e.
Aceasta optiune va permite sa alegeti o coaja de la distanta diferita. Implicit Rsync este configurat sa foloseasca ssh.
Utilizare de baza Rsync
Pentru a copia un singur fisier local in o alta locatie ar trebui sa executati urmatoarea comanda:
rsync -a /opt/filename.zip /tmp/
Daca doriti sa salvati fisierul sub un alt nume trebuie sa specificati numele nou:
rsync -a /opt/filename.zip /tmp/newfilename.zip
In exemplul de mai jos vom crea o copie de rezerva locala a fisierelor site:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Daca directorul de destinatie nu exista rsync al va crea.
Este demn de mentionat faptul ca rsync ofera un tratament diferit la directoarele sursa cu bara oblica /. Daca adaugati bara oblica pe directorul sursa va copia doar continutul directorului catre directorul de destinatie. Când bara oblica este omisa rsync va copia directorul sursa din interiorul directorul de destinatie.
Cum se utilizeaza Rsync pentru sincronizare de date de la / la o masina de la distanta
Când se foloseste rsync pentru transferul de la distanta, acesta trebuie sa fie instalat pe ambele masini: sursa si destinatie. Noile versiuni ale rsync sunt configurate pentru a utiliza SSH ca implicit la distanta.
În urmatorul exemplu, transferul unui director de la un local la o masina de la distanta:
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Daca nu ati setat o autentificare SSH passwordless la masina de la distanta, vi se va cere sa introduceti parola de utilizator.
Daca doriti sa transferati date de la o distanta la o masina locala, atunci trebuie sa folositi locatia de la distanta ca sursa:
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Daca gazda de la distanta SSH este de a asculta pe un alt port decât cel implicit 22 , atunci puteti specifica portul folosind argumentul -e
:
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Când transferati cantitati mari de date, este recomandat sa rulati comanda rsync în interiorul unui ecran de sesiune sau sa folositi optiunea -P
.
Excludeti Fisiere si Directoare
Atunci când cu exceptia fisierelor sau directoare trebuie sa utilizati caile lor relative. Exista doua optiuni pentru a exclude fisiere si directoare atunci când se utilizeaza rsync.
Prima optiune este de a utiliza argumentul --exclude
si specificati fisierele si directoarele pe care doriti sa le excludeti pe linia de comanda.
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
A doua optiune este de a utiliza argumentul --exclude -from
si specificati fisierele si directoarele pe care doriti sa le excludeti într - un fisier.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txt node_modules tmp
Concluzie
Ati învatat cum sa folositi Rsync pentru a copia, sincroniza fisiere si directoare.