Rsync pentru Linux: sincronizarea, copierea și salvarea fișierelor

9 min citire - 24 mai 2025

hero section cover
Cuprins
  • Rsync pentru Linux: cum să sincronizați, să copiați și să faceți backup la fișiere ca un profesionist
  • Ce este rsync?
  • De ce să folosiți rsync în locul cp sau scp
  • Indicatori rsync obișnuiți
  • Exemple Rsync
  • Automatizarea rsync cu cron
  • Concluzii
Distribuie

Cum să utilizați rsync pe Linux pentru transferuri incrementale, sincronizări la distanță prin SSH, backup-uri programate cu cron și evitarea capcanei trailing-slash.

Rsync pentru Linux: cum să sincronizați, să copiați și să faceți backup la fișiere ca un profesionist

Rsync este instrumentul standard pentru copierea fișierelor între sistemele Linux. Este mai rapid decât cp sau scp pentru orice operațiune pe care o executați de mai multe ori, se recuperează în cazul întreruperilor de rețea și transferă doar ceea ce s-a modificat efectiv. Acest articol prezintă ce face rsync, opțiunile utile, exemplele pe care le veți folosi cel mai des și cum să-l programați cu cron.


 

Ce este rsync?

Rsync este un utilitar de linie de comandă pentru copierea și sincronizarea fișierelor între locații. Funcționează local, prin SSH către o gazdă la distanță sau împotriva unui demon rsync. Diferența cheie față de cp sau scp: rsync compară mai întâi sursa și destinația, apoi transferă doar diferențele. Într-un director de 100 GB în care s-au modificat 200 MB, rsync mută 200 MB. cp și scp mută totul.

Este inclus în fiecare distribuție Linux modernă. Dacă lipsește: apt install rsync sau dnf install rsync.

De ce să folosiți rsync în locul cp sau scp

Trei motive pentru care rsync este superior pentru orice copiere non-trivială:

  • Este incremental. Rulările ulterioare transferă doar octeții modificați, nu fișierele întregi. Pentru backupuri și oglinzi, acest lucru transformă o sarcină care dura o noapte întreagă într-una de câteva minute.
  • Rezistă la întreruperi. Cu --partial, un fișier de 50 GB transferat pe jumătate se reia de unde s-a oprit, în loc să înceapă de la capăt.
  • Păstrează metadatele. Modul arhivă (-a) păstrează permisiunile, proprietatea, legăturile simbolice și marcajele de timp. Este esențial pentru fișierele de sistem, arborii sursă și orice altceva unde atributele contează.

Pentru copii unice ale fișierelor mici, scp este suficient. Pentru orice se repetă, orice consumă multă lățime de bandă sau orice ar trebui să reluați, folosiți rsync.

Indicatori rsync obișnuiți

Opțiunile pe care le veți folosi de fapt:

OpțiuneCe face
-aMod arhivă. Păstrează permisiunile, proprietatea, legăturile simbolice și marcajele de timp. Echivalent cu -rlptgoD.
-vVerbose. Afișează lista fișierelor transferate.
-zComprimare în timpul transferului. Util pentru conexiuni lente sau costisitoare, mai puțin util în rețeaua LAN sau pentru conținut deja comprimat.
-PCombină --partial și --progress. Reluarea transferurilor întrerupte, afișarea progresului în timp real.
--deleteȘterge fișierele de la destinație care nu există la sursă. Necesar pentru o oglindire adevărată.
--excludeOmite fișierele care se potrivesc unui model.
--exclude-from=FILECitește tiparele de excludere dintr-un fișier. Mai curat decât concatenarea mai multor --exclude opțiuni.
--dry-runAfișează ce s-ar întâmpla fără a transfera nimic.
--bwlimit=KBPSLimitează utilizarea lățimii de bandă în kilobyți pe secundă. Util pentru backup-urile care rulează în timpul programului de lucru.
--checksumCompară fișierele după suma de control în loc de dimensiune și data modificării. Este mai lent, dar detectează cazurile marginale.
-e sshUtilizează SSH pentru transfer. Implicit în majoritatea instalărilor moderne.

Comportamentul implicit compară dimensiunea fișierului și data modificării, ceea ce este rapid și aproape întotdeauna corect. Treceți la --checksum dacă un proces de implementare rescrie timestamp-urile fără a modifica conținutul sau dacă bănuiți o corupție la nivel de biți.

Exemple Rsync

Copiați un director local:

rsync -av /source/path/ /destination/path/

Sincronizare cu un server la distanță prin SSH:

rsync -avz /local/dir/ user@remote:/remote/dir/

Executare de probă înainte de a efectua operațiuni distructive:

rsync -avz --dry-run /local/dir/ user@remote:/dir/

Oglindiți două directoare, inclusiv ștergerile de la destinație:

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

Excludeți jurnalele și un director temporar:

rsync -av --exclude='*.log' --exclude='tmp/' /src/ /dest/

Reluați un transfer de dimensiuni mari care ar putea fi întrerupt:

rsync -avP user@remote:/backups/big.img /local/

Dacă sesiunea SSH se întrerupe, rulați din nou aceeași comandă. Cu -P, rsync reia de unde s-a oprit, în loc să înceapă de la zero.

Limitați lățimea de bandă la 50 MB/s pentru o copie de rezervă în afara orelor de vârf, astfel încât să nu satureze legătura ascendentă:

rsync -avz --bwlimit=50000 /local/dir/ user@remote:/dir/

Capcana cu slash-ul de la sfârșit

Cea mai frecventă greșeală în rsync:

rsync -av /source  /destination/    # copies the 'source' directory INTO /destination
rsync -av /source/ /destination/    # copies the CONTENTS of /source into /destination

O bară oblică la sfârșitul sursei înseamnă „tot ce se află în acest director”. Lipsa barei oblice la sfârșit înseamnă „acest director în sine”. Rulați cu --dry-run prima opțiune dacă nu sunteți sigur, mai ales când este combinată cu --delete.

Automatizarea rsync cu cron

Pentru backup-urile programate, aveți nevoie de trei lucruri:

  1. Acces SSH fără parolă la destinație. Sarcinile cron nu pot introduce parole. Generați o cheie și copiați-o pe gazda de backup:

    ssh-keygen -t ed25519
    ssh-copy-id user@backup-host
  2. Un script, nu o singură linie în crontab. Mai ușor de testat, mai ușor de înregistrat:

    #!/bin/bash
    LOG=/var/log/rsync-backup.log
    rsync -az --delete /etc/ user@backup:/backups/$(hostname)/etc/ >> "$LOG" 2>&1

    Faceți-l executabil cu chmod +x.

  3. O intrare cron pentru a-l rula. Editați cu crontab -e:

    0 2 * * * /usr/local/bin/rsync-backup.sh

    Acest lucru rulează scriptul în fiecare noapte la ora 02:00.

Două îmbunătățiri care merită făcute în producție: încadrați scriptul în flock astfel încât o sarcină de lungă durată să nu se suprapună cu rularea din noaptea următoare și redirecționați ieșirea prin logger astfel încât eșecurile să ajungă în jurnalul de sistem, unde pot fi detectate de sistemul de monitorizare.

Concluzii

Rsync este unul dintre puținele instrumente Linux în cazul cărora timpul petrecut pentru a învăța semnificația opțiunilor se amortizează aproape imediat. Punctele principale:

  • Transferurile incrementale și suportul pentru reluare fac din rsync alegerea potrivită pentru orice operațiune pe care o executați de mai multe ori
  • -a pentru modul de arhivare, -z pentru compresie, -P pentru reluare și progres, --delete pentru oglinzi adevărate
  • Atenție la bara oblică finală din calea sursă, mai ales cu --delete
  • Combinați-l cu cron și cheile SSH pentru backupuri programate fără intervenție manuală

Pentru sarcini mari de backup care mută date între facilități, rularea rsync pe un VPS cu lățime de bandă nelimitată înseamnă că ferestrele de backup nu sunt limitate de plafoane de transfer.

Blog

În prim plan săptămâna aceasta

Mai multe articole
Oboseala ochilor cauzată de ecranele digitale: Cum să vă protejați vederea într-o lume dominată de ecrane

Oboseala ochilor cauzată de ecranele digitale: Cum să vă protejați vederea într-o lume dominată de ecrane

Te uiți la ecran toată ziua? Află cum poți reduce oboseala oculară cauzată de ecranele digitale cu ajutorul unor tehnici și instrumente dovedite. Acest ghid este esențial pentru cei care lucrează de la distanță, pentru dezvoltatori și pentru oricine activează în domeniul tehnologiei.

4 min citire - 21 mai 2025

De ce este important să aveți un VPS performant și nelimitat

8 min citire - 9 mai 2025

Mai multe articole
background image

Aveți întrebări sau aveți nevoie de o soluție personalizată?

icon

Opțiuni flexibile

icon

Acoperire globală

icon

Implementare instantanee

icon

Opțiuni flexibile

icon

Acoperire globală

icon

Implementare instantanee