Puede realizar ambas tareas en el mismo comando utilizando la --delete
bandera para rsync
.
> ls -1 localdir/
a.foo
b.foo
> ssh remote-host "ls -1 remotedir/"
c.foo
> rsync -a --delete localdir/ remote-host:remotedir/
> ssh remote-host "ls -1 remotedir/"
a.foo
b.foo
La --delete
opción elimina archivos del directorio de destino que no existen en el origen. Hay algunas opciones sobre cuándo se eliminan los archivos y cómo manejar los archivos excluidos.
> man rysnc
...
--delete delete extraneous files from dest dirs
--delete-before receiver deletes before transfer (default)
--delete-during receiver deletes during xfer, not before
--delete-after receiver deletes after transfer, not before
--delete-excluded also delete excluded files from dest dirs
La página del manual también contiene esta advertencia:
¡Esta opción puede ser peligrosa si se usa incorrectamente! Es una muy buena idea ejecutar primero usando --dry-run option
( -n
) para ver qué archivos se eliminarán para asegurarse de que los archivos importantes no estén en la lista.