Solución 1:
Sí, usa -r
:
scp -rp sourcedirectory [email protected]:/path
- -r significa recursivo
- -p conserva las horas de modificación, las horas de acceso y los modos del archivo original.
Nota:Esto crea el sourcedirectory
dentro de /path
así los archivos estarán en /path/sourcedirectory
Solución 2:
Si bien las respuestas anteriores son técnicamente correctas, también debería considerar usar rsync
en cambio. rsync
compara los datos en los lados de envío y recepción con un mecanismo de diferencias para que no tenga que volver a enviar los datos que ya se enviaron previamente.
Si va a copiar algo a una máquina remota más de una vez, use rsync
. En realidad, es bueno usar rsync
cada vez porque tiene más controles para cosas como copiar permisos y propiedad de archivos y excluir ciertos archivos o directorios. En general:
$ rsync -av /local/dir/ server:/remote/dir/
sincronizará un directorio local con un directorio remoto. Si lo ejecuta por segunda vez y el contenido del directorio local no ha cambiado, no se transferirán datos, mucho más eficiente que ejecutar scp
y copiando todo cada vez.
Además, rsync
le permite recuperarse de transferencias interrumpidas muy fácilmente, a diferencia de scp
.
Finalmente, versiones modernas de rsync
de forma predeterminada se ejecuta sobre ssh, por lo que si scp
ya está funcionando, rsync
debería ser prácticamente un reemplazo directo.
Solución 3:
Eso es lo que dice el -r
la opción es para. :)
Consulte la página de manual de scp para obtener más información si es necesario.
Solución 4:
Opción de copia recursiva '-r' (minúsculas)
scp -r
Que confundo con la opción de copia recursiva local regular '-R' (mayúsculas)
cp -R
Solución 5:
La mejor manera es usar rsync sobre SSH
rsync -a -essh /source/ [email protected]:/dest/
rsync -a -essh [email protected]:/source/ /dest/
Mis opciones favoritas son -Pazvessh --delete :
- -a :modo de archivo (incluye muchas opciones comunes predeterminadas, incluida la conservación de enlaces simbólicos)
- -z :comprimir
- -v :detallado :mostrar archivos
- -P:muestra el progreso como archivos terminados/archivos restantes
- -e ssh:hacer rsync en el protocolo ssh
- --delete:elimina archivos en el destino que ya no están en el origen