Rsync muestra el progreso de un archivo individual

21

Estoy usando rsync para cargar / descargar un archivo bastante grande (20Gb). Soy consciente de la opción --progress, pero lo que hace en mi caso es solo mostrarme el resultado al final.

Mi problema es que durante una conexión inestable, no sé si todavía se está descargando / cargando o si algo salió mal. ¿Hay alguna manera de mostrar la barra de progreso para un archivo individual? Algo similar a lo que hace wget por defecto?

¡Gracias!

Salmón
fuente
44
He usado rsync por más de 10 años y no puedo creer que nunca haya hecho esta pregunta.
slm

Respuestas:

17

Esto podría ser lo que buscas.

% rsync -avvz --times --stats --checksum --human-readable --acls \
    --itemize-changes --progress \
    --out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \
    /usr/include/glib-2.0 my-glib-copy/

Los interruptores se desglosan de la siguiente manera:

  • -avvz = archivo, detallado x 2, comprimir
  • --times = preservar tiempos de modificación
  • --stats = dar algunas estadísticas de transferencia de archivos
  • --checksum = omitir en función de la suma de comprobación, no de la hora y el tamaño
  • --human-legible = números de salida en un formato legible por humanos
  • --acls = preservar las ACL (implica -p)
  • --itemize-changes = genera un resumen de cambios para todas las actualizaciones
  • --progress = muestra el progreso durante la transferencia
  • --out-format = '[% t] [% i] (Última modificación:% M) (bytes:% -10l)% -100n'
    • % t = fecha y hora actual
    • % i = una lista detallada de lo que se está actualizando
    • % M = la hora de la última modificación del archivo
    • % -10l = la longitud del archivo en bytes (-10 es para alineación y precisión)
    • % -100n = el nombre del archivo (forma corta; "/" al final del directorio) (-100 es para alineación y precisión)

NOTA: Vea las páginas de manual para rsyncy rsyncd.confpara detalles completos sobre los interruptores anteriores.

El comando anterior produce la siguiente transcripción:

sending incremental file list
delta-transmission disabled for local transfer or --whole-file
[2012/12/23 21:34:46] [cd+++++++++] (Last Modified: 2010/12/19-08:13:31) (bytes: 4096      ) glib-2.0/
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 1511      ) glib-2.0/glib-object.h
       1.51K 100%    0.00kB/s    0:00:00
       1.51K 100%    0.00kB/s    0:00:00 (xfer#1, to-check=181/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:30) (bytes: 2910      ) glib-2.0/glib.h
       2.91K 100%    2.78MB/s    0:00:00
       2.91K 100%    2.78MB/s    0:00:00 (xfer#2, to-check=180/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 3613      ) glib-2.0/gmodule.h
       3.61K 100%    3.45MB/s    0:00:00
       3.61K 100%    3.45MB/s    0:00:00 (xfer#3, to-check=179/183)
...
...
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8431      ) glib-2.0/gobject/gvaluecollector.h
       8.43K 100%  141.96kB/s    0:00:00
       8.43K 100%  141.96kB/s    0:00:00 (xfer#178, to-check=1/183)
[2012/12/23 21:34:46] [>f+++++++++] (Last Modified: 2010/09/30-15:02:31) (bytes: 8507      ) glib-2.0/gobject/gvaluetypes.h
       8.51K 100%  143.23kB/s    0:00:00
       8.51K 100%  143.23kB/s    0:00:00 (xfer#179, to-check=0/183)
total: matches=0  hash_hits=0  false_alarms=0 data=1305506

rsync[2996] (sender) heap statistics:
  arena:         540672   (bytes from sbrk)
  ordblks:            3   (chunks not in use)
  smblks:             7
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        942080   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          592
  uordblks:      404784   (bytes used)
  fordblks:      135888   (bytes free)
  keepcost:      134240   (bytes in releasable chunk)

rsync[2999] (server receiver) heap statistics:
  arena:         286720   (bytes from sbrk)
  ordblks:            2   (chunks not in use)
  smblks:             8
  hblks:              3   (chunks from mmap)
  hblkhd:        667648   (bytes from mmap)
  allmem:        954368   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          672
  uordblks:      174480   (bytes used)
  fordblks:      112240   (bytes free)
  keepcost:      102352   (bytes in releasable chunk)

rsync[2998] (server generator) heap statistics:
  arena:         233472   (bytes from sbrk)
  ordblks:            4   (chunks not in use)
  smblks:             6
  hblks:              2   (chunks from mmap)
  hblkhd:        401408   (bytes from mmap)
  allmem:        634880   (bytes from sbrk + mmap)
  usmblks:            0
  fsmblks:          448
  uordblks:       83152   (bytes used)
  fordblks:      150320   (bytes free)
  keepcost:      131120   (bytes in releasable chunk)

Number of files: 183
Number of files transferred: 179
Total file size: 1.31M bytes
Total transferred file size: 1.31M bytes
Literal data: 1.31M bytes
Matched data: 0 bytes
File list size: 6.30K
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 350.39K
Total bytes received: 3.43K

sent 350.39K bytes  received 3.43K bytes  707.64K bytes/sec
total size is 1.31M  speedup is 3.69

Barra de progreso en versiones más recientes de rsync?

Me encontré con esta pregunta de SF:

Una de las respuestas mencionó que en las versiones más recientes de rsyncahora hay soporte para una barra de progreso. Se parece a esto:

% ./rsync -a --info=progress2 /usr .
    305,002,533  80%   65.69MB/s    0:00:01  xfr#1653, ir-chk=1593/3594)

Esta barra de progreso todavía no muestra el estado de los archivos individuales en la transferencia, pero sí muestra un porcentaje de la transferencia general que podría ser útil.

slm
fuente
1
Gracias por la respuesta. Todavía no es exactamente lo que estoy buscando. Lo que realmente necesito es cuando descargas un archivo individual (digamos glib-2.0 / glib-object.h): me mostraría una barra de progreso solo para este archivo. Imagine glib-2.0 / glib-object.h siendo 20Gb. ¿Cómo saber si todavía se está descargando y cuánto tiempo le queda?
Salmón
6

rsync -vP funciona para mi.

Desde la página del manual : "-P igual que --parte --progreso"

Pradyumna
fuente
1

¿Estás utilizando rsync en modo demonio? El comportamiento predeterminado de rsync (en Debian 6) es cómo lo ha solicitado. Sin embargo, encuentro en la página de manual para rsyncd.conf que el comportamiento predeterminado en modo demonio es:

registro de transferencia
Este parámetro permite el registro por archivo de descargas y cargas en un formato similar al utilizado por los demonios ftp. El demonio siempre registra la transferencia al final, por lo que si se cancela una transferencia, no se hará ninguna mención en el archivo de registro.
Si desea personalizar las líneas de registro, consulte el parámetro "formato de registro".

Entonces, si usa rsync en modo demonio, parece que tendrá que agregar la línea "logging de transferencia" a rsyncd.conf.

jkim
fuente
No, no estoy en el modo deamon y no veo la barra de progreso para cada archivo, solo el resumen de todo el proceso
Salmon