rsync Command Usage to Sync Files and Directories [11 Examples]

rsync is een free of charge te gebruiken opdrachtregelprogramma waarmee u bestanden lokaal en op afstand kunt synchroniseren. Hiermee kunt u bestanden en mappen overbrengen.

Dit maakt het erg handig voor het migreren van gegevens, het uitvoeren van back-ups en spiegelen, waardoor het ideaal is voor site owners en beheerders voor terugkerende taken voor gegevensoverdracht.

Dit artikel leert ons hoe Rysnc werkt en geeft enkele nuttige voorbeelden.

Hoe werkt rsync?

rsync is een opdrachtregelprogramma voor externe synchronisatie voor Unix-achtige systemen. Het geeft de gebruiker de mogelijkheid om bestanden naadloos over te dragen/synchroniseren tussen machines of twee hosts.

Onder de motorkap gebruikt rsync het delta-overdrachtsalgoritme. Dit algoritme omvat het kopiëren van verschillen tussen de twee bestanden over twee hosts (bron en bestemming). De bron en bestemming kunnen lokaal of extern zijn. De opdracht rsync kan op twee manieren gegevens kopiëren/synchroniseren. Dit zijn:

  • Gebruik ssh, rsh om te kopiëren/synchroniseren tussen twee hosts.
  • Gebruik TCP rsync-daemon voor kopiëren/synchroniseren.

Omdat het is ontworpen om te werken in Unix-achtige systemen, werkt het ook in Linux.

Het stapsgewijze proces rsync gebruikt het volgende:

  • Rsync gebruikt SSH om verbinding te maken met de externe host en vraagt ​​om een ​​wachtwoord.
  • Eenmaal verbonden, communiceert de rsync van de externe host met de bron.
  • Deze programma’s bepalen vervolgens welke bestanden en mappen moeten worden gesynchroniseerd. Het maakt gebruik van een delta-overdrachtsalgoritme om het verschil tussen de bestanden te controleren.
afbeelding-159

Als de opdracht rsync geen bestand op de afstandsbediening maar niet op de host vindt, wordt het gekopieerd en naar het hostsysteem overgebracht. Op dezelfde manier kopieert het voor reeds bestaande bestanden (zowel op de host als op afstand) het verschil daartussen (dwz gewijzigde delen). Ten slotte negeert het bestaande bestanden op beide systemen zonder wijzigingen.

Met de opdracht rsync worden incrementele updates gerealiseerd door het verschil in een tijdelijk bestand op te slaan voordat het naar de bestemming wordt gepusht.

Voordat je begin:

  • U moet root- of sudo-rechten hebben
  • Toegang hebben tot de terminal/opdrachtregel
  • SSH-toegang voor het veilig uitvoeren van rsync-opdrachten
  • Je hebt ook twee machines nodig om rsync te maken.

Voor de tutorial gaan we gebruiken Linux Mint 21.1 Vera. Je kunt de gids eenvoudig zonder problemen volgen met een andere Linux-distributie.

Waarom rsync by way of Scp gebruiken?

Scp (safe copy) is een populair opdrachtregelprotocol waarmee gebruikers bestanden kunnen kopiëren. Het volgt een lineaire benadering van kopiëren. Dit betekent dat het de bestanden eenvoudigweg van bron naar bestemming kopieert. Om dit veilig te doen, gebruikt het SSH.

De syntaxis van de scp-opdracht is als volgt:

scp possibility SOURCE DESTINATION

De vraag blijft echter: waarom rsync over scp gebruiken?

Welnu, er zijn meerdere voordelen verbonden aan het gebruik van rsync. Deze voordelen omvatten:

  • Snellere uitvoering: rsync is sneller dan scp omdat het een protocol voor updates op afstand gebruikt. Hierdoor kan alleen de verschillen worden overgedragen in plaats van het hele bestand. Als u dus in de loop van de tijd een regelmatige synchronisatie instelt, hoeft u alleen de eerste keer een volledige kopie te maken. Vanaf de volgende keer kopieert het alleen de bijgewerkte delen met behulp van het delta-overdrachtsalgoritme.
  • Minder bandbreedteverbruik: Omdat rsync niet het hele bestand opnieuw hoeft te kopiëren, leidt dit tot minder bandbreedteverbruik. Bovendien maakt het ook gebruik van compressie-/decompressie-algoritmen om de bestandsgrootte tijdens de overdracht te minimaliseren.
  • Meer opdrachtregelopties: rsync verslaat scp ook wat betreft het aantal opdrachtregelopties. Dit betekent dat u rsync meer kunt afstemmen dan scp.

Kortom, rsync is een uitstekende instrument voor incrementele synchronisatie. De scp-tool is ook handig voor het veilig overbrengen/synchroniseren van bestanden. In een realistisch state of affairs is scp geschikt voor dagelijkse taken als u op zoek bent naar een eenvoudigere aanpak. Gebruik echter rsync voor terugkerende taken.

rsync-opdrachtsyntaxis

Het rsync-commando is zoals hieronder:

  • Lokaal naar lokaal: rsync-optie BRON BESTEMMING
  • Lokaal naar extern: rsync-optie BRON GEBRUIKER@HOST:DEST
  • Op afstand naar lokaal: rsync-optie GEBRUIKER@HOST:SRC DEST

Hier worden de termen hieronder gedefinieerd:

  • KEUZE – Dit zijn de rsync-opties
  • BRON – Bronmap
  • BESTEMMING – Doelmap
  • GEBRUIKER – Externe gebruikersnaam
  • GASTHEER – Externe hostnaam of IP-adres

De opties zijn parameters die further functionaliteit aan de opdracht bieden. U kunt gegevens bijvoorbeeld recursief synchroniseren met de -r optie. echter, de -r optie synchroniseert het eigendom van groepen en gebruikers, tijdstempels, toestemming of symbolische hyperlinks niet. In plaats daarvan kunt u de -een optiedat de opdracht uitvoert in de archiefmodus en ervoor zorgt dat alle eigendomsrechten, machtigingen en symbolische koppelingen van het bestand behouden blijven tijdens het kopiëren.

Andere rsync-opties zijn onder meer:

  • -z: gegevens comprimeren om ruimte te besparen
  • -H: biedt voor mensen leesbare formaatuitvoer
  • -B: voert een back-up uit tijdens het gegevenssynchronisatieproces
  • -e: gebruik het SSH-protocol voor gegevensoverdracht op afstand
  • -voortgang: de voortgang van de gegevenssynchronisatie weergeven
  • -v: vraag rsync om uitgebreide uitvoer weer te geven
  • N: voer een proefrun uit om de instellingen en instellingen voor gegevenssynchronisatie te testen
  • -Q: onderdruk de rsync-opdrachtuitvoer en -opties

Rsync installeren

Op de meeste Unix- en Linux-systemen is rsync geïnstalleerd. Als uw systeem geen rsync heeft, kunt u het installeren met behulp van de volgende opdracht(en).

Voor Debian/Ubuntu en Mint

sudo apt-get set up rsync

Voor ArchLinux

pacman -S rsync

Op Gentoo

emerge sys-apps/rsync

Op CentOS/Fedora/REHL

sudo yum set up rsync

Op openSUSE

sudo zypper set up rsync

Omdat we Linux Mint hebben, was rsync vooraf geïnstalleerd. U kunt dus de opdracht rsync in de terminal uitvoeren om te zien of deze is geïnstalleerd. Het legt de mogelijkheden, opties en andere essentiële informatie uit als deze aanwezig is.

nitt ~
$ rsync
rsync  model 3.2.3  protocol model 31
Copyright (C) 1996-2020 by Andrew Tridgell, Wayne Davison, and others.
Web page: https://rsync.samba.org/
Capabilities:
    64-bit recordsdata, 64-bit inums, 64-bit timestamps, 64-bit lengthy ints,
    socketpairs, hardlinks, hardlink-specials, symlinks, IPv6, atimes,
    batchfiles, inplace, append, ACLs, xattrs, non-obligatory protect-args, iconv,
    symtimes, prealloc, stop-at, no crtimes
Optimizations:
    SIMD, no asm, openssl-crypto
Checksum record:
    xxh128 xxh3 xxh64 (xxhash) md5 md4 none
Compress record:
    zstd lz4 zlibx zlib none

rsync comes with ABSOLUTELY NO WARRANTY.  That is free software program, and also you
are welcome to redistribute it below sure circumstances.  See the GNU
Basic Public Licence for particulars.

rsync is a file switch program able to environment friendly distant replace
by way of a quick differencing algorithm.

Laten we rsync nu in actie zien met verschillende gebruiksscenario’s.

Voor de tutorial gaan we twee mappen maken.

  • bronmap
  • bestemming-directory

Daarvoor moet u de volgende opdrachten typen.

mkdir source-directory
mkdir dest-directory

We moeten ook bestanden genereren om rsync te laten werken. Laten we dus enkele testbestanden maken met de onderstaande opdracht.

contact source-directory/file{1..100}

Hierdoor ontstaan ​​er 100 lege bestanden in de bronmap. U kunt dit bevestigen door de onderstaande opdracht in te voeren.

ls source-directory
Output:
nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ contact source-directory/file{1..100}
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

Opmerking: We hebben de dest-directory leeg gehouden.

Kopieer mappen lokaal recursief

Ook al is rsync primair bedoeld om bestanden te kopiëren tussen een lokale en externe server, het is web zo nuttig voor het lokaal kopiëren van bestanden.

In dit geval gebruiken we de volgende rsync-syntaxis.

rsync-optie BRONBESTEMMING

Kopieer de bestanden in onze bronmap naar de bestemming-directory door de volgende opdracht uit te voeren.

rsync -r source-directory/ dest-directory

Hier kopieert het commando “recursief” de bestanden uit het bronmap naar de bestemming-directory.

nitt rsync-tutorial
$ ls
dest-directory  source-directory
nitt rsync-tutorial
$ ls dest-directory
nitt rsync-tutorial
$ ls source-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99
nitt rsync-tutorial
$ rsync -r source-directory/ dest-directory
nitt rsync-tutorial
$ ls dest-directory
file1    file18  file27  file36  file45  file54  file63  file72  file81  file90
file10   file19  file28  file37  file46  file55  file64  file73  file82  file91
file100  file2   file29  file38  file47  file56  file65  file74  file83  file92
file11   file20  file3   file39  file48  file57  file66  file75  file84  file93
file12   file21  file30  file4   file49  file58  file67  file76  file85  file94
file13   file22  file31  file40  file5   file59  file68  file77  file86  file95
file14   file23  file32  file41  file50  file6   file69  file78  file87  file96
file15   file24  file33  file42  file51  file60  file7   file79  file88  file97
file16   file25  file34  file43  file52  file61  file70  file8   file89  file98
file17   file26  file35  file44  file53  file62  file71  file80  file9   file99

Hiermee kopieert u elk afzonderlijk bestand in het bronmap naar de bestemming-directory.

Kopieer één bestand lokaal

Nu we hebben geleerd hoe we twee mappen kunnen synchroniseren, zullen we leren hoe we een enkel bestand kunnen kopiëren.

Voor dit doel bewerken we het lege bestand bestand1 in de bronmap en synchroniseer het vervolgens met hetzelfde bestand dat aanwezig is in het bestemming-directory.

Om een ​​bestand te bewerken, typt u de volgende opdracht.

nano source-directory/file1

Kopieer nu de volgende tekst in de nano-editor.

We're updating file1 within the source-directory.
As soon as we replace, we'll push the brand new replace to the dest-directory.
rsync does not have to re-copy the file utilizing the delta-transfer algorithm.
This algorithm checks the variations after which updates vacation spot recordsdata
accordingly.
So, when you save file1 within the source-directory, open file1 in
the dest-directory. It's going to be empty.
Nevertheless, if we test it after operating rsync, you will see that file1 in dest-directory
is up to date.
bijwerken-bestand1-met-tekst
Inhoud aan een bestand toevoegen

Sluit nu het bestand en sla het op.

Laten we het bestand nu kopiëren met rsync.

sudo rsync -v --existing source-directory/file1 /dest-directory
#Output
nitt rsync-tutorial
$ sudo rsync -v --existing source-directory/file1 dest-directory
file1

despatched 557 bytes  acquired 35 bytes  1,184.00 bytes/sec
whole dimension is 474  speedup is 0.80

nitt rsync-tutorial
$ 

Zoals je misschien hebt gemerkt, gebruikten we –bestaand keuze. Hiermee worden de bestaande bestanden bijgewerkt. Als u de opdracht uitvoert zonder –bestaandwordt het niet bijgewerkt, ook al wordt het wel succesvol uitgevoerd.

Als het enkele bestand dat u kopieert niet in de doelmap bestaat, moet u de volgende opdracht uitvoeren.

rsync -v source-directory/newfile dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile dest-directory
newfile

despatched 82 bytes  acquired 35 bytes  234.00 bytes/sec
whole dimension is 0  speedup is 0.00

Meerdere bestanden kopiëren

Als u meerdere bestanden wilt kopiëren, moet u de bronpaden van beide bestanden vermelden, gevolgd door de doelmap.

Voor dit doel maken we twee nieuwe bestanden: nieuwbestand2 En nieuwbestand3in de bronmap. Voer hiervoor de volgende opdracht uit.

contact source-directory/newfile{2..3}

Gebruik nu de volgende opdracht om meerdere bestanden te synchroniseren.

rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
#Output
nitt rsync-tutorial
$ rsync -v source-directory/newfile2 source-directory/newfile3 dest-directory
newfile2
newfile3

despatched 135 bytes  acquired 54 bytes  378.00 bytes/sec
whole dimension is 0  speedup is 0.00
nitt rsync-tutorial
$ 

Kopieer bestand of map van lokaal naar extern

De rsync-syntaxis voor overdracht van lokaal naar extern is zoals hieronder.

rsync possibility SOURCE USER@HOST:DEST

Zoals je kunt zien, moet je de IP adres van de externe machine om dit te laten werken. U moet ook het IP-adres achter het bronbestand toevoegen.

rsync -av /Initiatives/rsync-tutorial/source-directory 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory

Voordat de overdracht wordt gestart, wordt om het wachtwoord gevraagd. Voer het in om door te gaan. Als de gebruiker op de externe machine een andere gebruiker is, moet u dit ook vermelden vóór het IP-adres, gevolgd door @.

rsync -av /Initiatives/rsync-tutorial/source-directory [email protected]: /Initiatives/rsync-tutorial/dest-directory

Als u van plan bent meerdere bestanden of mappen te kopiëren, moet u de bestanden of mappaden vermelden. De syntaxis ervoor staat hieronder.

rsync -av /Initiatives/rsync-tutorial/source-directory/newfile1 /Initiatives/rsync-tutorial/source-directory/newfile2 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory

Specifieke protocollen voor overdracht op afstand

Met rsync kunt u specifieke protocollen voor bestandsoverdracht opgeven. Om dit te doen, moet u gebruik maken van de -e optiegevolgd door het protocol.

Als u bijvoorbeeld het ssh-protocol wilt gebruiken, moet u toevoegen -e ssh naar de rsync-opdracht.

rsync -e ssh /Initiatives/rsync-tutorial/source-directory 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory

Een bestand of map kopiëren van extern naar lokaal

De rsync-syntaxis voor overdracht van lokaal naar extern is zoals hieronder.

sync possibility USER@HOST:SRC DEST

Dit fungeert als een pull-verzoek. Om de vereiste bestanden/map van een externe server naar uw lokale machine te krijgen, moet u dus de volgende opdracht uitvoeren.

rsync -av 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory /Initiatives/rsync-tutorial/source-directory

De opdracht haalt de bestanden op van de externe machine bestemming-directory naar de lokale machine bronmap.

Op dezelfde manier kunt u een specifiek bestand ophalen door het by way of het volledige pad te vermelden.

rsync -av 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory/newfile4 /Initiatives/rsync-tutorial/source-directory

Als u meerdere bestanden of mappen van lokaal naar extern wilt kopiëren, moet u het pad opgeven tussen de accolades (gescheiden door komma’s) na het IP-adres van de server.

rsync -av 192.168.192.200: {/Initiatives/rsync-tutorial/dest-directory/, /residence/music/2023-music} /Initiatives/rsync-tutorial/source-directory

Op dezelfde manier kunt u ook bestanden vermelden.

Toon reside voortgang tijdens overdracht

Het is een goed idee om reside de voortgang te zien voor grotere gegevensback-ups. Daarvoor moet je gebruik maken van de -voortgang vlag. Voeg het toe aan de rsync-opdracht en je kunt de overdrachtsnelheid, de resterende tijd en de hoeveelheid overgedragen gegevens zien.

rsync -av --progress 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory /Initiatives/rsync-tutorial/source-directory

Verwijder bronbestanden zodra de overdracht is voltooid

U kunt gebruik maken van de -bronbestanden verwijderen flag om bronbestanden te verwijderen na de volledige overdracht. Dit kan u in veel state of affairs’s helpen, vooral als het gaat om het beveiligen van uw bestanden zonder sporen achter te laten of om ze eenvoudigweg te gebruiken om ruimte vrij te maken.

rsync -av --remove-source-files 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory /Initiatives/rsync-tutorial/source-directory

rsync droogloop

Met Rysnc kun je ook evalueren voordat je een daadwerkelijke run uitvoert. Door een proefrit te maken, kunt u zien of u het juiste doet. Je wilt immers niet per ongeluk bestanden bijwerken of zelfs verwijderen.

Je moet de -oefening mogelijkheid om droog te draaien. Voeg het toe aan de opdracht, gevolgd door de bron en de bestemming.

sudo rsync -v --dry-run source-directory/file1 dest-directory
nitt rsync-tutorial
$ sudo rsync -v --dry-run source-directory/file1 dest-directory
file1

despatched 43 bytes  acquired 19 bytes  124.00 bytes/sec
whole dimension is 474  speedup is 7.65 (DRY RUN)
nitt rsync-tutorial

De uitvoer is vergelijkbaar met hoe we het eerder hebben uitgevoerd. U zult echter een vermelding van opmerken (OEFENING) aan het einde van de uitvoer.

Stel de minimale en maximale bestandsgrootte in

Met Rysnc kunt u tijdens de overdracht ook de minimale of maximale bestandsgrootte instellen.

Dus als u wilt overbrengen met een minimale grootte van 15 KB, moet u dit gebruiken –min-grootte=15K.

rsync -av --min-size=15k 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory /Initiatives/rsync-tutorial/source-directory

Met de opdracht worden alleen bestanden gekopieerd met een minimale bestandsgrootte van 15 KB. Als de bestandsgrootte kleiner is, wordt deze genegeerd.

Op dezelfde manier kunt u de –max-size vlag om de maximale bestandsgrootte in te stellen.

rsync -av --max-size=450k 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory /Initiatives/rsync-tutorial/source-directory

Hier negeert rsync bestanden groter dan 450K.

Bandbreedtelimiet instellen

Als u andere bandbreedte-intensieve taken uitvoert, kunt u rysnc zo instellen dat de bandbreedtelimiet voor de overdracht wordt ingesteld. Gebruik hiervoor de –bullimit=KB/s.

rsync -av --bwlimit=100 --progress 192.168.192.200: /Initiatives/rsync-tutorial/dest-directory /Initiatives/rsync-tutorial/source-directory

Hier stellen we de bandbreedte in 100Kb/s tijdens de overdracht.

Laatste woorden

Dit brengt ons aan het einde van onze rsync-opdrachtgids. We hebben geleerd hoe we rysnc moeten gebruiken en hebben veel opdrachten effectief behandeld.

Rysnc biedt echter veel meer dan wat we hebben besproken. Daarom wil je misschien ook de rsync-manpagina doorlopen, waar elk side van rsync wordt behandeld.

Bekijk vervolgens de spiekbriefjes voor de opdrachtregel voor Home windows, Linux en macOS.

Leave a Comment

porno izle altyazılı porno porno