rsync
is een snel en veelzijdig command-line hulpprogramma voor het synchroniseren van bestanden en mappen tussen twee locaties via een remote shell, of van/naar een remote Rsync daemon. Het biedt snelle incrementele bestandsoverdracht door alleen de verschillen tussen de bron en de bestemming over te brengen.
Rsync kan worden gebruikt voor het spiegelen van gegevens, incrementele back-ups, het kopiëren van bestanden tussen systemen, en als vervanging voor scp
, sftp
, en cp
commando’s.
Dit artikel legt uit hoe rsync
te gebruiken door middel van praktische voorbeelden en gedetailleerde uitleg van de meest voorkomende rsync
opties.
Installeren van Rsync #
Het rsync
hulpprogramma is voorgeïnstalleerd op de meeste Linux distributies en macOS. Als rsync
niet op uw systeem is geïnstalleerd, kunt u het eenvoudig installeren met de pakketbeheerder van uw distributie.
Rsync installeren op Ubuntu en Debian #
sudo apt install rsync
Rsync installeren op CentOS en Fedora #
sudo yum install rsync
Rsync commando syntax #
Voordat we ingaan op hoe het rsync
commando te gebruiken, laten we beginnen met het doornemen van de basis syntaxis.
De rsync
utility expressies hebben de volgende vorm:
Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC...
-
OPTION
– De rsync opties. -
SRC
– Bron directory. -
DEST
– Bestemmings directory. -
USER
– Gebruikersnaam op afstand. -
HOST
– Hostnaam of IP-adres op afstand.
rsync
biedt een aantal opties die bepalen hoe het commando zich gedraagt. De meest gebruikte opties zijn:
-
-a
,--archive
, archiefmodus, equivalent aan-rlptgoD
. Deze optie verteltrsync
om mappen recursief te synchroniseren, speciale en blok apparaten over te dragen, symbolische links, wijzigingstijden, groepen, eigendom en permissies te behouden. -
-z
,--compress
. Deze optie dwingtrsync
om de gegevens te comprimeren als ze naar de doelmachine worden gestuurd. Gebruik deze optie alleen als de verbinding met de machine op afstand traag is. -
-P
, gelijk aan--partial --progress
. Wanneer deze optie wordt gebruikt, toontrsync
een voortgangsbalk tijdens de overdracht en bewaart de gedeeltelijk overgedragen bestanden. Dit is nuttig bij de overdracht van grote bestanden over langzame of onstabiele netwerkverbindingen. -
--delete
. Wanneer deze optie wordt gebruikt, verwijdertrsync
vreemde bestanden van de plaats van bestemming. Het is nuttig voor mirroring. -
-q
,--quiet
. Gebruik deze optie als u niet-foutmeldingen wilt onderdrukken. -
-e
. Met deze optie kunt u een andere shell op afstand kiezen. Standaard isrsync
geconfigureerd om ssh te gebruiken.
Basic Rsync Usage #
Het meest eenvoudige gebruik van rsync
is het kopiëren van een enkel bestand van de ene naar een andere lokale lokatie. Hier is een voorbeeld:
rsync -a /opt/filename.zip /tmp/
De gebruiker die het commando uitvoert moet leesrechten hebben op de bronlocatie en schrijfrechten op de bestemmingslocatie.
Om de bestandsnaam van de bestemmingslocatie te kopiëren, wordt het bestand met de huidige naam gekopieerd. Als u het bestand onder een andere naam wilt opslaan, geeft u de nieuwe naam op het bestemmingsgedeelte op:
rsync -a /opt/filename.zip /tmp/newfilename.zip
De echte kracht van rsync
komt bij het synchroniseren van mappen. Het onderstaande voorbeeld laat zien hoe een lokale backup van website bestanden gemaakt kan worden:
rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/
Als de doel directory niet bestaat, zal rsync
deze aanmaken.
Het is de moeite waard om te vermelden dat rsync
een andere behandeling geeft aan de bron directories met een schuine streep (/
). Als de bron-directory een schuine streep heeft, kopieert de opdracht alleen de inhoud van de directory naar de doel-directory. Wanneer de schuine streep wordt weggelaten, kopieert rsync
de bron directory in de doel directory.
Gebruik rsync om gegevens te synchroniseren van/naar een machine op afstand #
Wanneer rsync
wordt gebruikt om gegevens op afstand over te dragen, moet het worden geïnstalleerd op zowel de bron als de doel machine. De nieuwe versies van rsync
zijn geconfigureerd om SSH te gebruiken als standaard remote shell.
In het volgende voorbeeld, verplaatsen we een directory van een lokale naar een machine op afstand:
rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Om gegevens van een externe naar een lokale machine over te brengen, gebruikt u de externe locatie als bron:
rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Als SSH op de externe host op een andere poort luistert dan de standaardpoort 22 , geeft u de poort op met de optie -e
:
rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Bij het overbrengen van grote hoeveelheden data is het aan te bevelen om het rsync
commando binnen een schermsessie uit te voeren of om de -P
optie te gebruiken:
rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/
Bestanden en directories uitsluiten #
Er zijn twee opties om bestanden en directories uit te sluiten. De eerste optie is om het --exclude
argument te gebruiken en de bestanden en directories die u wilt uitsluiten op de opdrachtregel te specificeren.
Wanneer u bestanden of directories uitsluit, moet u hun relatieve paden naar de bronlocatie gebruiken.
In het volgende voorbeeld ziet u hoe u de directory’s node_modules
en tmp
kunt uitsluiten:
rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/
De tweede optie is om de optie --exclude-from
te gebruiken en de bestanden en directory’s die u wilt uitsluiten in een bestand op te geven.
rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
node_modulestmp
Conclusie #
We hebben u laten zien hoe u Rsync kunt gebruiken om bestanden en mappen te kopiëren en te synchroniseren. Er is nog veel meer te leren over Rsync op de Rsync-gebruikershandleidingpagina.