Standaard verwijdert rsync
geen bestanden aan de bestemmingszijde. Om rsync
überhaupt bestanden te laten verwijderen, moet je minstens één van de verwijderopties gebruiken.
Als het je niet uitmaakt wanneer bestanden worden verwijderd, gebruik dan gewoon --delete
en laat de keuze aan rsync
. Je kunt --delete
combineren met andere verwijderopties (dit conflicteert niet), maar je hoeft het niet te doen omdat alle andere verwijderopties al --delete
impliceren.
--delete-before
werkt als volgt: rsync
kijkt welke bestanden aanwezig zijn op de bron en welke bestanden aanwezig zijn op de bestemming, verwijdert alle bestanden die gevonden zijn op de bestemming maar niet op de bron en start dan de eigenlijke synchronisatie. Deze volgorde is nuttig als de bestemming weinig opslagruimte heeft omdat het eerst meer schijfruimte zal vrijmaken op de bestemming alvorens te beginnen met het overzetten van nieuwe bestanden. Het nadeel is dat rsync
meer geheugen nodig heeft om de operatie uit te voeren en dat de hele operatie een twee-stappen proces is en dus langzamer.
--delete-during
werkt als volgt: rsync
begint onmiddellijk met het synchroniseren van bestanden en als het een bestand tegenkomt dat alleen op de bestemming bestaat, wordt het verwijderd. Op die manier is er geen snelheidsverlies en is er ook geen extra geheugen nodig. Het nadeel is dat het kan gebeuren dat er eerst veel nieuwe bestanden naar de bestemmingen worden gekopieerd voordat verwijderde bestanden worden verwijderd, dus de bestemming kan tijdens de operatie veel meer schijfruimte nodig hebben dan het uiteindelijk nodig heeft als de hele operatie klaar is.
--delete-after
werkt als volgt: Synchroniseer eerst alle bestanden, voer dan dezelfde bewerking uit die --delete-before
voor de synchronisatiefase uitvoert. Dit is de slechtste keuze in de meest voorkomende gevallen, omdat het het meeste geheugen vereist, de meeste schijfruimte op de bestemming, en het is langzamer omdat het een tweestapsproces is; in feite combineert het alle nadelen van de andere twee methoden. Deze optie bestaat hoofdzakelijk voor het geval dat u “merge files” gebruikt (wat merge files zijn en hoe ze werken valt buiten het bestek van dit antwoord). Aangezien deze bestanden regels kunnen bevatten voor bestanden die tijdens het verwijderen moeten worden uitgesloten, moeten nieuwe samenvoegbestanden vóór de verwijderingsfase worden gekopieerd als hun inhoud tijdens de verwijderingsfase in aanmerking moet worden genomen. Tenzij dat een vereiste is, heeft --delete-after
geen voordeel.
--delete-delay
is een vrij nieuwe optie (hij is niet beschikbaar in rsync
2.6.9, die bijvoorbeeld nog steeds de standaard is in macOS 10.15). Het werkt zoals --delete-during
, behalve dat het bestanden niet onmiddellijk verwijdert maar nadat de synchronisatie gedaan is, dus het is een hybride van --delete-during
en --delete-after
. Het voordeel is dat het sneller is dan --delete-after
, het nadeel is dat het meer geheugen nodig heeft tijdens de synchronisatie.
--delete-excluded
vertelt rsync
om niet alleen bestanden te verwijderen die ontbreken bij de bron, maar ook om bestanden te verwijderen op de bestemming die werden uitgesloten van synchronisatie (--exclude
of --exclude-from
), ongeacht of deze bestanden daadwerkelijk zouden bestaan bij de bron of niet.