Comanda Rsync în Linux cu exemple

rsync este un utilitar de linie de comandă rapid și versatil pentru sincronizarea fișierelor și directoarelor între două locații prin intermediul unui shell la distanță sau de la/către un daemon Rsync la distanță. Oferă un transfer incremental rapid de fișiere, transferând doar diferențele dintre sursă și destinație.

Rsync poate fi utilizat pentru oglindirea datelor, copii de rezervă incrementale, copierea fișierelor între sisteme și ca înlocuitor pentru comenzile scp, sftp și cp.

Acest articol explică modul de utilizare a rsync prin exemple practice și explicații detaliate ale celor mai frecvente opțiuni rsync.

Instalarea Rsync #

Utilitarul rsync este preinstalat pe majoritatea distribuțiilor Linux și macOS. Dacă nu aveți rsync instalat pe sistemul dumneavoastră, îl puteți instala cu ușurință folosind managerul de pachete al distribuției dumneavoastră.

Instalează Rsync pe Ubuntu și Debian #

sudo apt install rsync

Instalează Rsync pe CentOS și Fedora #

sudo yum install rsync

Sintaxa comenzii Rsync #

Înainte de a intra în modul de utilizare a comenzii rsync, să începem prin a trece în revistă sintaxa de bază.

Expresiile utilitarului rsync au următoarea formă:

Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC... 
  • OPTION – Opțiunile rsync.
  • SRC – Directorul sursă.
  • DEST – Directorul de destinație.
  • USER – Numele de utilizator la distanță.
  • HOST – Numele de gazdă la distanță sau adresa IP.

rsync oferă o serie de opțiuni care controlează modul în care se comportă comanda. Cele mai utilizate opțiuni sunt:

  • -a, --archive, modul arhivă, echivalent cu -rlptgoD. Această opțiune îi spune lui rsync să sincronizeze recursiv directoarele, să transfere dispozitive speciale și de bloc, să păstreze legăturile simbolice, timpii de modificare, grupurile, proprietatea și permisiunile.
  • -z, --compress. Această opțiune forțează rsync să comprime datele pe măsură ce acestea sunt trimise către mașina de destinație. Utilizați această opțiune numai dacă conexiunea cu mașina la distanță este lentă.
  • -P, echivalent cu --partial --progress. Când se utilizează această opțiune, rsync afișează o bară de progres în timpul transferului și păstrează fișierele transferate parțial. Este utilă atunci când se transferă fișiere mari pe conexiuni de rețea lente sau instabile.
  • --delete. Când se utilizează această opțiune, rsync șterge fișierele străine din locația de destinație. Este utilă pentru oglindirea.
  • -q, --quiet. Utilizați această opțiune dacă doriți să suprimați mesajele care nu sunt de eroare.
  • -e. Această opțiune vă permite să alegeți un alt shell la distanță. În mod implicit, rsync este configurat să folosească ssh.

Utilizare Rsync de bază #

Cazul de utilizare cel mai de bază al rsync este de a copia un singur fișier dintr-o locație locală în alta. Iată un exemplu:

rsync -a /opt/filename.zip /tmp/

Utilizatorul care execută comanda trebuie să aibă permisiuni de citire pe locația sursă și permisiuni de scriere pe locația de destinație.

Primirea numelui fișierului de la locația de destinație copiază fișierul cu numele curent. Dacă doriți să salvați fișierul sub un alt nume, specificați noul nume pe partea de destinație:

rsync -a /opt/filename.zip /tmp/newfilename.zip

Puterea reală a rsync vine atunci când sincronizați directoare. Exemplul de mai jos arată cum să creați o copie de rezervă locală a fișierelor unui site web:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Dacă directorul de destinație nu există, rsync îl va crea.

Este de menționat că rsync acordă un tratament diferit directoarelor sursă cu o bară oblică finală (/). În cazul în care directorul sursă are o bară oblică finală, comanda va copia doar conținutul directorului în directorul de destinație. Atunci când bara oblică finală este omisă, rsync copiază directorul sursă în interiorul directorului de destinație.

Utilizarea rsync pentru sincronizarea datelor de la/la o mașină la distanță #

Când folosiți rsync pentru a transfera date de la distanță, rsync trebuie să fie instalat atât pe mașina sursă, cât și pe cea de destinație. Noile versiuni ale rsync sunt configurate pentru a utiliza SSH ca shell de la distanță implicit.

În următorul exemplu, transferăm un director de pe o mașină locală pe o mașină la distanță:

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Dacă nu ați setat o autentificare SSH fără parolăpe mașina la distanță, vi se va cere să introduceți parola utilizatorului.

Pentru a transfera date de la o mașină de la distanță la o mașină locală, utilizați locația de la distanță ca sursă:

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Dacă SSH pe gazda de la distanță ascultă pe un alt port decât cel implicit 22 , specificați portul folosind opțiunea -e:

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

Când se transferă cantități mari de date se recomandă să se execute comanda rsync în interiorul unei sesiuni de ecran sau să se utilizeze opțiunea -P:

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Exclude Files and Directories #

Există două opțiuni pentru a exclude fișiere și directoare. Prima opțiune este de a utiliza argumentul --exclude și de a specifica fișierele și directoarele pe care doriți să le excludeți în linia de comandă.

Când excludeți fișiere sau directoare, trebuie să utilizați căile lor relative la locația sursă.

În exemplul următor se arată cum se exclud directoarele node_modules și tmp:

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

A doua opțiune este de a utiliza opțiunea --exclude-from și de a specifica fișierele și directoarele pe care doriți să le excludeți într-un fișier.

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txt
node_modulestmp

Concluzie #

V-am arătat cum să folosiți Rsync pentru a copia și sincroniza fișiere și directoare. Există mult mai multe de învățat despre Rsync la pagina Manualul utilizatorului Rsync.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.