Soluzione 1:
Sì, usa -r
:
scp -rp sourcedirectory [email protected]:/path
- -r significa ricorsivo
- -p conserva i tempi di modifica, i tempi di accesso e le modalità dal file originale.
Nota:questo crea il sourcedirectory
all'interno di /path
quindi i file saranno in /path/sourcedirectory
Soluzione 2:
Sebbene le risposte precedenti siano tecnicamente corrette, dovresti considerare anche l'utilizzo di rsync
invece. rsync
confronta i dati sui lati di invio e ricezione con un meccanismo diff in modo da non dover inviare nuovamente i dati che erano già stati inviati in precedenza.
Se hai intenzione di copiare qualcosa su una macchina remota più di una volta, usa rsync
. In realtà, è utile usare rsync
ogni volta perché ha più controlli per cose come copiare i permessi e la proprietà dei file ed escludere determinati file o directory. In generale:
$ rsync -av /local/dir/ server:/remote/dir/
sincronizzerà una directory locale con una directory remota. Se lo esegui una seconda volta e il contenuto della directory locale non è cambiato, nessun dato verrà trasferito - molto più efficiente che eseguire scp
e copiando tutto ogni volta.
Inoltre, rsync
ti consente di recuperare molto facilmente da trasferimenti interrotti, a differenza di scp
.
Infine, le versioni moderne di rsync
per impostazione predefinita viene eseguito su ssh, quindi se scp
sta già funzionando, rsync
dovrebbe praticamente essere un rimpiazzo immediato.
Soluzione 3:
Questo è ciò che il -r
l'opzione è per. :)
Consulta la pagina man di scp per maggiori informazioni, se necessario.
Soluzione 4:
Opzione di copia ricorsiva '-r' (minuscolo)
scp -r
Che confondo con la normale opzione di copia ricorsiva locale '-R' (maiuscolo)
cp -R
Soluzione 5:
Il modo migliore è usare rsync su SSH
rsync -a -essh /source/ [email protected]:/dest/
rsync -a -essh [email protected]:/source/ /dest/
Le mie opzioni preferite sono -Pazvessh --delete :
- -a :modalità archivio (include molte opzioni comuni predefinite, inclusa la conservazione dei collegamenti simbolici)
- -z :comprime
- -v :verbose :mostra i file
- -P :mostra l'avanzamento come file completati/file rimanenti
- -e ssh :esegue rsync nel protocollo ssh
- --delete :cancella i file nella destinazione che non sono più nella sorgente