rsync ignora, a volte, il parametro --delete
Ho notato che diverse volte nel tempo l’uso del parametro --delete
usando il comando rsync
durante l’esecuzione viene bellamente ignorato.
Visto che sono un pignolo su certe cose, sono voluto andare a fondo della cosa. Da premettere che in effetti man rsync
ha la spiegazione del motivo, ma è così nascosto che per trovarlo ci vuole davvero fortuna!
Premessa:
Voglio creare un backup di una cartella su un mio altro sistema che uso come disco di backup. Dato il comando:
rsync -v -avuzrpL --delete /var/www/dati/* -e 'ssh -p45278' JoeVR@localNAS:BackupData/LocalServer/dati
mi aspetto che quando cancello dei file da /var/www/dati/
quando eseguo questo comando me lo elimini anche dalla cartella di destinazione visto la presenza del parametro --delete
.
Invece ho notato che il file resta li: nessuna linea di notifica (visto l’uso del parametro -v
per avere un log approfondito lo pretendo) di cancellazione del file cancellato dalla cartella sorgente. 😡
Alla fine girovagando per i vari forum ho trovato il problema, o per essere più precisi, il motivo del problema: per non so quale motivo, chi scrisse originalmente l’utility rsync
decise che il parametro --delete
avrebbe funzionato solo in assenza di caratteri wildchar. quindi la versione:
rsync -v -avuzrpL --delete /var/www/dati/*
non esegue la cancellazione, mentre
rsync -v -avuzrpL --delete /var/www/dati/
si!!
In realtà leggendo a fondo la manualistica un motivo c’è e probabilmente è legato allo sviluppo nel tempo della utility. Se volte saperne di più andate a leggere man rsync
e troverete tutta una serie di varianti del parametro --delete
. Giusto per darvi un’idea:
# # Estratto dal man rsync # --del an alias for --delete-during --delete delete extraneous files from dest dirs --delete-before receiver deletes before xfer, not during --delete-during receiver deletes during the transfer --delete-delay find deletions during, delete after --delete-after receiver deletes after transfer, not during --delete-excluded also delete excluded files from dest dirs --ignore-missing-args ignore missing source args without error --delete-missing-args delete missing source args from destination
Personalmente non sono stato lì a leggermi tutte le varianti: dopo aver letto questa pagina mi sono accontentato di far funzionare il mio rsync --delete
come mi serviva, ma qualcosa mi dice che sarà bene che me lo legga, a dovere tutto, per poter sfruttare maggiori funzionalità di questa utility!!
Clicca qui per tornare alla pagina Trcks & Trips
Clicca qui per tornare alla pagina home del Wiki
— Joseph Curto 02/08/2023 10:55 — Ultima modifica 02/08/2023 11:23