- Rsync synchroniseert op basis van verschillen en bespaart zo tijd en bandbreedte dankzij het delta-overdrachtsalgoritme.
- Slashes aan het einde zijn belangrijk: SOURCE/ kopieert de inhoud. Zonder slash wordt de map in de bestemming aangemaakt.
- Veiligheid en betrouwbaarheid: gebruik SSH, toetsen, -P om te hervatten en --dry-run voor --delete.
- Volledige flexibiliteit: uitsluitingen, limieten, compressie, back-ups en geplande taken met cron.

Als je met werkt Linux en je hebt dagelijks te maken met bestanden, rsync is het Zwitserse zakmes voor het synchroniseren en overbrengen van gegevens Snel, veilig en efficiënt tussen lokale directory's en externe servers. Het kopieert niet alleen, maar vergelijkt en verzendt ook alleen wat er is gewijzigd, wat tijd en bandbreedte bespaart.
In deze praktische gids leert u stap voor stap hoe u rsync onder de knie krijgt: van de basis-syntaxis en sleutelopties tot Tricks gevorderd Zoals uitsluitingen, veilig verwijderen, cv-overdrachten, back-ups en automatisering met cron. Je leert ook hoe je het kunt gebruiken met SSH, wachtwoordloze sleutels en limieten voor grootte of snelheid.
Wat is rsync en waarom is het zo snel?
Rsync staat voor “remote synchronisation”. Het is een open source-tool voor het synchroniseren van mappen en bestanden tussen lokale of externe locaties (via een netwerk). Het belangrijkste voordeel is het "delta-transfer"-algoritme: het analyseert metadata en inhoud per blok en alleen de verschillen overdragenwaardoor de verzonden gegevens drastisch worden verminderd.
Het is beschikbaar op vrijwel alle GNU/Linux-distributies en besturingssystemen. Unix. Het gedrag doet denken aan CP en SCP, maar met veel meer gedetailleerde opties: rechten behouden, knippen hervatten, onderweg comprimeren, patronen uitsluiten, voortgang weergeven en nog veel meer.
Basis syntaxis en kernconcepten
De algemene vorm van het commando is: rsync BRONBESTEMMINGBRON en BESTEMMING kunnen lokale paden of externe eindpunten via SSH zijn, bijvoorbeeld gebruiker@host:/pad.
Wanneer u een externe host gebruikt, is de syntaxis: rsync HOST:REMOTE_PATH LOKAAL_PAD (trekken, brengen) of rsync LOKAAL_PAD HOST:REMOTE_PAD (duwen, verzenden). In beide gevallen is de de bron komt eerst en de bestemming komt later.
rsync
rsync HOST:ORIGEN_REMOTO DESTINO_LOCAL # PULL
rsync ORIGEN_LOCAL HOST:DESTINO_REMOTO # PUSH
Er is een belangrijke nuance: de laatste maat aan de oorsprong. ORIGIN/ (met een slash) betekent “ORIGIN-inhoud”; als u de slash weglaat, zal rsync de SOURCE-map in de bestemming aanmaken.
Controleer en installeer rsync
Controleer eerst of het beschikbaar is met rsync –versie; je ziet het nummer en protocol. Als je het niet hebt, kun je het installeren via de beheerder van je distributie.
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install rsync
# Red Hat / CentOS / Fedora
sudo yum install rsync # o: sudo dnf install rsync
# macOS (Homebrew)
brew install rsync
Als u een server beheert vanuit Windows, U kunt verbinding maken via SSH met behulp van PuTTY en voer ze uit commando's de terminal op afstand.
Aan de slag: Snelle lokale synchronisatie
Maak twee testmappen en een aantal lege bestanden klaar. Zo ziet u het verschil tussen alles kopiëren en alleen de wijzigingen bijwerken. dankzij het rsync-algoritme.
cd ~
mkdir dir1 dir2
# Crea 100 ficheros vacíos
bash -c 'touch dir1/file{1..100}'
# Sincroniza de dir1 a dir2 (recursivo)
rsync -r dir1/ dir2
# O en modo "archivo" (recomendado)
rsync -a dir1/ dir2
De keuze -r recursief kopiëren; -a (archief) bevat -r en behoudt ook rechten, eigenaar, groep, tijdstempels en symbolische koppelingen.
Eindmaat bij de oorsprong: het detail dat verrassingen voorkomt
Dit gedrag is cruciaal: dir1/ draagt de inhoud over; dir1 kopieert de directory in bulk binnen de bestemming. Test het risicoloos met een droge test.
# Ensayo (no cambia nada) y verboso
rsync -anv dir1/ dir2 # contenido de dir1 hacia dir2
rsync -anv dir1 dir2 # crea dir2/dir1/...
Voor delicate operaties, wen aan voeg -n/–dry-run toe en controleer de uitvoer voordat je het daadwerkelijk uitvoert. Een kleine gewoonte die teleurstelling voorkomt.
Synchronisatie op afstand met SSH: push en pull
Als u SSH hebt op de externe machine en rsync aan beide kanten hebt geïnstalleerd, Het verzenden of ophalen van gegevens is net zo eenvoudig als een route met gebruiker@hostStandaard gebruikt rsync SSH als de “remote shell”.
# PUSH: del local al remoto (transferimos el directorio completo)
rsync -a ~/dir1 usuario@servidor:/ruta/destino
# PULL: del remoto al local (traemos contenidos)
rsync -a usuario@servidor:/home/usuario/dir1 /ruta/local
# Especificar el puerto SSH y usar compresión y progreso
rsync -azP -e 'ssh -p 2222' origen/ usuario@servidor:/destino/
De opties -z (begrip) en -P (progress + partials) zijn een uitkomst op trage netwerken: U ziet voortgangsbalken en u kunt doorgaan als de verbinding verbroken wordt.
Wachtwoordloze authenticatie met SSH-sleutels
Om synchronisaties te automatiseren, is het handig om sleutels te gebruiken. Genereer een RSA/ed25519-paar, kopieer het openbare paar naar de server en gebruik het met rsync om te voorkomen dat u om een wachtwoord wordt gevraagd.
# En el cliente (usuario local)
ssh-keygen -t rsa -b 4096 -C "Acceso rsync" -f ~/.ssh/rsync_key -q -N ""
ssh-copy-id -i ~/.ssh/rsync_key.pub usuario@servidor
# Probar acceso por clave
ssh -i ~/.ssh/rsync_key usuario@servidor
# Usar la clave con rsync (dos formas equivalentes)
rsync -az -e 'ssh -i ~/.ssh/rsync_key' origen/ usuario@servidor:/destino/
rsync -az --rsh="ssh -i ~/.ssh/rsync_key" origen/ usuario@servidor:/destino/
Als u op uw bestemming geen toestemming heeft wortelu kunt negeer eigenaar en groep met –no-o en –no-g, waardoor toeschrijvingsfouten in systemen met meerdere gebruikers worden voorkomen.
Essentiële opties die u altijd zult gebruiken
De meest voorkomende combinaties zijn mixen -a (archief), -v (uitgebreid), -z (comprimeren), -P (voortgang/gedeeltelijk) Afhankelijk van het geval. Schrijf deze essentiële punten op.
- -a: recursief en behoudt rechten, tijden, eigenaar, groep, links en specials.
- -v: meer informatieve output; met -h U ziet formaten die voor mensen leesbaar zijn.
- -z: comprimeren tijdens overdracht (vermijden als bestanden al gecomprimeerd zijn).
- -P: is equivalent aan –progress + –partial; ideaal voor onstabiele links.
Ook erg handig: -u (update, wordt niet uitgevoerd als de bestemming nieuwer is), -n (droogloop) en -e voor een externe shell (bijv. SSH met poort of sleutel).
Voortgang, compressie en hervatting zonder tijdverlies
Om te visualiseren wat er gebeurt en niet na een snee weer helemaal opnieuw te beginnen, -azP is meestal het winnende receptU ziet hoeveel er nog over is en rsync slaat gedeelten op om door te gaan.
rsync -azP origen/ destino/
# Repetirlo cuando no cambie nada da una salida mínima: rsync detecta que todo está al día
Als u na het aanraken van de datums met of als u enkele bestanden wijzigt, voert u de opdracht opnieuw uit, alleen de gewijzigde worden verzonden, wat de efficiëntie van delta-overdracht bevestigt.
Uitsluitingen en insluitingen per patroon
Als je niet alles wilt meenemen, gebruik dan –uitsluiten en –insluiten om te verfijnenU kunt uitsluiten op basis van naam, pad of extensie, of een lijst laden vanuit een bestand.
# Excluir un directorio, un fichero y rutas concretas
rsync -av --exclude 'cache/' --exclude 'secreto.doc' --exclude 'ruta/subdir' origen/ destino/
# Excluir desde archivo (uno por línea)
rsync -av --exclude-from 'lista_excluidos.txt' origen/ destino/
# Solo copiar .jpg en toda la jerarquía (incluye directorios, excluye el resto)
rsync -vrhz --include="*/" --include="*.jpg" --exclude="*" original/ duplicados/
Als je overdrijft met de uitsluitingen, kun je altijd nog keer de logica om met –include om toe te staan wat je echt wilt en de rest te blokkeren met –exclude «*».
Gecontroleerde verwijdering op de bestemming (–verwijdering en varianten)
Voor een "spiegel"-synchronisatie activeert u –Verwijderen en bestanden die niet meer in de bron aanwezig zijn, verdwijnen uit de bestemming. Gebruik het met de nodige voorzichtigheid en probeer altijd –droog-run voorheen.
# Sincronización espejo (borra en destino lo que ya no está en origen)
rsync -av --delete origen/ destino/
Verwijderingsbeleid: –verwijderen-voor (verwijderen voor overdracht), –verwijderen-tijdens (tijdens de ontvangst; standaard in moderne versies) en –verwijder-vertraging (detecteert ontbrekende items en verwijdert deze aan het einde). –verwijderen-na Het bestaat wel, maar het is meestal minder efficiënt, behalve in heel specifieke scenario's.
Grootte- en bandbreedtelimieten
Om te voorkomen dat het netwerk verzadigd raakt of dat er op gewicht wordt gefilterd, gebruikt u –max-grootte en –min-grootte naast –bwlimietHandig voor bulkkopieën of back-ups met specifiek beleid.
# Solo archivos <= 100 MB y límite de 5 MB/s
rsync -avzh --max-size='100M' --bwlimit=5120 origen/ destino/
# No transferir nada por debajo de 10 KB
dsync -av --min-size=10k origen/ destino/
Als u veel kleine bestanden verplaatst, -W/–whole-file dwingt het verzenden van het hele bestand af en kan versnellen als de delta de latentie niet compenseert.
Zorgeloze back-ups (–backup en –backup-dir)
Als u zich zorgen maakt over het overschrijven, combineer dan –back-up met –backup-map om eerdere versies in een back-upmap te bewaren. Het is een zeer praktische "verzekering".
# Guarda versiones reemplazadas/eliminadas en /var/backups/rsync
rsync -a --delete --backup --backup-dir=/var/backups/rsync /ruta/origen/ /ruta/destino/
Zo wordt elk bestand dat in de bestemming wordt gewijzigd of verwijderd, opgeslagen in de aangegeven directory, het faciliteren van een snelle doorlooptijd als iets niet gaat zoals je verwacht had.
Automatiseren met cron (zonder prompts of ruis)
Voeg een cron-item toe om periodieke synchronisaties uit te voeren. Gebruik SSH-sleutels, vermijd –progress en dump een logbestand als u dat wilt. voor audit.
# Cada hora, con clave e ignorando propietario y grupo
0 * * * * rsync -arz --no-o --no-g --delete --rsh="ssh -i /home/u/.ssh/rsync_key" /home/u/backup/ u@servidor:"/home/u/backup" >> /var/log/rsync.log 2>&1
Als u in de tegenovergestelde richting synchroniseert, verwisselt u BRON en BESTEMMING. Loggen met –log-file of omleiding helpt u te controleren wat er is overgedragen en wanneer.
Geavanceerde trucs en realistische scenario's
Naast de klassieke vlaggen heeft rsync ook minder bekende, maar zeer nuttige vlaggen: -c (checksum, negeert datums/groottes en vergelijkt op hash), –alleen maat (alleen maat), -I/–negeer-keer (alles kopiëren) –verwijder-bronbestanden (verplaatsen in plaats van kopiëren, verwijdert geen mappen).
# Solo actualizar si cambia el hash (más preciso, más CPU)
rsync -avuc origen/ destino/
# Mover ficheros (borra en origen los que se copien bien)
rsync -av --remove-source-files origen/ destino/
# Preservar enlaces, dueños y especiales (requiere permisos adecuados)
rsync -aLptgoD origen/ destino/
Met externe servers kunt u: synchroniseer twee Linux-machines elk uur via SSH met cron en sleutels. Als je "bijna realtime" nodig hebt, kijk dan eens naar Lsync, een daemon die reageert op wijzigingen in het bestandssysteem en automatisch rsync aanroept. Als u de voorkeur geeft aan een grafische interface, probeer dan Synchroniseer lokale en netwerkmappen met FreeFileSync.
Compacte voorbeelden om u uit de problemen te helpen
Hier zijn enkele snelle recepten om te onthouden. U kunt ze aanpassen aan uw routes en gebruikers zonder problemen.
# Copiar localmente con progreso y tamaños legibles
rsync -avhP /carpeta1/ /carpeta2/
# Sincronizar dos hosts (pull) con progreso
rsync -avP root@X.Y.Z.W:/carpeta1/ /carpeta2/
# Solo archivos modificados (update) a un remoto
rsync -vzh -u posts/*.md blog@host:/ruta/posts/
# Ensayo general (no cambia nada) y listado detallado
rsync -avhni --itemize-changes origen/ destino/
Als u met grote structuren wordt geconfronteerd, combineert uitsluitingen, beperkingen en vooruitgang om absolute controle te hebben over wat er reist en hoe het dat doet.
Het beheersen van rsync is een kwestie van oefening: probeer met –dry-run, gebruik -a als basis, voeg -z/-P toe in het netwerk en controleer –delete met headMet SSH-sleutels en cron beschikt u over automatische, veilige en efficiënte synchronisaties, zowel lokaal als tussen servers.
Gepassioneerd schrijver over de wereld van bytes en technologie in het algemeen. Ik deel mijn kennis graag door te schrijven, en dat is wat ik in deze blog ga doen: je de meest interessante dingen laten zien over gadgets, software, hardware, technologische trends en meer. Mijn doel is om u te helpen op een eenvoudige en onderhoudende manier door de digitale wereld te navigeren.