¿Cómo comprimir un directorio, transferir mediante scp y descomprimir en un comando?

11

Con frecuencia transfiero directorios grandes scpy sería bueno si de alguna manera pudiera comprimir el directorio, enviarlo y descomprimirlo todo en uno.

¿Es posible algo así?

macek
fuente

Respuestas:

29

¿Qué tal usar en su rsynclugar con la -zopción habilitada para compresión?

rsync -az --progress source_dir/* remote_host:/destination_dir

Esto también tiene el beneficio adicional de que si el archivo ya existe y no ha cambiado en el destino, no se transferirá.

AaronM
fuente
7

Gracias a la respuesta de @ johnshen64, pude llegar a algo bastante bueno

tar -zc path/to/source | ssh user@remote tar -zxC path/to/destination

Desafortunadamente, esto no muestra progreso mientras se transfiere. He notado increíbles mejoras de velocidad usando este método.

Si alguien sabe cómo mostrar el progreso de una transferencia como esta, agradecería mucho la ayuda :)

macek
fuente
1
Insertar pventre alquitrán y ssh .
user1686
Esto es genial si no tienes rsync disponible
Simon Hartcher
2

bueno, usaría tar en su lugar

tar cf - directorio | servidor ssh 'tar xf -'

puedes agregar v para verificar.

zip debería ser el mismo, pero tar es más robusto para linux en mi opinión.

johnshen64
fuente
+1 gracias por tu ayuda; Esto me llevó a la mitad del camino. Pude encontrar una solución que no usa el -carácter críptico , también usa la compresión gzip y permite apuntar a un directorio de destino.
macek
@macek: tenga en cuenta que f -podría ser necesario en otros sistemas operativos, ya que la mayoría de las versiones tar intentarán leer desde una unidad de cinta de lo contrario. La lectura de stdin por defecto es específica de GNU.
user1686