Linux / Comando scp: copiar archivos entre equipos mediante SSH

scp copia archivos entre sistemas locales y remotos usando SSH. Normalmente, la ubicación remota se indica en la forma usuario@host:ruta.

Desde OpenSSH 9.0, scp utiliza de forma predeterminada SFTP, el protocolo de transferencia de archivos sobre SSH. La opción -O selecciona el protocolo SCP heredado por compatibilidad. El orden de origen y destino determina la dirección de la copia; compruebe los dos puntos de la ruta remota y las comillas, especialmente si recurre al protocolo heredado.

Sintaxis básica

scp [opciones] origen destino

La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man scp en el sistema actual.

Ejemplos de uso

Copiar archivos locales al servidor

Necesita un archivo local report.txt, acceso SSH a la cuenta remota y permisos de escritura en el destino. Sustituya los nombres de usuario, servidor y rutas de los ejemplos por los reales. Las direcciones example.com y example.test son ilustrativas; no implican que exista allí un servidor SSH disponible. Compruebe antes si la copia reemplazará un archivo existente.

scp report.txt alice@server.example.com:/home/alice/

Copiar archivos del servidor a local

Trae archivos remotos al directorio actual.

scp alice@server.example.com:/home/alice/report.txt .

Copiar directorios

Use -r para incluir archivos secundarios. Verifique el tamaño esperado.

scp -r project/ alice@server.example.com:/home/alice/

Verificar la dirección de transferencia y el resultado

scp archivo_local usuario@host:ruta copia desde local a remoto. Los servidores y rutas indicados a continuación son solo para fines explicativos, así que verifique los permisos reales y el espacio de almacenamiento antes de cambiarlos.

scp report.txt user@server.example.test:/tmp/report.txt

En caso de éxito, se mostrará el progreso de la transferencia o, según la configuración de salida, puede finalizar sin ningún mensaje. Verifique el nombre y el tamaño del archivo en el servidor remoto con ssh user@server.example.test 'ls -lh /tmp/report.txt'.

La posición antes y después de los dos puntos determina la dirección de transferencia. Verifique nuevamente la ruta de destino, ya que puede sobrescribir archivos remotos existentes. rsync puede ser más adecuado si desea reanudar transferencias grandes interrumpidas o sincronizar varios archivos de manera repetida.

Opciones y formatos principales

Opción o formato Descripción
-r Copia directorios de manera recursiva.
-P puerto Especifica el puerto del servidor SSH. A diferencia de -p de ssh, es en mayúscula.
-i archivo_de_clave Especifica la clave privada a utilizar para la autenticación.
-p Conserva la hora de modificación y los permisos del archivo en la medida de lo posible.
-O Selecciona el protocolo SCP heredado cuando sea imprescindible por compatibilidad.

Precauciones al usar

Si el archivo de destino existe, se puede sobrescribir, así que verifique la ruta y la cuenta, y haga una copia de seguridad de los archivos importantes primero. El protocolo antiguo -O tiene riesgos de interpretación de shells remotas y de seguridad, por lo que generalmente no se usa. scp no es una herramienta para comparar solo archivos modificados o sincronizar el estado de eliminación. Para esas tareas, rsync puede ser adecuado.

Preguntas frecuentes

¿La opción de puerto en scp es -p?

No. El puerto del servidor es -P mayúscula. -p minúscula es la opción para preservar la hora y los permisos de los archivos.

Documentación oficial

Se puede verificar el comportamiento exacto de las opciones y las diferencias según la implementación en la documentación oficial de scp.