GNU/Linux >> Tutoriales Linux >  >> Linux

¿Tiempo estimado o trabajo restante para terminar para Rsync?

Al ejecutar rsync en un directorio con muchos archivos y directorios en múltiples niveles, ¿podemos estimar la cantidad de trabajo o el tiempo para terminar?

  • la opción de progreso solo muestra el progreso de la transferencia de un solo archivo, no el progreso de la transferencia de todos los archivos y directorios del directorio de origen.

  • Supongo que una forma es mirar los directorios que ha
    transferido hasta ahora y compararlos con la fuente.

    Será de gran ayuda saber el orden de los archivos y directorios en
    que rsync las transfiere.

    Supongo que puede estar relacionado con ese rsync ejecuta varios subprocesos y ¿qué hace cada subproceso?

    No estoy seguro de qué orden elige, y mi suposición anterior de orden de pan primero parece no ser correcta (así que lo tacho).

Respuesta aceptada:

Puedes hacer rsync imprime una línea por archivo usando -i y luego use pv -l para informar el progreso según el recuento de líneas (en efecto, el recuento de archivos).

Necesitarás pv (visor de tuberías):http://www.ivarch.com/programs/pv.shtml

rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile

Use el siguiente comando para obtener el recuento de archivos:

find sourcedir | wc -l

Nota:este comando mostrará información de progreso según la cantidad de archivos copiados. Esto funciona mejor si hay muchos archivos pequeños. Si solo hay unos pocos archivos que son enormes, no te divertirás mucho.

Para ver el progreso cuando actualiza (o compara) una copia existente:

(más información:Compara directorios pero no contenido de archivos)

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount > logfile

El segundo -i hace que rsync imprima una línea por archivo incluso si son iguales.

Agregar -n para comparar (en realidad, no copiar ni eliminar nada).

Omitir --delete según sea necesario.

Este comando imprimirá en pantalla en tiempo real los archivos que difieren:

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount | 
    tee logfile | grep -v "^."

Los comandos anteriores funcionan mejor cuando hay muchos archivos pequeños. Si tiene pocos archivos grandes, algunos de los informes de progreso integrados de rsync podrían ser de más ayuda. Consulte la página de manual de rsync para -P o --progress o --info=progress2 . Pero cuidado:estas opciones no funcionarán bien con pv . O al menos no he descubierto cómo.

Relacionado:¿Necesita restricciones de pestañas jQuery activas una pestaña en un momento de estado usando el controlador mvc5?

Aquí hay una solución básica para ver el progreso según el tamaño:

  • tenga en cuenta el espacio libre de la partición de destino antes de copiar usando df -h .
  • nota el tamaño del directorio fuente usando du -sh .
  • use watch df -h y mira cómo crece el tamaño.

Obviamente esto solo funciona al copiar y no al actualizar o comparar.


Linux
  1. Eliminar archivos a los que no se ha accedido durante un tiempo determinado en Linux

  2. ¿Establecer Umask para el sistema de archivos montado en Sshfs?

  3. Usando rsync para sincronizar archivos

  4. cp -r sin archivos ocultos

  5. Linux equivalente a robocopy?

Comando ls en Linux para listar archivos

Ejemplos de Rsync para transferir archivos en Linux

¿Razones para que rsync NO transfiera todos los archivos?

¿Cómo funcionan los permisos de archivo para el usuario root?

¿Por qué find -mtime no funciona como se esperaba en archivos con diferentes zonas horarias?

hacer que un cronjob espere a que finalice el trabajo anterior de rsync