10 Praktesch Beispiller vu Rsync Kommando a Linux


Rsync (Remote Sync) ass de meescht benotzte Kommando fir Dateien an Verzeichnisser op afstand ze kopéieren an ze synchroniséieren, souwéi lokal a Linux/Unix Systemer.

Mat der Hëllef vum rsync Kommando kënnt Dir Är Donnéeën op afstand a lokal iwwer Verzeechnes, Disken an Netzwierker kopéieren an synchroniséieren, Datenbackups ausféieren a spigelen tëscht zwee Linux Maschinnen.

Dësen Artikel erkläert 10 Basis a fortgeschratt Benotzung vum rsync Kommando fir Är Dateien op afstand a lokal op Linux-baséiert Maschinnen ze transferéieren. Dir musst kee Root Benotzer sinn fir de rsync Kommando auszeféieren.

  • Et kopéiert effizient Dateien op oder vun engem Fernsystem a synchroniséiert.
  • Ënnerstëtzt d'Kopie vu Linken, Apparater, Besëtzer, Gruppen an Permissiounen.
  • Et ass méi séier wéi scp (Secure Copy) well rsync e Fernaktualiséierungsprotokoll benotzt deen et erlaabt just d'Ënnerscheeder tëscht zwee Sätz vu Dateien ze transferéieren. Déi éischte Kéier kopéiert et de ganzen Inhalt vun enger Datei oder engem Verzeechnes vu Quell op Destinatioun, awer vun der nächster Kéier kopéiert et nëmmen déi geännert Blocken a Bytes op d'Destinatioun.
  • Rsync verbraucht manner Bandbreedbenotzung well et d'Kompressioun an d'Dekompressiounsmethod benotzt wärend d'Daten op béide Säiten verschécken an kréien.

# rsync options source destination

  • -v : verbose
  • -r : kopéiert Daten rekursiv (awer behalen keng Zäitstempel an Erlaabnis beim Iwwerdroen vun Daten.
  • -a : Archivmodus, deen et erlaabt Dateien rekursiv ze kopéieren an et behält och symbolesch Linken, Dateierechter, Benotzer- a Gruppebesëtzer, an Zäitstempel.
  • -z : Dateidaten kompriméieren.
  • -h : Mënsch liesbar, Ausgangszuelen an engem Mënsch liesbare Format.

[ Dir kënnt och gär hunn: Wéi synchroniséiert Dateien/Verzeichnungen mat Rsync mat Net-Standard SSH Port ]

Installéiert Rsync am Linux System

Mir kënnen den rsync Package mat der Hëllef vum folgenden Kommando an Ärer Linux Verdeelung installéieren.

$ sudo apt-get install rsync   [On Debian/Ubuntu & Mint] 
$ pacman -S rsync              [On Arch Linux]
$ emerge sys-apps/rsync        [On Gentoo]
$ sudo dnf install rsync       [On Fedora/CentOS/RHEL and Rocky Linux/AlmaLinux]
$ sudo zypper install rsync    [On openSUSE]

1. Kopie/Synchroniséiert Dateien a Verzeechnes lokal

De folgende Kommando synchroniséiert eng eenzeg Datei op enger lokaler Maschinn vun enger Plaz op eng aner Plaz. Hei an dësem Beispill muss e Dateinumm backup.tar kopéiert oder synchroniséiert ginn an /tmp/backups/ Dossier.

 rsync -zvh backup.tar.gz /tmp/backups/

created directory /tmp/backups
backup.tar.gz

sent 224.54K bytes  received 70 bytes  449.21K bytes/sec
total size is 224.40K  speedup is 1.00

Am uewe genannte Beispill kënnt Dir gesinn datt wann d'Destinatioun net scho existéiert rsync automatesch e Verzeechnes fir d'Destinatioun erstellt.

De folgende Kommando transferéiert oder synchroniséiert all d'Dateien vun engem Verzeechnes an en anere Verzeechnes an der selwechter Maschinn. Hei an dësem Beispill enthält /root/rpmpkgs e puer rpm Package Dateien an Dir wëllt datt de Verzeichnis an /tmp/backups/ Dossier kopéiert gëtt.

 rsync -avzh /root/rpmpkgs /tmp/backups/

sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 3.47M bytes  received 96 bytes  2.32M bytes/sec
total size is 3.74M  speedup is 1.08

2. Kopie/Synchroniséiert Dateien a Verzeechnes op oder vun engem Server

Dëse Kommando synchroniséiert e Verzeechnes vun enger lokaler Maschinn op eng Fernmaschinn. Zum Beispill gëtt et en Dossier an Ärem lokalen Computer rpmpkgs deen e puer RPM Packagen enthält an Dir wëllt datt den Inhalt vum lokalen Verzeechnes op e Fernserver schéckt, kënnt Dir de folgende Kommando benotzen.

 rsync -avzh /root/rpmpkgs [email :/root/

The authenticity of host '192.168.0.141 (192.168.0.141)' can't be established.
ED25519 key fingerprint is SHA256:bH2tiWQn4S5o6qmZhmtXcBROV5TU5H4t2C42QDEMx1c.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.0.141' (ED25519) to the list of known hosts.
[email 's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 3.74M bytes  received 96 bytes  439.88K bytes/sec
total size is 3.74M  speedup is 1.00

Dëse Kommando hëlleft Iech e Fernverzeechnes mat engem lokalen Verzeechnes ze synchroniséieren. Hei an dësem Beispill gëtt e Verzeechnes /root/rpmpkgs deen op engem Fernserver ass an Ärem lokalen Computer an /tmp/myrpms kopéiert.

 rsync -avzh [email :/root/rpmpkgs /tmp/myrpms

[email 's password: 
receiving incremental file list
created directory /tmp/myrpms
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm

sent 104 bytes  received 3.49M bytes  997.68K bytes/sec
total size is 3.74M  speedup is 1.07

3. Rsync Iwwer SSH

Mat rsync kënne mir SSH (Secure Shell) fir Datenübertragung benotzen, mam SSH Protokoll beim Transfert vun eisen Daten kënnt Dir sécher sinn datt Är Donnéeën an enger gesécherter Verbindung mat Verschlësselung transferéiert ginn, sou datt keen Är Donnéeën liesen kann während se transferéiert ginn iwwer den Drot um Internet.

[Dir kënnt och gären hunn: Wéi sécheren an Harden OpenSSH Server]

Och wa mir rsync benotzen, musse mir de Benotzer/Root Passwuert ubidden fir dës speziell Aufgab z'erreechen, sou datt d'SSH Optioun benotzt gëtt Är Login op eng verschlësselte Manéier schécken fir datt Äert Passwuert sécher ass.

Fir e Protokoll mat rsync ze spezifizéieren musst Dir d'Optioun \-e mat dem Protokollnumm ginn, deen Dir wëllt benotzen. Hei an dësem Beispill wäerte mir den \ssh mat der \-e Optioun benotzen a maachen. Daten Transfert.

 rsync -avzhe ssh [email :/root/anaconda-ks.cfg /tmp

[email 's password: 
receiving incremental file list
anaconda-ks.cfg

sent 43 bytes  received 1.10K bytes  325.43 bytes/sec
total size is 1.90K  speedup is 1.67
 rsync -avzhe ssh backup.tar.gz [email :/backups/

[email 's password: 
sending incremental file list
created directory /backups
backup.tar.gz

sent 224.59K bytes  received 66 bytes  64.19K bytes/sec
total size is 224.40K  speedup is 1.00

[Dir kënnt och gär hunn: Wéi benotzt Dir Rsync fir nei oder geännert/modifizéiert Dateien op Linux ze synchroniséieren]

4. Show Fortschrëtter Beim Transfert vun Daten mat rsync

Fir de Fortschrëtt ze weisen wärend d'Daten vun enger Maschinn op eng aner Maschinn transferéiert ginn, kënne mir d'Optioun '-Progress' benotzen. Et weist d'Dateien an d'Zäit verbleiwen fir den Transfer ze kompletéieren.

 rsync -avzhe ssh --progress /root/rpmpkgs [email :/root/rpmpkgs

[email 's password: 
sending incremental file list
rpmpkgs/
rpmpkgs/httpd-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
          1.47M 100%   31.80MB/s    0:00:00 (xfr#1, to-chk=3/5)
rpmpkgs/mod_ssl-2.4.37-40.module_el8.5.0+852+0aafc63b.x86_64.rpm
        138.01K 100%    2.69MB/s    0:00:00 (xfr#2, to-chk=2/5)
rpmpkgs/nagios-4.4.6-4.el8.x86_64.rpm
          2.01M 100%   18.45MB/s    0:00:00 (xfr#3, to-chk=1/5)
rpmpkgs/nagios-plugins-2.3.3-5.el8.x86_64.rpm
        120.48K 100%    1.04MB/s    0:00:00 (xfr#4, to-chk=0/5)

sent 3.74M bytes  received 96 bytes  1.50M bytes/sec
total size is 3.74M  speedup is 1.00

5. Benotzung vun -include an -exclude Optiounen

Dës zwou Optiounen erlaaben eis Dateien opzehuelen an auszeschléissen andeems Dir Parameteren mat dëser Optioun spezifizéieren hëlleft eis dës Dateien oder Verzeichnisser ze spezifizéieren déi Dir an Ärer Synchronisatioun wëllt enthalen an Dateien an Ordner ausschléissen mat Dir wëllt net transferéiert ginn.

Hei an dësem Beispill enthält de Kommando rsync déi Dateien an den Verzeichnis nëmmen déi mat 'R' ufänkt an all aner Dateien a Verzeichnis ausschléissen.

 rsync -avze ssh --include 'R*' --exclude '*' [email :/var/lib/rpm/ /root/rpm

[email 's password: 
receiving incremental file list
created directory /root/rpm
./
Requirename

sent 61 bytes  received 273,074 bytes  60,696.67 bytes/sec
total size is 761,856  speedup is 2.79

6. Benotzung vun -läschen Optioun

Wann e Fichier oder Verzeechnes net an der Quell existéiert, awer schonn op der Destinatioun existéiert, wëllt Dir vläicht dës existent Datei/Verzeechnes um Zil beim Synchroniséierung läschen.

Mir kënnen d'Optioun '–delete' benotze fir Dateien ze läschen déi net am Quellverzeechnes sinn.

Quell an Zil sinn synchroniséiert. Erstellt elo eng nei Datei test.txt am Zil.

 cd /root/rpm/
 touch test.txt
 rsync -avz --delete [email :/var/lib/rpm/ /root/rpm/

[email 's password: 
receiving incremental file list
deleting test.txt
./
.dbenv.lock
.rpm.lock
Basenames
Conflictname
Dirnames
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Packages
Providename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.001
__db.002
__db.003

sent 445 bytes  received 18,543,954 bytes  2,472,586.53 bytes/sec
total size is 71,151,616  speedup is 3.84

Target huet déi nei Datei genannt test.txt, wann Dir mat der Quell mat der '–delete' Optioun synchroniséiert, huet se d'Datei test.txt geläscht.

7. Setzt d'Max Gréisst vun de Dateien déi transferéiert ginn

Dir kënnt d'Max Dateigréisst spezifizéieren fir ze transferéieren oder ze synchroniséieren. Dir kënnt et mat der Optioun \–max-size maachen. Hei an dësem Beispill ass d'Max Dateigréisst 200k, sou datt dëse Kommando nëmmen déi Dateien transferéiert déi gläich oder méi kleng wéi 200k sinn.

 rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ [email :/root/tmprpm

[email 's password: 
sending incremental file list
created directory /root/tmprpm
./
.dbenv.lock
.rpm.lock
Conflictname
Enhancename
Filetriggername
Group
Installtid
Name
Obsoletename
Recommendname
Requirename
Sha1header
Sigmd5
Suggestname
Supplementname
Transfiletriggername
Triggername
__db.002

sent 129.52K bytes  received 396 bytes  28.87K bytes/sec
total size is 71.15M  speedup is 547.66

8. Automatesch Quelldateien No Erfolleg Transfert läschen

Elo, ugeholl datt Dir den Haaptwebserver an en Datebackup-Server hutt, Dir hutt en deegleche Backup erstallt an et mat Ärem Backup-Server synchroniséiert, elo wëllt Dir dës lokal Kopie vum Backup op Ärem Webserver net behalen.

Also waart Dir bis den Transfert fäerdeg ass an dann déi lokal Backupdatei manuell läschen? Natierlech NEE. Dës automatesch Läschung kann mat der Optioun -Remove-Source-Dateien gemaach ginn.

 rsync --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/

[email 's password: 
backup.tar.gz

sent 795 bytes  received 2.33K bytes  894.29 bytes/sec
total size is 267.30K  speedup is 85.40

 ls -l backup.tar.gz

ls: cannot access 'backup.tar.gz': No such file or directory

9. Maacht eng Dry Run mat rsync

Wann Dir en Newbie benotzt rsync a wësst net wat genau Äre Kommando wäert maachen. Rsync kéint wierklech d'Saachen an Ärem Destinatiounsdatei vermëschen an dann en Undo maachen kann eng tedious Aarbecht sinn.

[ Dir kënnt och gär hunn: Wéi synchroniséiert zwee Apache Webserver/Websäite mat Rsync ]

D'Benotzung vun dëser Optioun mécht keng Ännerunge fir d'Dateien a weist d'Output vum Kommando, wann d'Ausgab genau datselwecht weist wéi Dir wëllt maachen, da kënnt Dir d'Optioun '–dry-run' aus Ärem Kommando läschen a lafen op der terminal.

 rsync --dry-run --remove-source-files -zvh backup.tar.gz [email :/tmp/backups/

[email 's password: 
backup.tar.gz

sent 50 bytes  received 19 bytes  19.71 bytes/sec
total size is 267.30K  speedup is 3,873.97 (DRY RUN)

10. Rsync Set Bandwidth Limit an Transfer Datei

Dir kënnt d'Bandbreed Limit setzen wärend Dir Daten vun enger Maschinn op eng aner Maschinn transferéiert mat der Hëllef vun '–bwlimit'Optioun. Dës Optioun hëlleft eis I/O Bandbreedung ze limitéieren.

 rsync --bwlimit=100 -avzhe ssh  /var/lib/rpm/  [email :/root/tmprpm/
[email 's password:
sending incremental file list
sent 324 bytes  received 12 bytes  61.09 bytes/sec
total size is 38.08M  speedup is 113347.05

Och, par défaut rsync synchroniséiert nëmme geännert Blocken a Bytes, wann Dir explizit déi ganz Datei wëllt synchroniséieren, da benotzt Dir d'Optioun '-W'.

 rsync -zvhW backup.tar /tmp/backups/backup.tar
backup.tar
sent 14.71M bytes  received 31 bytes  3.27M bytes/sec
total size is 16.18M  speedup is 1.10

Dat ass alles mat rsync elo, Dir kënnt Mann Säiten fir méi Optiounen gesinn. Bleift verbonne mat Tecmint fir méi spannend an interessant Tutorials an Zukunft. Loosst Är Kommentaren a Virschléi.