Poneos en situación: estamos en un entorno corporativo con máquinas Linux y necesitamos transferir ficheros entre dos de ellas pero no disponemos de ningún protocolo de transferencia habitúal. No tenemos (o no queremos usar) el infame SMB/CIFS (Samba para los amigos), no hay NFS, no tenemos acceso FTP y por supuesto que no tenemos acceso físico a la máquina destino de las transferencias. Sólo disponemos de una conexión SSH con la misma ¿cómo lo hacemos?

La primera opción implica una cierta preparación previa: que la máquina destino (supondremos siempre que tenemos acceso local a la máquina origen) tenga una copia de netcat, esa llamada “navaja suiza” del TCP/IP. Para hacer la transferencia lo primero es poner en escucha una instancia de netcat en la máquina destino. Así:

    jmmoralesv@barbara:/tmp$ netcat -v -l -p 6969 > googlemapsapi.pdf
    listening on [any] 6969 ...

Inmediatamente después lanzamos la copia desde la máquina origen de esta forma:

    jmmoralesv@eduardita:~> cat googlemapsapi.pdf | netcat barbara 6969

La máquina destino recibe correctamente el fichero y cierra la sesión:

    connect to [xxx.xxx.xxx.xxx] from eduardita [xxx.xxx.xxx.xxx] 43900
    googlemapsapi.pdf
    jmmoralesv@barbara:/tmp$ ls -l
    total 924
    -rw-r--r-- 1 jmmoralesv jmmoralesv 428445 2006-10-05 12:00 googlemapsapi.pdf

Evidentemente no tenemos que pasar los ficheros uno a uno ;-) . Si queremos pasar un directorio completo la secuencia sería la siguiente: Primero levantamos de esta forma la escucha en la máquina destino:

    jmmoralesv@barbara:/tmp$ netcat -v -l -p 6969 | tar xv
    listening on [any] 6969 ...

Y luego lanzamos la copia desde el origen así:

    jmmoralesv@eduardita:~> tar cf - pdfs | netcat barbara 6969

Ahora ‘recogemos’ los resultados:

    connect to [xxx.xxx.xxx.xxx] from eduardita [xxx.xxx.xxx.xxx] 49810
    pdfs/
    pdfs/fungibles 8550.pdf
    pdfs/googlemapsapi.pdf
    pdfs/GuiaWebVersionDefinitiva.pdf
    jmmoralesv@barbara:/tmp$ ls -lR
    .:
    total 4
    drwxr-xr-x 2 jmmoralesv jmmoralesv 4096 2006-10-05 12:30 pdfs
    ./pdfs:
    total 1904
    -rw-r--r-- 1 jmmoralesv jmmoralesv 860160 2006-10-05 12:22 fungibles 8550.pdf
    -rw-r--r-- 1 jmmoralesv jmmoralesv 428445 2006-10-05 12:00 googlemapsapi.pdf
    -rw-r--r-- 1 jmmoralesv jmmoralesv 644674 2006-08-03 10:48 GuiaWebVersionDefinitiva.pdf

La segunda opción que veremos no requiere más que de la conexión ssh con la máquina destino.

    jmmoralesv@eduardita:~> tar czv googlemapsapi.pdf | ssh barbara tar xz -C /tmp
    googlemapsapi.pdf
    Password:

Igualmente podemos transferir un directorio completo:

    jmmoralesv@eduardita:~> tar czv pdfs | ssh barbara tar xz -C /tmp
    pdfs/
    pdfs/fungibles 8550.pdf
    pdfs/googlemapsapi.pdf
    pdfs/GuiaWebVersionDefinitiva.pdf
    Password:

O, incluso, invertir los términos y traernos uno o varios ficheros desde la máquina destino a la origen:

    jmmoralesv@eduardita:~> ssh barbara tar cz /tmp/pdfs | tar xz -C .
    Password:

La última opción consiste en montar directamente un directorio de la máquina destino sobre nuestro sistema de ficheros gracias a sshfs. En la máquina destino no necesitamos hacer ningún preparativo previo: sólo contar con el servicio SSH. En la máquina origen debemos de instalar previamente los paquetes fuse y sshfs. Una vez hecho esto levantamos el módulo de fuse y, sin mas, montamos el directorio que deseamos sobre nuestro sistema de la siguiente forma:

    jmmoralesv@eduardita:~> sudo modprobe fuse
    Contraseña:
    jmmoralesv@eduardita:~> sshfs jmmoralesv@barbara:/tmp /mnt/barbara
    Password:
    jmmoralesv@eduardita:~> ls -l /mnt/barbara
    total 424
    -rw-r--r-- 1 jmmoralesv 1000 428445 2006-10-05 12:44 googlemapsapi.pdf
    drwxr-xr-x 1 jmmoralesv 1000 4096 2006-10-05 12:36 pdfs
    jmmoralesv@eduardita:~>

Por último, para desmontar la unidad:

    jmmoralesv@eduardita:~> sudo umount /mnt/barbara
    root's password:
    jmmoralesv@eduardita:~> ls /mnt/barbara -l

Referencias y ampliaciones en:

Compártelo:
    emailPDFPrintIdenti.caTwitterFacebookdel.icio.usDiigoFriendFeedBitacoras.comNetvibesMeneameBarraPuntoWikioLinkedInGoogle BuzzGoogle BookmarksLiveMisterWongTechnorati