Linux rsync-commando: opties en voorbeelden

Kopieer je elke keer een hele map opnieuw om twee servers gelijk te houden, dan is de overdracht de volledige grootte, ook als er maar één bestand is veranderd. Het rsync-commando is de afkorting van remote sync. Het vergelijkt bron en doel en stuurt alleen de bestanden die verschillen, en werkt op dezelfde manier tussen lokale mappen en tussen servers die via SSH verbonden zijn. Dit artikel behandelt het basisgebruik, de opties en voorbeelden van de twee verbindingsmethoden: SSH en de rsync-daemon.
De uitvoer in dit artikel komt van rsync 3.2.7 op AlmaLinux 9.8. Is rsync niet geïnstalleerd, installeer het dan met de pakketbeheerder.
# RHEL-familie
dnf -y install rsync
# Debian-familie
apt -y install rsync✅ Basisgebruik
De basissyntaxis is als volgt.
rsync -opties bron doelNet als bij het cp-commando, schrijf je eerst de bron en daarna het doel. Zet je een slash [/] achter de bron, dan komt alleen de inhoud van de map in het doel; zonder slash gaat de map zelf erin.
~]# rsync -av www/ backup/
sending incremental file list
index.html
img/
img/logo.png
~]# rsync -av www backup/
sending incremental file list
www/
www/index.html
www/img/
www/img/logo.pngVoer je hetzelfde commando opnieuw uit, dan is de bestandslijst leeg en zakt het aantal verzonden bytes tot enkele honderden. Bestanden met dezelfde grootte en wijzigingstijd worden overgeslagen.
~]# rsync -av www/ backup/
sending incremental file list
sent 166 bytes received 13 bytes 358.00 bytes/sec
total size is 3,015 speedup is 16.84Met alleen -r en zonder -a blijven de wijzigingstijden niet behouden, dus de volgende keer worden dezelfde bestanden opnieuw verstuurd. Gebruik bij het synchroniseren van mappen standaard -a.
De optie -n toont alleen welke bestanden zouden veranderen, zonder iets over te dragen, en de uitvoer eindigt met [(DRY RUN)]. Controleer opties die bestanden op het doel verwijderen, zoals --delete, eerst met -n en voer ze dan echt uit.
~]# rsync -avn --delete www/ backup/
sending incremental file list
deleting old.bak
index.html
sent 188 bytes received 39 bytes 454.00 bytes/sec
total size is 3,013 speedup is 13.27 (DRY RUN)✅ Opties van het rsync-commando & simulator
| Optie | Uitleg | |
|---|---|---|
| -a | --archiveKopieert ook submappen en behoudt rechten, eigenaar, wijzigingstijd en symbolische links (gelijk aan -rlptgoD) | |
| -v | --verboseToont de naam van elk overgedragen bestand en de totalen | |
| -z | --compressComprimeert bestandsdata tijdens de overdracht | |
| -r | --recursiveKopieert ook submappen (onderdeel van -a) | |
| -t | --timesBehoudt wijzigingstijden (onderdeel van -a). Dit bepaalt welke bestanden de volgende keer worden overgeslagen | |
| -n | --dry-runToont alleen de bestanden die zouden veranderen, zonder overdracht, en markeert het eind met (DRY RUN) | |
| -u | --updateSlaat bestanden over die op het doel nieuwer zijn | |
| -h | --human-readableToont bytes in K, M en G | |
| -P | Gelijk aan --partial --progress. Toont de voortgang per bestand en hervat onderbroken overdrachten | |
| -i | --itemize-changesToont per bestand wat er veranderde als code>f+++++++++ nieuw bestand · >f.st...... grootte en tijd veranderd · *deleting verwijderd | |
| -e | --rsh=COMMANDGeeft de externe shell op-e 'ssh -p 2222 -i /root/.ssh/key.pem' | |
| --delete | Verwijdert van het doel bestanden die niet meer in de bron staan (vereist -r of -a) | |
| --exclude=PATTERN | Sluit bestanden en mappen uit die op het patroon passen--exclude '*.tmp' --exclude 'cache/' | |
| --include=PATTERN | Vóór --exclude gezet: houdt alleen dat patroon buiten de uitsluiting | |
| --max-size=SIZE | Draagt geen bestanden over die groter zijn dan de opgegeven grootte (--min-size voor kleinere bestanden)--max-size=3M --min-size=10k | |
| --bwlimit=RATE | Beperkt de overdrachtssnelheid, in KiB/s | |
| --stats | Toont het aantal bestanden en overdrachtsstatistieken |
✅ Verbindingsmethoden: SSH en de rsync-daemon
Er zijn twee manieren om met een externe server te verbinden. Eén dubbele punt [:] na de host gaat via SSH; twee dubbele punten [::] maken direct verbinding met de rsync-daemon op poort 873.
| Soort | SSH-methode (:) | Methode met de rsync-daemon (::) |
|---|---|---|
| Syntaxis | rsync -opties user@host:/pad /lokaal/pad | rsync -opties host::module/pad /lokaal/pad |
| Poort | SSH-poort (standaard 22) | 873 |
| Versleuteling | Versleuteld door SSH | Geen versleuteling |
| Authenticatie | SSH-sleutel of wachtwoord | hosts allow in rsyncd.conf; account en wachtwoord optioneel |
| Instelling op de server | Geen (werkt zodra SSH-toegang werkt) | rsync-daemon installeren, /etc/rsyncd.conf, poort 873 openen |
| Doel | Back-up en uitrol tussen servers (de standaardkeuze) | Mirroring op een intern netwerk zonder SSH-accounts uit te delen |
🔲 SSH-methode
Kun je de server via SSH bereiken, dan werkt het zonder instelling op de server. Is de poort anders of gebruik je een sleutelbestand, zet het ssh-commando dan zoals het is in de optie -e.
# lokaal → extern
rsync -avz /home/2server_data/ root@192.168.45.239:/home/1server_data/
# extern → lokaal
rsync -avz root@192.168.45.239:/home/1server_data/html_Remote /home/2server_data
# SSH-poort en sleutelbestand opgeven
rsync -avz -e 'ssh -p 2222 -i /root/.ssh/key.pem' root@192.168.45.239:/home/1server_data/ /home/2server_data
Om bepaalde bestanden of mappen weg te laten, voeg je --exclude één keer per patroon toe, of zet je de patronen tussen accolades en schrijf je ze één keer.
rsync -avz --exclude 'html_Remote_Excertion' --exclude 'Exception_File' root@192.168.45.239:/home/1server_data/ /home/2server_data
rsync -avz --exclude={'html_Remote_excertion/*','Exception_File'} root@192.168.45.239:/home/1server_data/ /home/2server_data
🔲 Methode met de rsync-daemon
De rsync-daemon geeft per module toegang op poort 873 zonder SSH-account. Het verkeer is niet versleuteld, dus je gebruikt het tussen servers op hetzelfde interne netwerk.
Installeer op AlmaLinux 9 het pakket rsync-daemon en start de service. Open poort 873 op servers met firewalld; open hem op cloudservers in de firewall van de console. De xinetd-methode van RHEL 8 en ouder bestaat in 9 niet meer.
dnf -y install rsync-daemon
systemctl enable --now rsyncd
firewall-cmd --permanent --add-port=873/tcp
firewall-cmd --reloadStel in het configuratiebestand [/etc/rsyncd.conf] de modulenaam, het pad en de toegestane hosts in. Met read only op yes kunnen externe clients er alleen van ophalen.
[myhome]
path = /home
uid = root
gid = root
use chroot = yes
read only = yes
hosts allow = 192.168.45.182
max connections = 3
timeout = 30Aan de externe kant toont alleen een dubbele dubbele punt na de host de lijst met modules; voeg je de modulenaam toe, dan zie je de bestanden erin.
~]# rsync 192.168.45.239::
myhome
home
~]# rsync 192.168.45.239::myhome
drwxr-xr-x 4,096 2025/06/12 22:14:39 .
drwxr-xr-x 4,096 2025/06/12 22:21:10 1server_data
drwxr-xr-x 4,096 2025/06/12 22:14:39 2server_dataKopiëren gebeurt in de vorm [host::module/pad]. --delete verwijdert van het doel bestanden die niet in de bron staan, en --include houdt alleen de items die vóór --exclude staan buiten de uitsluiting.
~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
./
Exception_File
html_Remote/
html_Remote_Excertion/
sent 58 bytes received 332 bytes 780.00 bytes/sec
total size is 442 speedup is 1.13
~]# rsync -avz --delete 192.168.45.239::myhome/1server_data/ /home/2server_data/
~]# rsync -avz --include '*.html' --exclude 'exclude.txt' 192.168.45.239::myhome/1server_data/ /home/2server_data/

Op een server met SELinux aan kan toegang tot het modulepad worden geblokkeerd met [Permission denied (13)]. In de test lukte het na het uitzetten van SELinux met [setenforce 0].
~]# rsync -avz 192.168.45.239::myhome/1server_data/ /home/2server_data/
receiving incremental file list
rsync: change_dir "/1server_data" (in myhome) failed: Permission denied (13)
sent 8 bytes received 90 bytes 65.33 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see Vorige errors) (code 23) at main.c(1658) [Receiver=3.1.2]--bwlimit beperkt de overdrachtssnelheid in KiB/s, en met -P erbij zie je de voortgang van elk bestand. --max-size en --min-size dragen alleen bestanden binnen het opgegeven groottebereik over.
rsync -avzP --bwlimit=100 192.168.45.239::myhome/1server_data/ /home/2server_data/
rsync -avz --max-size='3M' --min-size='10k' 192.168.45.239::myhome/1server_data/ /home/2server_data/
ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.