¿Cómo puedo ver una barra de progreso cuando ejecuto rsync?

31

Estoy usando Ubuntu 12.04 como repositorio y me gustaría ver una barra de progreso cuando lo uso rsyncdesde la línea de comandos. Probé la opción sugerida en este artículo ( -P), pero prefiero ver una barra de progreso y no usar Grsync. Estoy usando rsync -P source destactualmente.

José Smith
fuente
Agradezco la rápida respuesta. Espero con interés investigar esto.
Joseph Smith
Fue un buen comienzo, pero necesito saber cómo actualizar la barra de progreso ya que rsync está funcionando. Un amigo dijo que necesito implementar el tamaño del servidor e implementar un comando watch con pipe.
Joseph Smith
Hay una respuesta :)
AB

Respuestas:

7

¿Qué tal esto?

rsync_param="-av"
rsync "$rsync_param" a/ b |\
     pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
  • $rsync_param

    Evita la doble entrada de parámetros

  • $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)

    Determina el número de pasos para completar.

  • a/ b

    1. a/ es la fuente
    2. b es el objetivo
AB
fuente
1
@JosephSmith ¿Estaba satisfecho con mi respuesta? Entonces dame un voto a favor (∧). Si pudiera resolver su problema, sería bueno que marcara mi respuesta (✓). ;)
AB
Acepté esto hace un par de días con una gran sonrisa. Sin embargo, simplemente no lo seleccioné y lo acepté nuevamente. No creo que pueda votar porque no tengo suficiente crédito. Gracias por la ayuda por cierto.
Joseph Smith
¿Alguna idea de por qué recibo un error, no se encontró ningún archivo o directorio? El comando que ejecuto es: root @ cto: / repo / ubuntu # rsync "$ rsync_param" -a --prune-empty-dirs --exclude "* .iso" archive.ubuntu.com/ubuntu/indices/ / repo / ubuntu / índices | pv -lep -s $ (rsync "$ rsync_param" n archive.ubuntu.com/indices/ / repo / ubuntu / indices | awk 'NF' | wc -l)
Joseph Smith
1
"$rsync_param"nes bastante extraño las comillas significan que solo puede funcionar en opciones sin espacios, y adjuntarlas nal final significa que solo puede funcionar con opciones cortas. Mucho más claro y fácil es simplemente $rsync_param -n, que especifica la ejecución en seco sin depender del formato rsync_paramy, al no
citarlo
Trabajó por primera vez, excepto que notó que no muestra la tasa de transferencia
Ciasto piekarz
36

rsync tiene una --infoopción que puede usarse no solo para mostrar el progreso actual, sino también la velocidad de transferencia y el tiempo transcurrido:

--info=FLAGS            fine-grained informational verbosity

La explicación de cómo usarlo se encuentra bajo la -Popción en la página del manual:

-P     The -P option is equivalent to --partial --progress.  Its purpose is to
       make it much easier to specify these two options for a long transfer that
       may be interrupted.

       There is also a --info=progress2 option that outputs statistics based on
       the whole transfer, rather than individual files.  Use this flag
       without  out‐putting  a  filename  (e.g. avoid -v or specify --info=name0)
       if you want to see how the transfer is doing without scrolling the screen 
       with  a  lot  of names.   (You  don’t  need  to specify the --progress
       option in order to use --info=progress2.)

Entonces lo siguiente:

rsync -r --info=progress2 --info=name0 "$src" "$dst"

Resulta en la salida y actualización continua de lo siguiente:

18,757,542,664 100%   65.70MB/s    0:04:32 (xfr#1389, to-chk=0/1510)

Tenga en cuenta que cuando comienza la transferencia, el número total de fragmentos, y por lo tanto el progreso actual, puede cambiar cuando se utiliza la opción recursiva a medida que se descubren más archivos para sincronizar

Jon
fuente
16

Puedes usar --progressy --statsparámetros.

rsync -avzh --progress --stats root@server:/path/to/file output_name

root@server's password: 
receiving incremental file list
file
         98.19M  54%    8.99MB/s    0:00:08
fugitivo
fuente
2
Esto funcionó para mí en macOS.
mango
2

Esto finalmente funcionó:

rsync "$rsync_param" -a --prune-empty-dirs --exclude "*.iso" rsync://archive.ubuntu.com/ubuntu/indices/ /repo/ubuntu/indices | pv -lep -s $(rsync "$rsync_param"n rsync://archive.ubuntu.com/indices/ /repo/ubuntu/indices | awk 'NF' | wc -l)
José Smith
fuente
1

Si su versión de rsyncno acepta la --info=progress2opción, puede usar tqdm:

Instalar:

pip install tqdm

Usar:

$ rsync -av / source / dest | tqdm --unit_scale | wc -l
10.0Mit [00:02, 3.58Mit / s]
Ostrokach
fuente
0

Sí, haz lo que dijo Jon : usa la --info=progress2opción. Pero, ¿qué hago si mi versión de rsync es demasiado antigua y no admite esta opción? Respuesta: ¡actualiza rsync!

Aquí se explica cómo construir rsyncdesde la fuente en Ubuntu

(probado en Ubuntu 16.04)

  1. Descargue la última versión de rsync: https://download.samba.org/pub/rsync/src/ . Ej: "rsync-3.1.3.tar.gz". Guárdelo en un directorio SIN ESPACIOS PARA ASEGURARSE de que se construye correctamente.
  2. En su explorador de carpetas, haga clic derecho y vaya a "Extraer aquí".
  3. Ingrese la carpeta extraída (ej: "rsync-3.1.3")
  4. Haga clic derecho en la pantalla en su administrador de carpetas y vaya a "Abrir en la Terminal". Alternativamente, realice los pasos 2 a 4 manualmente en la línea de comando. En última instancia, solo necesita ser cdeditado en este directorio extraído que contiene el rsynccódigo fuente.
  5. Verifique la versión actual de rsync. Tome nota de esto para que pueda ver más tarde que realmente se actualizó.

    rsync --version
    
  6. Instale las herramientas necesarias:

    sudo apt update
    sudo apt install yodl
    
  7. Construir:

    ./configure
    make
    sudo make install
    
  8. Asegúrese de que se haya actualizado:

    rsync --version
    

    Salida de muestra:

    $ rsync --version
    rsync  version 3.1.3  protocol version 31
    Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others.
    Web site: http://rsync.samba.org/
    Capabilities:
        64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
        socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
        append, no ACLs, xattrs, iconv, symtimes, prealloc
    
    rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
    are welcome to redistribute it under certain conditions.  See the GNU
    General Public Licence for details.
    
  9. Busque en las páginas del manual "progress2". Ahora tendrá acceso a la --info=progress2opción:

    man rsync
    

    ... luego presione la /tecla y escriba progress2; presione Entrar para buscarlo; presione npara la coincidencia 'n'ext hasta que encuentre la entrada que está buscando:

    También hay una --info=progress2opción que genera estadísticas basadas en toda la transferencia, en lugar de archivos individuales. Utilice este indicador sin generar un nombre de archivo (por ejemplo, evite -vo especifique --info=name0) si desea ver cómo se realiza la transferencia sin desplazarse por la pantalla con muchos nombres. (No necesita especificar la --progressopción para usar --info=progress2).

Ver también: "Cómo usar rsync", por Gabriel Staples: https://superuser.com/questions/1271882/convert-ntfs-partition-to-ext4-how-to-copy-the-data/1464264#1464264

Referencias parciales:

  1. http://www.beginninglinux.com/home/backup/compile-rsync-from-source-on-ubuntu
Gabriel Staples
fuente