¿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 [email protected] / 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

Edgaras Karka
fuente
1
¿ scp * [email protected]:/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 [email protected]:/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.

parazid
fuente
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 [email protected]:/var/www/html/luego cambie el nombre del nuevo directorio si es necesario.
parazyd
8
O lo que $ scp -r ~/local_dir/* [email protected]:/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/. [email protected]:/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/* [email protected]:/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.

tachomi
fuente
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/. [email protected]:/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.

raphinesse
fuente
0

Sigue estos pasos:

  1. Copie el directorio local_dircon todos sus subdirectorios:

    scp -r ~/local_dir [email protected] /var/www/html/target_dir
    
  2. copie solo el contenido local_diry no el directorio en local_dirsí:

    scp -r ~/local_dir/* [email protected] /var/www/html/target_dir
    
  3. No utilice: scp -r ~/local_dir/. [email protected] /var/www/html/target_dirya que arroja un error (acaba de probar y recibió el siguiente error):

    scp: error: unexpected filename: .
    
Syed Faraz Umar
fuente