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
Comparación
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