Cómo copiar directorios de forma recursiva con scp

Contenidos

Bash Shell

Un obstáculo común cuando se trabaja con archivos es la aplicación de operaciones de forma recursiva o en todos los subdirectorios de la carpeta completa. los scp La utilidad se utiliza para transferir archivos y directorios a servidores remotos y admite operaciones recursivas.

Ejecutar scp de forma recursiva

Aunque a veces es más rápido realizar grandes transferencias en un solo archivo conocido como tarball, la mayoría de las veces no importa la sobrecarga de transferir archivos individuales.

Copiar recursivamente con scp es fácil: simplemente use el -r flag al mismo tiempo de cualquier otra cosa que hayas agregado:

scp -r localpath user@remote:/remotepath

Tenga en cuenta que esto está explícitamente en minúsculas -r, a diferencia de muchos otros comandos que usan o requieren -R.

Esto actuará como arrastrar y soltar en /remotepath/, copiando el contenido de localpath/ al control remoto y colocándolos en /remotepath/localpath/.

Si, en cambio, desea sincronizar localpath/ y /remotepath/, tendrá que transferir la carpeta a la carpeta principal de /remotepath/, el destino. Para este caso, eso sería /, el directorio raíz.

Esto además seguirá links simbólicos en la ruta local al solucionar archivos, pero no necesariamente creará esos mismos links en el servidor remoto. A modo de ejemplo, copiar un archivo nuevo desde y hacia /etc/nginx/sites-enabled no lo colocará automáticamente en /etc/nginx/sites-available en el control remoto.

Usando rsync en su lugar

Linux tiene varias herramientas para manejar este trabajo, y una de las mejores es rsync, que hace todo scp puede hacer, pero tiene muchas más opciones y es mucho más rápido de arrancar. Tampoco copia archivos que no han sido modificados, lo que lo convierte en una gran herramienta para «sincronizar» continuamente dos directorios entre sí sin volver a transferir datos innecesariamente.

rsync funciona simplemente igual que scp, con algunas opciones más incluidas para especificar la configuración:

rsync -a -essh localpath/ user@remote:/remotepath/

los -a bandera especifica modo de archivo, que activa muchas opciones de uso común al mismo tiempo. los -e ssh bandera configura rsync para transferir a través de SSH.

RELACIONADO: Cómo utilizar rsync para hacer una copia de seguridad de sus datos en Linux

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.