
de Linux rsync command is een krachtig hulpmiddel voor het kopiëren van bestanden en het synchroniseren van mappen. Hier zijn tien veelvoorkomende use-cases die u goed kunt gebruiken op uw eigen systemen.
De rsync-tool
De rsync tool kopieert bestanden en mappen tussen twee computers. Het gebruikt een geavanceerd algoritme dat directorystructuren scant om bestanden op de broncomputer te vinden die niet bestaan op de doelcomputer. Deze bestanden worden naar de doelcomputer verzonden. Wat maakt rync zo slim is dat het kan uitzoeken welke stukjes van bestaande bestanden zijn gewijzigd, en het verzendt alleen de veranderde porties.
Je kunt gebruiken rsync om bestanden te kopiëren naar een andere locatie op uw harde schijf, naar een andere harde schijf op dezelfde computer, naar een extern aangesloten USB-station of een andere netwerktoegankelijke locatie.
Daarbovenop, rsync kan optioneel symbolische koppelingen, harde koppelingen en bestandsmetadata behouden, zoals bestandseigendom, machtigingen en toegangstijden. Om al deze functionaliteit te ondersteunen, rsync heeft veel opties en het kost tijd om ze allemaal uit te zoeken. We hebben deze 10 voorbeelden verzameld om u op weg te helpen. We hebben al geschreven over het maken van back-ups met rsync dus we concentreren ons hier op ander gebruik.
Voor al zijn vele opties, de structuur van een rsync opdracht is eenvoudig. We moeten de bron, de bestemming en de opties die we willen gebruiken opgeven. Dat vind je waarschijnlijk rsync is al geïnstalleerd op je Linux-computer – dat was het ook op al onze testmachines – maar als dat niet het geval is, zal het zeker in de repositories van je distributie staan.
1. Kopieer bestanden naar een andere map
Hier is een eenvoudig voorbeeld om ons op weg te helpen. We gaan de bestanden kopiëren van de map “projectbestanden” naar de map “Documenten”. We gebruiken twee opties, de -a (archief) optie en de -v (uitgebreide) optie. De uitgebreide optie vertelt rsync om uit te leggen wat het doet zoals het het doet. De archive optie behoudt bestandseigendom en enkele andere items die we binnenkort zullen bekijken.
Het formaat van het commando is options source-location destination-location.
rsync -av /home/dave/project-files/ /home/dave/Documents/

Gebruik makend van ls in de map “Documenten” ziet u dat de bestanden zijn gekopieerd.

Terwijl rsync werkt, worden de bestanden weergegeven zoals ze worden gekopieerd. Werden verteld:
- Het aantal bytes dat wordt verzonden.
- Het aantal ontvangen bytes. Voordat de bestandsoverdracht plaatsvindt,
rsyncmoet uitzoeken welke bestanden moeten worden overgedragen. Om dat te doen, moet wat informatie over de bestanden op de bestemming worden opgehaald door:rsync. Deze informatie bevindt zich in de ontvangen bytes. - De snelheid van de overdracht.
- De totale grootte van de gekopieerde bestanden.
- De “versnelling”. Dit is de verhouding van de totale grootte gedeeld door de som van de verzonden en ontvangen bytes. Hoe hoger dit getal, hoe efficiënter de overdracht.
We hebben het tekstbestand in de bronmap aangepast en de rsync opdracht.
rsync -av /home/dave/project-files/ /home/dave/Documents/

Deze keer is het enige bestand dat moet worden bijgewerkt het tekstbestand dat we hebben gewijzigd. Het versnellingscijfer is nu 30.850. Dit is hoeveel efficiënter het is om het gewijzigde deel van dat ene bestand te kopiëren dan om alle bestanden te kopiëren.
De -a (archief) optie vertegenwoordigt eigenlijk een verzameling andere opties. Het is hetzelfde als al deze opties gebruiken:
- r: Werk recursief door mapstructuren in de bronmap en kopieer ze naar de doelmap, maak ze aan als ze daar nog niet bestaan.
- ik: Symlinks kopiëren als symbolische links.
- p: bestandsrechten behouden.
- t: Behoud van bestandswijzigingstijden.
- g: groepsrechten behouden.
- O: behoud het eigendom van het bestand.
- D: speciale bestanden en apparaatbestanden kopiëren. Speciale bestanden kunnen op communicatie gerichte items zijn die als bestanden worden behandeld, zoals sockets en first-in, first-out-leidingen (fifo’s). Apparaatbestanden zijn speciale bestanden die toegang geven tot apparaten en pseudo-apparaten.
Dit is zo’n veelgebruikte combinatie dat: rsync biedt de -a (archief) optie als een verkorte manier om ze allemaal op te roepen.
2. Kopieer een map naar een andere map
Als je kijkt naar de vorige rsync commando ziet u een schuine streep naar voren “/” op het bestandspad van de bronmap. Dit is aanzienlijk. Het zegt rsync om de . te kopiëren inhoud van de map. Als u de trailing forward slash niet opgeeft, rsync zal de map kopiëren en De inhoud.
rsync -av /home/dave/project-files /home/dave/Documents/

Deze keer wordt de mapnaam toegevoegd aan de bestandsnaam zoals ze worden vermeld. Als we in de doelmap kijken, zien we dat de bronmap is gekopieerd met de bestanden erin.
ls Documents/
ls Documents/project-files/

3. Kopieer een map naar een andere schijf
Het kopiëren van bestanden naar een andere locatie op dezelfde harde schijf biedt geen bescherming tegen een schijfstoring. Als die schijf de geest geeft, ben je de bron- en doelkopieën van die bestanden kwijt. Het kopiëren naar een andere harde schijf is een veel robuustere manier om uw gegevens te beschermen. Het enige dat we hoeven te doen, is het juiste pad naar de bestemmingsschijf op te geven.
rsync -av /home/dave/project-files /run/mount/drive2

Als we naar de andere harde schijf kijken, zien we dat de map en de bestanden ernaar zijn gekopieerd.
ls run/mount/drive2/project-files/

4. Eerst drooglopen
Voordat we kijken naar hoe rsync kan nuttig bestanden voor ons verwijderen, laten we eens kijken hoe we kunnen maken rsync een droogloop uitvoeren.
Op het droge, rsync gaat door de bewegingen van het uitvoeren van de acties waar we om hebben gevraagd, maar voert ze niet echt uit. Het rapporteert over wat er zou zijn gebeurd als de opdracht was uitgevoerd. Op deze manier kunnen we ervoor zorgen dat de opdracht precies doet wat we verwachten.
Om een droge run te forceren gebruiken we de --dry-run keuze.
rsync -av --dry-run /home/dave/geocoder /run/mount/drive2

De bestanden die zouden zijn gekopieerd, worden voor ons weergegeven en we krijgen de gebruikelijke statistieken, gevolgd door het bericht (DRY RUN) zodat we weten dat er eigenlijk niets heeft plaatsgevonden.
5. Bestanden in de doelmap verwijderen
De --delete optie vertelt rsync om bestanden en mappen in de . te verwijderen bestemming map die niet in de bronmap staat. Dit betekent dat de doelmap een exacte kopie is van de bronmap. We zullen voorzichtig zijn en de --dry-run optie eerst.
rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2

We hebben vernomen dat er twee bestanden zullen worden verwijderd. Als we zeker weten dat het ons niet kan schelen dat ze worden verwijderd, kunnen we de --dry-run optie en voer de opdracht echt uit.
rsync -av --delete /home/dave/geocoder /run/mount/drive2

Deze keer wordt de inhoud van de mappen gesynchroniseerd en worden de twee extra bestanden verwijderd.
6. De bronbestanden verwijderen
U kunt ervoor kiezen om de bronbestanden te verwijderen na a succesvolle overdrachtmaken rsync werken meer als een zet dan als een kopie. Als de overdracht niet is gelukt, worden de bronbestanden niet verwijderd. De optie die we moeten gebruiken is --remove-source-files .
rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2

Merk op dat de bestanden kunnen worden verwijderd, zelfs als er geen bestanden worden overgedragen. Dat komt omdat als rsync controles, en alle bestanden staan al in de doelmap en er is niets voor rsync Te doen, rsync beschouwt dat als een geslaagde overdracht.
Ook, rsync verwijdert alleen de bestanden uit de bronmap. Het verwijdert niet de brondirectory en ook geen subdirectories, alleen de bestanden erin. We kunnen dit zien met behulp van de -R (recursieve) optie met lsin de bronmap.
ls -R geocoder

7. Kopieer bestanden naar een externe computer
Om mappen te synchroniseren met een externe computer, rsync moet op beide computers zijn geïnstalleerd. Stel SSH-communicatie in tussen de twee computers voordat u probeert te gebruiken rsync naar de externe computer.
U moet op afstand kunnen inloggen als een gewone gebruiker op de externe computer voor: rsync werken. Het maakt niet uit of je een ID en wachtwoord gebruikt om in te loggen, of dat je SSH-sleutels hebt ingesteld voor veilige toegang zonder wachtwoord, maar als je niet kunt inloggen als gebruiker, dan rsync zal ook niet werken.
Als u inlogt met een wachtwoord, rsync zal u om het wachtwoord vragen. Als u SSH-sleutels gebruikt om in te loggen, verloopt het proces naadloos.
Het enige dat u extra hoeft te doen, is de gebruikersnaam en het IP-adres van de externe computer toe te voegen aan het begin van het doelbestandspad. Gebruik een apenstaartje “@” om de gebruikersnaam te scheiden van de computernaam of het IP-adres, en een dubbele punt “:” om de computernaam of het IP-adres te scheiden van het directorypad.
Op ons testnetwerk zijn deze twee commando’s equivalent.
rsync -av /home/dave/geocoder dave@nostromo.local:/home/dave/Downloads
rsync -av /home/dave/geocoder dave@192.168.86.60:/home/dave/Downloads

We krijgen dezelfde informatie aan ons gerapporteerd als wanneer we bestanden lokaal kopiëren.
8. Bestanden of mappen opnemen of uitsluiten
Mogelijk hebt u bestanden en mappen in de bronmap die u niet naar de doelcomputer wilt kopiëren. Je kunt ze uitsluiten met de --exclude keuze. Op een vergelijkbare manier kunt u ervoor kiezen om specifieke bestanden en mappen op te nemen met de --include keuze.
De eigenaardigheid is dat als je de --include optie op zich, worden alle bestanden zoals normaal gekopieerd, inclusief uw specifiek opgenomen bestanden. Om alleen uw opgenomen bestanden te kopiëren, moet u: --exclude al de rest.
Je kunt er zoveel gebruiken --include en --exclude opties in uw opdracht zoals u wilt, maar zorg ervoor dat u uw --include opties voor uw --exclude opties. Zorg er ook voor dat je een trailing forward slash op je bronbestandspad hebt.
Deze opdracht kopieert alleen C-broncodebestanden en CSV-gegevensbestanden naar de doelcomputer.
rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoder

De enige bestanden die zijn gekopieerd, zijn de bestanden die we specifiek hebben toegevoegd.
9. Comprimeer bestanden in overdracht
De -z (comprimeer) optie oorzaken rsync om de overgedragen bestanden te comprimeren. Ze worden echter niet opgeslagen als gecomprimeerde bestanden op de doelcomputer, ze worden alleen gecomprimeerd tijdens de overdracht zelf. Dit kan langdurige overdrachten versnellen.
rsync -avz /home/dave/geocoder /run/mount/drive2

10. Voortgang bewaken
Over lange transfers gesproken, we kunnen wat statistieken toevoegen zodat we de voortgang van de transfer kunnen zien.
De -P (gedeeltelijke, voortgang) optie voegt eigenlijk twee opties toe, --partial en --progress . De --partial optie vertelt rsync om gedeeltelijk overgedragen bestanden te behouden als een overdracht mislukt. Dit bespaart tijd wanneer de overdracht opnieuw wordt gestart.
De --progress optie drukt voor elk bestand de overgedragen gegevens af in bytes en als een percentage, de snelheid van de overdracht, de tijd die nodig is, het aantal bestanden dat wordt overgedragen en het aantal resterende bestanden.
rsync -aP /home/dave/geocoder /run/mount/drive2

De uitvoer schuift vrij snel voorbij en is moeilijk te lezen. Je kunt dingen iets verbeteren door de . te verwijderen -v (uitgebreide) optie uit de opdracht. Zelfs dan is het nog steeds moeilijk te lezen terwijl het voorbij raast.

Vaak is het nuttiger om de voortgang van de totale overdracht te volgen. U kunt dit doen met de optie -info en deze “progress2” als parameter doorgeven.
sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2

Dit geeft een voortgangsrapport dat echt nuttig is.
Vind cp op steroïden leuk
De rsync commando is snel, flexibel en zeker de moeite waard om er vertrouwd mee te raken. De basisvorm van an rsync commando met de -av opties, bronmap en doelmap is helemaal niet moeilijk te onthouden.
Voor veel gebruikssituaties is dat alles wat u nodig heeft. Voel je daar comfortabel bij en de rest zal gemakkelijk komen.