lunes, 18 de abril de 2011

Copiar archivos entre 2 maquinas por ssh

Resulta que me he puesto a hacer experimentos entre 2 maquinas virtuales con linux en la que me copie archivos y directorios entre ambas.


Por internet por supuesto me encontre con un poco de info:


Sintaxis de dicho comando:


scp [-p] [-v] [-r] [-C] [-i identity_file] [[username@]host:]file ... [[username@]host:]file_or_dir
  • -p: preserva las fechas de modificación, acceso y modo del archivo original.
  • -v: verbose mode. Habilita mensajes de debug para diagnosticar problemas de conexión, autenticación o configuración.
  • -r: modo recursivo al copiar directorios (copia también los subdirectorios).
  • -C: habilita la compresión en la conexión SSH.
  • -i identity_file: selecciona el archivo desde el cual se lee una clave privada. Esta clave privada se pasa a SSH a la hora de establecer la conexión.
Enviar un archivo a un host remoto:
scp archivo.txt usuario@host:/ruta/de/destino/archivoDestino.txt

Envía archivo.txt a host, a la ruta /ruta/de/destino, y lo graba con el nombre archivoDestino.txt. La conexión se establecerá utilizando el nombre de usuario especificado, y el dueño del archivo en el host será el utilizado en la conexión.

scp archivo.txt usuario@host:archivoDestino.txt

Si no se especifica la ruta de destino, se copiará al directorio del usuario especificado (/home/usuario).

scp archivo.txt host:archivoDestino.txt

Si no se especifica un usuario remoto, utilizará el nombre con el que estamos logueados actualmente en el host local.

Copiar un archivo desde un host remoto:

scp usuario@host:/ruta/archivoRemoto.txt ./archivo.txt

Copia archivoRemoto.txt del host remoto a mi directorio actual, y lo nombramos archivo.txt.

scp usuario@host:archivoRemoto.txt ./

Copia archivoRemoto.txt ubicado en el home de usuario del host remoto a mi ubicación actual.

Copiar un directorio entero hacia un host remoto:

scp -r dirLocal usuario@host:/ruta/de/destino/

Este comando copia el directorio dirLocal a /ruta/de/destino en el host remoto, conectándonos como usuario. El directorio de destino ya debe de existir.

Otra opción es crear un archivo tar o tar comprimido (.tar.gz), copiar ese único archivo y descomprimirlo en el destino.

Copiar un directorio entero desde un host remoto:

scp -r usuario@host:/ruta/dirRemoto/ /tmp/

Copia el directorio /ruta/dirRemoto ubicado en el host remoto, y lo copia en el directorio local /tmp

Copiar un archivo entre hosts remotos:

Otra de las posiblidades del comando SCP es copiar un archivo (o directorio, similar a los ejemplos antes mostrados) desde un host remoto a otro host remoto.

scp usuario1@host1:/ruta/en/host1/archivoHost1.txt usuario2@host2:/ruta/en/host2/archivoHost2.txt

En este ejemplo, usuario1 es un usuario de host1, mientras que usuario2 es un usuario de host2.

Uso desde Windows:

Si necesitamos copiar archivos o directorios desde un ambiente Windows podemos utilizar la excelente aplicación WinSCP, que nos provee una interfaz gráfica para mover, copiar, renombrar, cambiar permisos, etc. Su interfaz es muy intuitiva, y nos permite visualizar el contenido local y remoto con dos paneles al estilo Norton Commander o con otro estilo más parecido al explorador de Windows.


Fuente original: