Vraag Favoriete rsync-tips en -tricks


Hoe meer ik gebruik rsync hoe meer ik me realiseer dat het een Zwitsers zakmes is van bestandsoverdracht. Er zijn zoveel opties. Ik heb onlangs ontdekt dat je kunt gaan --remove-source-files en het zal een bestand uit de bron verwijderen wanneer het gekopieerd is, wat het een beetje meer een zet maakt, in plaats van een kopieerprogramma. :)

Wat zijn jouw favoriete kleine rsync-tips en -tricks?


54
2017-07-24 11:21


oorsprong




antwoorden:


Probeer rsync versie 3 te gebruiken als je veel bestanden moet synchroniseren! V3 bouwt de bestandslijst stapsgewijs op en is veel sneller en gebruikt minder geheugen dan versie 2.

Afhankelijk van uw platform kan dit een groot verschil maken. Op OSX zou versie 2.6.3 meer dan een uur duren of crashen terwijl ik probeerde een index van 5 miljoen bestanden te bouwen, terwijl de versie 3.0.2 die ik heb gecompileerd meteen begon te kopiëren.


17
2017-07-24 16:29



Een ding om op te merken is dat als je een aantal opties gebruikt (zoals --delete-before bijvoorbeeld) wordt het oude "build list first" gedrag gebruikt omdat het nodig is voor deze opties om correct te werken - dus als je dit gedrag niet ziet, controleer dan of de andere opties waarvan je weet dat ze het mogelijk maken, stoppen. Dit kan handig zijn als u rsync interactief gebruikt op een grote boom en de initiële scan zo wilt forceren dat de uitvoer van --progress is accuraat (d.w.z. het aantal te vergelijken objecten zal nooit stijgen omdat er geen nieuwe objecten worden gevonden na de eerste scan). - David Spillett


Gebruik makend van --link-dest om ruimte-efficiënte snapshotgebaseerde back-ups te maken, waarbij u lijkt te beschikken over meerdere volledige kopieën van de back-upgegevens (één voor elke back-uprun), maar bestanden die niet tussen runs worden gewijzigd, zijn hard gekoppeld in plaats van nieuwe kopieën te maken die ruimte besparen.

(eigenlijk gebruik ik nog steeds de rysnc-gevolgd door-cp -al methode die hetzelfde bereikt, zie http://www.mikerubel.org/computers/rsync_snapshots/ voor een ietwat oude maar nog steeds zeer goede beschrijving van beide technieken en aanverwante zaken)

Het enige grote nadeel van deze techniek is dat als een bestand is beschadigd als gevolg van een schijffout, het net zo corrupt is in alle snapshots die naar dat bestand linken, maar ik heb ook offline back-ups die dit in behoorlijke mate zouden beschermen. Het andere ding om op te letten is dat je bestandssysteem voldoende inodes heeft of je hebt geen genoeg schijfruimte meer (hoewel ik nog nooit een probleem heb gehad met de ext2 / 3-standaardwaarden).

Vergeet ook nooit het zeer nuttige --dry-run voor een beetje gezonde paranoia, vooral als je de --delete* opties.


17
2017-07-24 12:26



+1 voor --dry-run - David Z
Let op: -n is de sneltoets voor --dry-run - ctennis
Ik blijf het liefst bij de lange namen, vooral in scripts die anderen uiteindelijk kunnen handhaven. Het maakt het duidelijker wat is bedoeld zonder verwijzing naar de documenten. - David Spillett
+1 Ik heb een back-upoplossing van veel TB geïmplementeerd op veel machines met de -link-dest-methode voor hard-linked snapshots zoals hierboven beschreven - het werkte perfect. - matja
Als je wilt - link-dest backups, check out DIRVISH die rsync onder de motorkap gebruikt - hfs


Als u een website met een aantal grote bestanden via een trage link moet bijwerken, kunt u de kleine bestanden op deze manier overbrengen:

rsync -a --max-size = 100K / var / www / there: / var / www /

doe dit dan voor de grote bestanden:

rsync -a --min-size = 100K --bwlimit = 100 / var / www / there: / var / www /

rsync heeft veel opties die handig zijn voor websites. Helaas heeft het geen ingebouwde manier om gelijktijdige updates te detecteren, dus je moet logica toevoegen aan cron-scripts om overlappende schrijfbewerkingen van enorme bestanden te voorkomen.


12
2017-08-26 13:05





Ik gebruik de - bestaande optie wanneer u probeert een kleine subset van bestanden van de ene map te synchroniseren met een andere locatie.


10
2017-07-24 11:32



Bedankt! Dit heeft me net gered van een aantal vervelende filterregelschrijvingen. - benzado


--rsh is van mij.

Ik heb het gebruikt om het cijfer op SSH in iets sneller te veranderen (--rsh="ssh -c arcfour") ook om een ​​keten van op te zetten sshs (raad aan deze te gebruiken ssh-agent) om bestanden te synchroniseren tussen hosts die niet rechtstreeks kunnen praten. (rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/).


8
2017-07-24 17:26





--time-limit

Wanneer deze optie wordt gebruikt, stopt rsync na T minuten en verlaat. Ik denk dat deze optie handig is bij het rsyncen van een groot aantal van gegevens tijdens de nacht (niet-bezette uren), en dan stoppen wanneer het is tijd voor mensen om het netwerk te gaan gebruiken, gedurende de dag (drukke uren).

--stop-at=y-m-dTh:m

Met deze optie kunt u opgeven hoe laat u rsync moet stoppen.

Batch Mode

De batchmodus kan worden gebruikt om dezelfde set updates toe te passen op veel identieke systemen.


7
2018-06-04 23:51



Nuttig! Ik had eerder het "at" -commando gebruikt om het proces te beëindigen - Lionel
Bronpatches: rsync.samba.org/ftp/rsync/rsync-patches-3.1.0.tar.gz ; Win32 binair bestand inclusief patch: itefix.no/i2/cwrsync - jftuga
Helaas zijn deze opties niet beschikbaar in rsync gedistribueerd met Redhat / Centos of Ubuntu distro's. - IanB
@Lionel: Hoe gebruik je at om het proces te doden? - IMTheNachoMan


Als je je afvraagt ​​hoever een langzame rsync is verwijderd en geen -v gebruikt om bestanden weer te geven terwijl ze worden overgezet, kun je achterhalen welke bestanden geopend zijn:

 ls -l /proc/$(pidof rsync)/fd/*

op een systeem met / proc

Bijv. rsync is zojuist voor me opgehangen, ook al leek het systeem op afstand nog heel veel ruimte te hebben. Deze truc heeft me geholpen om het onverwacht grote bestand te vinden dat ik me niet kon herinneren, wat niet aan de andere kant zou passen.

Het vertelde me ook een beetje meer interessante informatie - het andere uiteinde blijkbaar opgegeven, omdat er ook een kapotte socket link was:

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'

6
2018-01-09 19:08