Cum să utilizați utilitarul rsync în Linux pentru a gestiona fișiere într-o rețea

rsync (Remote Sync) este un utilitar puternic și eficient în Linux utilizat pentru sincronizarea fișierelor și a directoarelor între două locații dintr-o rețea. Este utilizat în mod obișnuit pentru backup-uri, oglindirea datelor și transferul eficient de fișiere prin copierea doar a diferențelor dintre sursă și destinație.

Acest ghid vă va ghida prin instalarea, utilizarea de bază și tehnicile avansate ale rsync pentru a vă ajuta să gestionați eficient fișierele dintr-o rețea.

Instalarea rsync

Majoritatea distribuțiilor Linux vin cu rsync preinstalat. Pentru a verifica dacă este instalat, executați

rsync --version

Dacă nu este instalat, îl puteți instala utilizând managerul de pachete al distribuției dvs:

  • Debian/Ubuntu:
    sudo apt install rsync
  • RHEL/CentOS:
    sudo yum install rsync
  • Fedora:
    sudo dnf install rsync
  • Arch Linux:
    sudo pacman -S rsync

📌 Cum să transferați fișiere de pe Windows pe un server la distanță folosind rsync prin PuTTY SSH?
Pentru a utiliza rsync pe Windows prin PuTTY SSH, trebuie să aveți instalat:

PuTTY pentru conexiuneSSH
rsync și OpenSSH pe Windows
Pagent (opțional) pentru autentificarea automată cu cheia SSH

Instalarea rsync pe Windows utilizând MSYS2

Dacă ați descărcat MSYS2, puteți instala rsync cu ușurință utilizând pacman, managerul de pachete al MSYS2.

  • Actualizarea MSYS2 și a pachetelor existente
    În terminalul MSYS2, executați:

pacman -Syu

  • Dacă MSYS2 se închide automat după actualizare, deschideți-l din nou și executați:

pacman -Su
✅ Acest pas vă asigură că aveți cea mai recentă versiune a managerului de pachete.

  • Instalați rsync
    Acum instalați rsync utilizând:

pacman -S rsync


💡 Dacă aveți nevoie de openssh pentru transferul SSH, instalați-l și pe acesta:

pacman -S openssh

Verificarea instalării
Pentru a verifica dacă rsync a fost instalat corect, executați:

rsync --version

Sintaxa de bază rsync

Sintaxa de bază a rsync este:

rsync [opțiuni] sursă destinație

Opțiuni utilizate frecvent

  • a: Mod arhivă (păstrează legăturile simbolice, permisiunile, marcajele temporale etc.)
  • v: ieșire verbală
  • z : Comprimă datele fișierului în timpul transferului
  • P: Afișează progresul în timpul transferului
  • r: Copierea recursivă a directoarelor
  • e : Specificați shell-ul de la distanță (ca SSH)

Utilizarea rsync pentru sincronizarea fișierelor locale

Pentru sincronizarea fișierelor între două directoare locale:

rsync -av /source/directory/ /destination/directory/

Bara oblică / din sursă asigură copierea doar a conținutului directorului, nu a directorului în sine.

Utilizarea rsync într-o rețea

Transferul fișierelor către un server la distanță

Pentru a transfera fișiere de pe un sistem local către un server la distanță:
rsync -avz /local/directory/ user@remote_host:/remote/directory/
*După ce am adăugat comanda în MSYS2, vom adăuga datele SSH pentru a ne conecta la serverul de la distanță și rezultatul va fi afișat:

Această comandă copiază în siguranță fișierele pe serverul la distanță utilizând SSH.

Verificați dacă comanda a fost îndeplinită cu succes pe serverul de la distanță:

ls -lah /home/user/test_backup/ [put_your_directory]

Transferul fișierelor de pe un server la distanță pe o mașină locală

Pentru a copia fișiere de pe un server de la distanță pe computerul local. În mod implicit, rsync utilizează SSH pentru comunicarea securizată. Puteți specifica în mod explicit SSH cu:

rsync -avz -e ssh /local/directory/ user@remote_host:/remote/directory/

Dacă SSH utilizează un port care nu este implicit (de exemplu, 2222), specificați-l astfel:

rsync -avz -e "ssh -p 2222" /local/directory/ user@remote_host:/remote/directory/

Sincronizarea și ștergerea fișierelor suplimentare

Pentru a șterge fișierele suplimentare din destinație care nu sunt prezente în sursă:

Primul pas este să adăugăm fișiere suplimentare în terminalul PuttySSH:

cd /home/user/test_backup/

touch file1.txt file2.log file3.jpg

mkdir extra_files

touch extra_files/file_vechi.txt

Acum sincronizați directorul fără anumite fișiere, iar rsync va șterge fișierele care nu mai sunt în sursă:

rsync -av --delete /source/directory/ /destination/directory/

📌 Ce face aceasta?
Toate fișierele care sunt pe server, dar NU în test/local vor fi șterse.

Rezultatul MSYS2

PuttySSH rezultat

Avertisment: Utilizați –delete cu prudență, deoarece elimină permanent fișierele de la destinație.

Excluderea fișierelor și a directoarelor

Pentru a exclude anumite fișiere sau directoare:

rsync -av --exclude 'file_or_directory' /source/ user@remote_host:/destination/
Rezultat MSYS2

PuttySSH rezultat

Pentru excluderi multiple, utilizați:

rsync -av --exclude={'file1','dir1','*.log'} /source/ user@remote_host:/destination/

Rularea rsync ca proces de fundal

Puteți rula rsync în fundal utilizând nohup:

nohup rsync -avz /source/ user@remote_host:/destination/ &

Acest lucru permite procesului să continue chiar și după închiderea sesiunii.

În directiva locală am adăugat un nou fișier new_file.txt33333333, apoi am deconectat terminalul PuttySSH, iar comanda de mai sus ne permite să trimitem fișiere chiar și atunci când serverul este deconectat.

Automatizarea transferurilor de fișiere cu Cron Jobs

Pentru a programa sincronizarea automată utilizând cron, deschideți crontab:

crontab -e

Adăugați un job pentru a rula rsync în fiecare zi la miezul nopții:

0 0 * * * * rsync -avz /source/ user@remote_host:/destination/

Concluzie

rsync este un instrument versatil și puternic pentru sincronizarea și transferul fișierelor într-o rețea. Fie că faceți copii de siguranță ale datelor, oglindiți directoare sau migrați fișiere între servere, rsync oferă o soluție eficientă și fiabilă. Prin valorificarea diverselor sale opțiuni și capacități de automatizare, vă puteți gestiona eficient fișierele în mediile Linux.