rsync --delete no funciona
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
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 listafilelist.txt.- el
--deleteargumento es necesario para permitir que rsync elimine los archivos de lafoocarpeta
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