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 luirsync
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/
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/
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.
.