Respuestas:
Sí, usa -r:
scp -rp sourcedirectory user@dest:/path
Nota: Esto crea el sourcedirectoryinterior, por /pathlo que los archivos estarán en/path/sourcedirectory
-pr(las opciones en orden inverso) no copiarán las carpetas, sino más bien su contenido en el directorio de destino (aparentemente, el orden de las opciones es importante).
Si bien las respuestas anteriores son técnicamente correctas, también debe considerar rsyncusarlas. rsynccompara los datos en los lados de envío y recepción con un mecanismo de diferencia para que no tenga que reenviar datos que ya se enviaron anteriormente.
Si va a copiar algo en una máquina remota más de una vez, úselo rsync. En realidad, es bueno usarlo rsynctodo el tiempo 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 scpy copiar todo cada vez.
Además, le rsyncpermite recuperarse de transferencias interrumpidas muy fácilmente, a diferencia scp.
Finalmente, las versiones modernas de rsyncpor defecto se ejecutan sobre ssh, por lo que si scpya está funcionando, rsyncdebería ser un reemplazo directo.
rsynces más eficiente. Una cosa que no hace actualmente scpes permitir la copia entre hosts remotos (al menos sin ejecutar el cliente rsync en uno de ellos).
-av: v es para verbose, a para archive y es un acceso directo a -rlptgoD que implica recursivo, preservar las fechas y enlaces del propietario de los derechos. Si solo desea un uso recursivo-r
Para eso es la -ropción. :)
Consulte la página de manual de scp para obtener más información si es necesario.
Opción de copia recursiva '-r' (minúscula)
scp -r
Lo que confundo con la opción de copia recursiva local regular '-R' (mayúscula)
cp -R
La mejor manera es usar rsync sobre SSH
rsync -a -essh /source/ user@dest-server:/dest/
rsync -a -essh user@source-server:/source/ /dest/
Mis opciones favoritas son -Pazvessh --delete:
rsyncque he usado se usarían sshpor defecto, por lo que -esshes poco probable que sean necesarias. Y la elección del comando utilizado para conectarse al host remoto realmente no tiene relación con la copia recursiva.
Después de buscar el indicador de copia recursiva y utilizarlo con éxito gracias a esta publicación, me gustaría publicar solo una sugerencia.
Si el caso es que está copiando (recursivamente) un directorio. Tal vez si los archivos se envían comprimidos, podría ahorrar tiempo en la transferencia
Lo que hice al final fue:
local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz
Espero que esto ayude
.tar.gzo .tgzya que el archivo es un archivo tar comprimido con gzip (ya -zque se usa la bandera).
Puede copiar recursivamente un directorio en un archivo comprimido con este simple comando:
ssh -p 22 user@address-to-copy-from.com 'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz
Por ejemplo, para copiar el contenido de /var/logpartir domain.coma ~/logs.tgzejecutar:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' > ~/logs.tgz
También puede extraer archivos en el sistema de destino mediante el uso de tuberías. Este comando copiar el contenido de /var/logpor lo domain.comque ~/destination/logen su sistema:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' | tar xzf - -C ~/destination
Aunque para reflejar un directorio, probablemente deberías usar rsync...
Si prefiere pasar la contraseña del usuario como parámetro en lugar de ingresarla de forma interactiva, puede usar sshpass( sudo apt-get install -y sshpass).
Ejemplo:
sshpass -p 'remote_password' scp -rp /src/folder myremoteusername@122.10.12.123:/dest/folder
Puede usar la opción -r con el comando scp para copiar directorios de forma recursiva en cualquier sistema. Si necesita algo más, consulte el tutorial del comando scp . La opción -r significa operación recursiva en la mayoría de los comandos de Linux.
-ropción ya se sugirió hace años y es la respuesta aceptada.
Otra opción (probablemente mejor para uso repetido) es usar NFS: consulte nfs-kernel-server y cómo configurar los recursos compartidos de NFS.
scppero NFS no es una opción.