Copiar archivos utilizando SCP en Linux
SCP (secure copy) es un comando de Linux que nos permite copiar directorios o archivos entre diferentes hosts que utiliza la autenticación SSH y por lo tanto provee el mismo nivel de seguridad.
Sintaxis
La sintaxis del comando, con las opciones más relevantes es las sigiuente:
scp [-p] [-v] [-r] [-C] [-i identity_file] [[username@]host:]file ... [[username@]host:]file_or_dir
Las descripción de las opciones es la siguiente:
- -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
Ejemplos de uso
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.
Posts relacionados (generados automáticamente):
