Come copiare tutti i file da una directory a una directory remota usando scp?


68

Il mio obiettivo è copiare solo tutti i file da ~ / local_dir a user@host.com / var / www / html / target_dir usando scp e non creare la categoria local_dir in local_dir.

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

ma no

/var/www/html/target_dir/local_dir/files.. quando si utilizza il parametro -r


1
Non scp * user@host.com:/var/www/html/target_dirfa quello che vuoi? In tal caso, modifica con maggiori dettagli di ciò che stai cercando di fare e che hai provato finora.
Michael Homer,

Aggiunta /. non è più lavoro. Altro qui
Tsulatsi Tamim

Risposte:


91

scp ha l'argomento -r. Quindi, prova a usare:

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

L'argomento -r funziona esattamente come -r arg in cp, trasferirà l'intera cartella e tutti i file e le sottodirectory all'interno.


5
Il tuo comando ha creato la local_dirdirectory in / var / www / html / target_dir il mio obiettivo è copiare solo i file.
Edgaras Karka,

Scusa, ho sbagliato. Quindi basta ripetere il comando, ma in questo modo: $ scp -r ~/local_dir user@host.com:/var/www/html/Quindi rinominare la nuova directory, se necessario.
parazyd,

8
O $ scp -r ~/local_dir/* user@host.com:/var/www/html/target_dirqualunque cosa faccia galleggiare la tua barca.
parazyd,

Come escludere determinate directory da locale durante la copia su remoto
Sushivam,

13
Cambia il carattere jolly *in un punto .e copierai il contenuto della directory (inclusi eventuali file di punti) senza copiare la directory stessa. scp -pr ~/local_dir/. user@example.com:/path/to/target_dir
roaima,

19

Se il vostro obiettivo è quello di trasferire tutti i file local_dirdel *jolly fa il trucco:

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

L' -ropzione significa "ricorsivamente", quindi è necessario scriverla quando si tenta di trasferire un'intera directory o più directory.

Da man scp:

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

Quindi, se hai sottodirectory all'interno local_dir, l'ultimo esempio trasferirà solo i file, ma se imposti l' -ropzione trasferirà file e directory.


1+ Perché è necessario leggere i commenti nella risposta accettata per ottenere la risposta corretta, mentre questo spiega semplicemente direttamente.
André Christoffer Andersen,

17

L'aggiunta /.alla directory di origine trasferirà i suoi contenuti anziché la directory stessa. A differenza della soluzione jolly, questo includerà anche tutti i file nascosti.

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

Il merito di questa soluzione va a roaima, ma ho pensato che dovesse essere pubblicato come una risposta effettiva, non solo come un commento.


0

Segui questi passi:

  1. Copia la directory local_dircon tutte le sue sottodirectory:

    scp -r ~/local_dir user@host.com /var/www/html/target_dir
    
  2. copia solo il contenuto local_dire non la directory local_dirstessa:

    scp -r ~/local_dir/* user@host.com /var/www/html/target_dir
    
  3. Non utilizzare: scp -r ~/local_dir/. user@host.com /var/www/html/target_dirpoiché genera un errore (appena testato e ricevuto il seguente errore):

    scp: error: unexpected filename: .
    
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.