¿Cómo copiar todos los archivos de un directorio a un directorio remoto usando scp?


68

Mi objetivo es copiar solo todos los archivos de ~ / local_dir a user@host.com / var / www / html / target_dir usando scp y no crear la categoría local_dir en local_dir.

/var/www/html/target_dir/files..

pero no

/var/www/html/target_dir/local_dir/files.. cuando use el parámetro -r


1
¿ scp * user@host.com:/var/www/html/target_dirNo hace lo que quieres? Si es así, edite con más detalle lo que está intentando hacer y lo ha intentado hasta ahora.
Michael Homer

Anexando /. Ya no es trabajo. Más aquí
Tsulatsi Tamim

Respuestas:


91

scp tiene el argumento -r. Entonces, intente usar:

$ scp -r ~/local_dir user@host.com:/var/www/html/target_dir

El argumento -r funciona igual que el argumento -r en cp, transferirá toda su carpeta y todos los archivos y subdirectorios dentro.


55
Su comando creó el local_dirdirectorio en / var / www / html / target_dir mi objetivo es copiar solo archivos.
Edgaras Karka

Lo siento, me equivoqué. Luego solo repita el comando, pero así: $ scp -r ~/local_dir user@host.com:/var/www/html/luego cambie el nombre del nuevo directorio si es necesario.
parazyd

8
O lo que $ scp -r ~/local_dir/* user@host.com:/var/www/html/target_dirsea ​​que flota tu bote.
parazyd

Cómo excluir ciertos directorios de local mientras se copia a remoto
Sushivam

13
Cambie el comodín *a un punto .y copiará el contenido del directorio (incluidos los archivos de puntos) sin copiar el directorio en sí. scp -pr ~/local_dir/. user@example.com:/path/to/target_dir
roaima

19

Si su objetivo es transferir todos los archivos desde local_direl *comodín hace el truco:

$ scp ~/local_dir/* user@host.com:/var/www/html/target_dir

La -ropción significa "recursivamente", por lo que debe escribirla cuando intente transferir un directorio completo o varios directorios.

De man scp:

-r 
Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal.

Entonces, si tiene subdirectorios dentro local_dir, el último ejemplo solo transferirá archivos, pero si configura la -ropción, transferirá archivos y directorios.


1+ Porque necesita leer los comentarios en la respuesta aceptada para obtener la respuesta correcta, mientras que esta solo lo explica directamente.
André Christoffer Andersen

17

Agregar /.al directorio de origen transferirá su contenido en lugar del directorio en sí. A diferencia de la solución comodín, esto también incluirá los archivos ocultos.

$ scp -r ~/local_dir/. user@host.com:/var/www/html/target_dir

El crédito por esta solución va para roaima, pero pensé que debería publicarse como una respuesta real, no solo como un comentario.


0

Sigue estos pasos:

  1. Copie el directorio local_dircon todos sus subdirectorios:

    scp -r ~/local_dir user@host.com /var/www/html/target_dir
    
  2. copie solo el contenido local_diry no el directorio en local_dirsí:

    scp -r ~/local_dir/* user@host.com /var/www/html/target_dir
    
  3. No utilice: scp -r ~/local_dir/. user@host.com /var/www/html/target_dirya que arroja un error (acaba de probar y recibió el siguiente error):

    scp: error: unexpected filename: .
    
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.