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.