rsync --delete non funziona

Sep 15 2020

Il sistema operativo è Debian 10, rsync versione 3.1.3. Sto eseguendo rsync in questo modo:

time rsync -ar --delete --info=progress2 --files-from=filelist.txt . /path/to/dest

Funziona per copiare i file, ma non elimina tutto ciò che è stato rimosso. (O rimosso completamente da src o, nel mio caso, rimosso da filelist.txt) Questo è un grosso problema. L'unica soluzione alternativa che ho trovato è semplicemente bombardare l'intera destinazione e copiare tutto di nuovo, ma questo richiede un'enorme quantità di tempo e sostanzialmente nega il punto di utilizzare rsync in primo luogo.

è un insetto? Come faccio a far funzionare correttamente rsync, onorando il flag --delete come dovrebbe?

Modificare:

Per esempio:

  • Se filelist.txt contiene "pippo", / path / to / dest conterrà "pippo".
  • Se filelist.txt contiene "foo" e "bar", / path / to / dest conterrà "foo" e "bar".
  • Se filelist.txt contiene "foo", "bar" e "bat", / path / to / dest conterrà "foo", "bar" e "bat".
  • eccetera

Supponiamo che "foo" "bar" "bat" ecc. Siano directory.

Risposte

3 laktak Sep 24 2020 at 14:24

Devi dire a rsync di eliminare gli argomenti mancanti:

rsync -arv --delete-missing-args --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
  • Quindi, se elimini la directory foo, verrà eliminata anche /path/to/destcon --delete-missing-args.
  • foodeve ancora essere elencato in filelist.txt.
  • l' --deleteargomento è richiesto per consentire a rsync di eliminare i file nella foocartella
SandeepKothari Sep 28 2020 at 15:16

No. rsyncNon cancellerà file / directory solo perché l'elenco dei file non contiene quei file o è vuoto.

se lo stai utilizzando --files-fromproverà a sincronizzare solo i file elencati dall'origine alla destinazione.

Non eliminerà i file solo perché sono assenti dall'elenco dei file passato a --files-from.

Affinché --delete funzioni è necessario utilizzare il percorso sorgente effettivo .. in questo modo

rsync -ar --delete path/to/src path/to/destination