¿Hay alguna manera de hacer que rsync imprima las rutas de archivos completas a todos los archivos que son diferentes sin transferir realmente ningún archivo?
Alternativamente, necesito una forma de diferenciar los archivos en dos árboles (a través de SSH) basados solo en el cambio de tamaño o el tiempo de la última modificación.
--dry-run
dependerá de su uso de-v
y--progress options
, por lo tanto, si no obtiene ninguna salida, verifique que estas opciones estén configuradas según sea necesario. Me di cuenta de que enviará nombres de directorio incluso cuando los archivos no hayan cambiado, pero puede filtrarlos pasando la salida a través desed
o similar.Prefiero usar el formato --out para ver los detalles, canalizándolo a menos:
fuente
rsync -rvn localdir targetdir
El -n significa mostrar solo acciones (sin realizar ninguna acción).
¡Tenga en cuenta que necesita la 'v' o no le mostrará nada! (el resto de las respuestas olvidan esto ...)
fuente
Basándose en otras respuestas y /server//a/618740/114520
--dry-run
(o-n
) para evitar modificaciones--itemize-changes
(o-i
) para buscar cambios--archive
(o-a
) para obtener todos los subdirectoriosegrep
para filtrar las entradas que comienzan por punto (sin cambios)Lo que te da:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\."
Si solo quiere una forma, puede cambiar el comando:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|<)"
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|>)"
Y si solo necesita los archivos, simplemente agregue
awk
magia:rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\." | awk '{print $2}'
fuente
Yo iría por algo como esto:
Por ejemplo:
fuente
La verdad del asunto es que si ejecuta
rsync -v ...
y genera un nombre de archivo en la pantalla, ese archivo se está transfiriendo (o se habría transferido, si está haciendo un --dry-run). Para determinar por qué rsync estaba a punto de transferirlo, use el modo de detalle: /server//a/618740/27813Como otros han señalado, de manera predeterminada, rsync solo se compara en función del tamaño del archivo y la marca de tiempo, que tienen que coincidir; de lo contrario, se inicia una "copia delta" en ese archivo. Si realmente desea ver qué archivos son diferentes, use el modo de suma de verificación "-c".
fuente