Hay mucas páginas en Internet que muestran como hacer copias remotas de archivos. Aquí hay un resumen:

Este metodo es el más rápido de todos:

#En la máquina donde queremos copiar los archivos:
nc -l 6969 | tar xfz - -C /tmp

#En la máquina desde donde sacamos los archivos:
tar cfz - dir | nc server 6969

(dependiendo de la versión del netcat, las opciones pueden variar)

Otros métodos:

Push (el comandos se ejecuta localmente, los archivos se transfieren de la máquina local a la remota)
  • tar cvf - . | gzip -c -1 | ssh user@host cat ">" remotefile.gz
  • ssh target_address cat <localfile ">" remotefile
  • ssh target_address cat <localfile - ">" remotefile
  • cat localfile | ssh target_address cat ">" remotefile
  • cat localfile | ssh target_address cat - ">" remotefile
  • dd if=localfile | ssh target_address dd of=remotefile
  • ssh target_address cat <localfile "|" dd of=remotefile
  • ssh target_address cat - <localfile "|" dd of=remotefile
  • ( cd SOURCEDIR && tar cf - . ) | ssh target_address "(cd DESTDIR && tar xvpf - )"
  • ( cd SOURCEDIR && tar cvf - . ) | ssh target_address "(cd DESTDIR && cat - > remotefile.tar )"
  • ( cd SOURCEDIR && tar czvf - . ) | ssh target_address "(cd DESTDIR && cat - > remotefile.tgz )"
  • ( cd SOURCEDIR && tar cvf - . | gzip -1 -) | ssh target_address "(cd DESTDIR && cat - > remotefile.tgz )"
  • ssh target_address "( nc -l -p 9210 > remotefile & )" && cat source-file | gzip -1 - | nc target_address 9210
  • cat localfile | gzip -1 - | ssh target_address cat ">" remotefile.gz
Pull (el comandos se ejecuta localmente, los archivos se transfieren de la máquina remota a la local)

  • ssh target_address cat remotefile > localfile
  • ssh target_address dd if=remotefile | dd of=localfile
  • ssh target_address cat "<" remotefile >localfile
  • ssh target_address cat "<" remotefile.gz | gunzip >localfile

  • Comparación

  • ###El siguiente utiliza la cpu remota para comparar los archivos:
  • ssh target_address cat remotefile | diff - localfile
  • cat localfile | ssh target_address diff - remotefile
  • ###El siguiente utiliza la cpu local para comparar los archivos:
  • ssh target_address cat <localfile "|" diff - remotefile

  • Explicación de &&, ||, y -

    && es un atajo para "si es verdadero haz"
    || es un atajo para "si es falso haz"
    Pueden usarse separados o juntos según convenga.
    Los siguientes ejemplos intentan cambiar el directorio a "/tmp/mydir"; se obtendran diferentes resultados según el directorio exista o no;
    cd /tmp/mydir && echo Se pudo cambiar al directorio
    cd /tmp/mydir || echo No se pudo cambiar al directorio
    cd /tmp/mydir && echo Se pudo cambiar al directorio || echo No se pudo cambiar al directorio
    cd /tmp/mydir && echo funciono || echo fallo
    cd /tmp/mydir && echo funciono || { echo fallo; exit; }

    El guión "-" se usa para referenciar tanto la entrada como la salida estandard. El contexto en el que se use el guión determina si referencia la salida o la entrada estandard.

    Fuentes: http://ultra.ap.krakow.pl/~bar/DOC/ssh_backup.html y http://www.spikelab.org/blog/scpTarSshTarNc.html
       
    © Copyright © 2020 Web de Guillermo Adrián Molina. All Rights Reserved.