Actualmente solo puedo copiar un solo .tar
archivo. Pero, ¿cómo puedo copiar directorios de forma recursiva scp
?
573
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 usarlorsync
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: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 diferenciascp
.Finalmente, las versiones modernas de
rsync
por defecto se ejecutan sobre ssh, por lo que siscp
ya está funcionando,rsync
debería ser un reemplazo directo.fuente
rsync
es más eficiente. Una cosa que no hace actualmentescp
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.
fuente
Opción de copia recursiva '-r' (minúscula)
Lo que confundo con la opción de copia recursiva local regular '-R' (mayúscula)
fuente
La mejor manera es usar rsync sobre SSH
Mis opciones favoritas son -Pazvessh --delete:
fuente
rsync
que he usado se usaríanssh
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:
Espero que esto ayude
fuente
.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:
Por ejemplo, para copiar el contenido de
/var/log
partirdomain.com
a~/logs.tgz
ejecutar: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 lodomain.com
que~/destination/log
en su sistema:Aunque para reflejar un directorio, probablemente deberías usar
rsync
...fuente
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:
fuente
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.
fuente
-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.
fuente
scp
pero NFS no es una opción.