¿Comprimir un directorio usando tar / gz sobre SSH a la computadora local?

15

Básicamente, me gustaría tar / gz un directorio en una máquina remota y guardar el archivo en mi computadora local sin tener que volver a conectarme a mi máquina local desde la remota. ¿Hay alguna manera de hacer esto a través de SSH? El archivo tar no necesita almacenarse en la máquina remota, solo en la máquina local. es posible?

Naftuli Kay
fuente

Respuestas:

26

Puede hacerlo con un comando ssh, solo dígale tarque cree el archivo en su salida estándar:

ssh remote.example.com 'cd /path/to/directory && tar -cf - foo | gzip -9' >foo.tgz

Otro enfoque, que es más conveniente si desea hacer muchas manipulaciones de archivos en la otra máquina pero es excesivo para una creación de archivo de una sola vez, es montar el sistema de archivos de la máquina remota con SSHFS (un sistema de archivos FUSE ). Debe habilitar la compresión en el nivel SSH.

mkdir ~/net/remote.example.com
sshfs -C remote.example.com:/ ~/net/remote.example.com
tar -czf foo.tgz -C ~/net/remote.example.com/path/to/directory foo
Gilles 'SO- deja de ser malvado'
fuente
3
Solo tengo curiosidad, ¿por qué recomendarías en tar -cf - foo | gzip -9lugar de tar -czf - fooo tar -cz foo?
Patrick
@Patrick Un poco más portátil, por ejemplo, funcionará en Solaris.
Gilles 'SO- deja de ser malvado'
¿Sería tan amable de describir todos los argumentos?
Rootical V.
3
@RooticalV. tar -cf - foocrea ( -c) archivo en la salida estándar ( -f -) del archivo foo. gzip -9utiliza el mejor método (más lento) de compresión. Si no te importa, puedes usarlo ssh remote.example.com tar cz /path/to/directory/foo > foo.tar.gz.
arekolek
-1

Para una forma simple de copiar un directorio o archivo comprimiéndolo solo para el transporte:

$ ssh domain.net 'ls foo'
file1   file2

$ ssh domain.net 'tar czf - foo' | tar xz

$ ls foo
file1   file2
Pierre de LESPINAY
fuente
1
Esto no almacena el tararchivo en la máquina local, que era lo que se pretendía.
Kusalananda
1
Esto es para las personas que llegan a esta pregunta (como yo) cuando buscan cómo copiar algo a través de SSH con compresión. Solo existe este adicional tar xzfuera de la tubería con un ejemplo más simple y más legible.
Pierre de LESPINAY