rsync --delete no funciona

Sep 15 2020

El sistema operativo es Debian 10, rsync versión 3.1.3. Estoy ejecutando rsync así:

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

Esto funciona para copiar los archivos, pero no elimina nada que se haya eliminado. (Ya sea eliminado por completo de src, o en mi caso, eliminado de filelist.txt) Eso es un gran problema. La única solución que he encontrado es simplemente destruir todo el destino y copiar todo de nuevo, pero esto lleva una gran cantidad de tiempo y básicamente niega el punto de usar rsync en primer lugar.

¿Es esto un error? ¿Cómo hago para que rsync funcione correctamente, respetando la marca --delete como se supone que debe hacerlo?

Editar:

Por ejemplo:

  • Si filelist.txt contiene "foo", entonces / path / to / dest contendrá "foo".
  • Si filelist.txt contiene "foo" y "bar", entonces / path / to / dest contendrá "foo" y "bar".
  • Si filelist.txt contiene "foo", "bar" y "bat", entonces / path / to / dest contendrá "foo", "bar" y "bat".
  • etc

Suponga que "foo", "bar", "bat", etc. son directorios.

Respuestas

3 laktak Sep 24 2020 at 14:24

Debe decirle a rsync que elimine los argumentos que faltan:

rsync -arv --delete-missing-args --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
  • Entonces, si elimina el directorio foo, también se eliminará /path/to/destcon --delete-missing-args.
  • fooaún debe aparecer en la lista filelist.txt.
  • el --deleteargumento es necesario para permitir que rsync elimine los archivos de la foocarpeta
SandeepKothari Sep 28 2020 at 15:16

No. rsyncno eliminará archivos / directorios solo porque la lista de archivos no contiene esos archivos o está vacía.

si lo está utilizando --files-from, intentará sincronizar solo los archivos enumerados desde el origen al destino.

No eliminará los archivos solo porque no se encuentran en la lista de archivos transferidos --files-from.

Para que --delete funcione, debe usar la ruta de origen real ... así

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