Gracias a la maravillosa respuesta de Scott Pack (no sabía cómo hacer esto con ssh antes), puedo ofrecer esta mejora (si bashes su shell). Esto agregará compresión paralela, un indicador de progreso y comprobará la integridad en el enlace de red:
tar c file_list |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
tar xC /directory/to/extract/to
'
pves un buen programa visor de progreso para su canalización y pigzes un programa gzip paralelo que usa tantos subprocesos como su CPU tiene por defecto (creo que hasta 8 máx.). Puede ajustar el nivel de compresión para ajustarse mejor a la relación de la CPU a la red de ancho de banda e intercambiarlo con pxz -9ey pxz -dsi tiene mucha más CPU que el ancho de banda. Solo tiene que verificar que las dos sumas coincidan al finalizar.
Esta opción es útil para grandes cantidades de datos, así como para redes de alta latencia, pero no es muy útil si el enlace es inestable y se cae. En esos casos, rsync es probablemente la mejor opción, ya que puede reanudarse.
Salida de muestra:
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e - ]
176MiB [9.36MiB/s] [9.36MiB/s] [ <=> ]
6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e -
Para dispositivos de bloque:
dd if=/dev/src_device bs=1024k |
tee >(sha512sum >&2) |
pv -prab |
pigz -9 |
ssh [user@]remote_host '
gunzip |
tee >(sha512sum >&2) |
dd of=/dev/src_device bs=1024k
'
Obviamente, asegúrese de que tengan el mismo tamaño o límite con count =, skip =, seek =, etc.
Cuando copio los sistemas de archivos de esta manera, a menudo primero pongo dd if=/dev/zero of=/thefs/zero.dat bs=64k && sync && rm /thefs/zero.dat && umount /thefsa cero la mayor parte del espacio no utilizado, lo que acelera el xfer.