¿Cómo limpiar después de rsync fallido?

12

Maté un proceso local "rsync -ah".
Dejó archivos basura como ".abc.vmdk.zxivMN" en el directorio de destino.
Los archivos basura no se eliminan en ejecuciones consecutivas "rsync -ah".

Detalles:
ejecuté diff en las dos carpetas que estaba sincronizando e informó: "Solo en / mnt / archive1 / documents / general: .abc.vmdk.zxivMN"

¿Cuál es la mejor manera de limpiar los archivos rsync temporales?

usuario27465
fuente

Respuestas:

12

Indique rsyncque elimine los archivos que no están en la fuente, con --delete-duringo --delete-after. Tenga cuidado y use esta opción solo si no tiene archivos legítimos en el destino que no están en la fuente.

Ver man rsync.

Por supuesto, siempre puede eliminar manualmente los archivos que detectó con diff...

Sven
fuente
Esto no es bueno cuando estás haciendo una copia en lugar de un movimiento.
Sridhar Sarnobat
6

Lo hago usando

find -type f -iname ".*.*.??????" -ls

para prueba y

find -type f -iname ".*.*.??????" -delete

para claro

Andrés R. Gard
fuente
-1

Encontré que el siguiente comando funcionó para mí al intentar eliminar los archivos temporales que dejó rsync después de una transferencia fallida.

find vod-content/ -path '*/.*' -print0 | xargs -0 -r rm -v

Lo que hace es encontrar todos los archivos "ocultos" (archivos que comienzan con el carácter ".") Y los pasa al comando "rm" para eliminarlos.

Un problema obvio conocido con respecto al código anterior es que si su contenido contiene archivos ocultos, este comando también los eliminará.

arrayown
fuente
-2

Estoy buscando una mejor solución, pero la única en la que puedo pensar es mover todos los emptyarchivos que comienzan con un ., y tener dos puntos más en ellos, a una carpeta de basura (usar rmes un poco arriesgado):

find -type f -empty -iname ".*.*.*" | xargs -n 1 -d'\n' mv -v -t /tmp/

De ninguna manera infalible.

Sridhar Sarnobat
fuente
Votado a favor y sin explicación
Sridhar Sarnobat