Respuestas:
Sí, usa -r
:
scp -rp sourcedirectory user@dest:/path
Nota: Esto crea el sourcedirectory
interior, por /path
lo 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 rsync
usarlas. rsync
compara 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 rsync
todo 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 scp
y copiar todo cada vez.
Además, le rsync
permite recuperarse de transferencias interrumpidas muy fácilmente, a diferencia scp
.
Finalmente, las versiones modernas de rsync
por defecto se ejecutan sobre ssh, por lo que si scp
ya está funcionando, rsync
debería ser un reemplazo directo.
rsync
es más eficiente. Una cosa que no hace actualmente scp
es 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 -r
opció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:
rsync
que he usado se usarían ssh
por defecto, por lo que -essh
es 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.gz
o .tgz
ya que el archivo es un archivo tar comprimido con gzip (ya -z
que 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/log
partir domain.com
a ~/logs.tgz
ejecutar:
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/log
por lo domain.com
que ~/destination/log
en 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.
-r
opció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.
scp
pero NFS no es una opción.