Risposte:
Sì, usa -r:
scp -rp sourcedirectory user@dest:/path
Nota: questo crea l' sourcedirectoryinterno, /pathquindi i file saranno in/path/sourcedirectory
-pr(le opzioni in ordine inverso) non copieranno le cartelle, ma piuttosto il loro contenuto nella directory di destinazione (apparentemente, l'ordine delle opzioni è importante).
Mentre le risposte precedenti sono tecnicamente corrette, dovresti anche considerare di utilizzare rsyncinvece. rsyncconfronta i dati sui lati di invio e ricezione con un meccanismo diff in modo da non dover inviare nuovamente i dati già inviati in precedenza.
Se hai intenzione di copiare qualcosa su una macchina remota più di una volta, usa rsync. In realtà, è buono da usare rsyncogni volta perché ha più controlli per cose come copiare le autorizzazioni 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 dell'esecuzione scpe della copia di tutto ogni volta.
Inoltre, rsyncti consente di recuperare molto facilmente da trasferimenti interrotti, a differenza scp.
Infine, le versioni moderne di rsyncdefault funzionano su ssh, quindi se scpfunziona già, rsyncdovrebbe essere praticamente una sostituzione drop-in.
rsyncè più efficiente. Una cosa che attualmente non scpfa è consentire la copia tra host remoti (almeno senza eseguire il client rsync su uno di essi).
-av: v è per verbose, a per archivio ed è una scorciatoia per -rlptgoD che implica collegamenti ricorsivi, preservare date e collegamenti del proprietario dei diritti. Se vuoi solo un uso ricorsivo-r
Ecco a cosa serve l' -ropzione. :)
Vedi la pagina man di scp per maggiori informazioni se necessario.
Opzione di copia ricorsiva '-r' (lettere minuscole)
scp -r
Che confondo con la normale opzione di copia ricorsiva locale '-R' (lettere maiuscole)
cp -R
Il modo migliore è usare rsync su SSH
rsync -a -essh /source/ user@dest-server:/dest/
rsync -a -essh user@source-server:/source/ /dest/
Le mie opzioni preferite sono -Pazvessh --delete:
rsyncche ho usato userebbero sshdi default, quindi -esshè improbabile che siano necessarie. E la scelta del comando utilizzato per connettersi all'host remoto non è in alcun modo correlata alla copia ricorsiva.
Dopo aver cercato il flag di copia ricorsiva e averlo utilizzato con successo grazie a questo post, vorrei pubblicare solo un suggerimento.
Se il caso è che stai copiando (ricorsivamente) una directory. Forse se i file vengono inviati compressi potresti risparmiare tempo nel trasferimento
Quello che ho fatto alla fine è stato:
local$ tar -czvf local.tar.gz directory/
local$ scp local.tar.gz user@remote:/directory
ssh user@remote
remote$ tar -xzvf local.tar.gz
Spero che sia di aiuto
.tar.gzo .tgzpoiché il file è un archivio tar con gzip (poiché -zviene utilizzato il flag).
Puoi ricorsivamente copiare una directory in un archivio compresso con questo semplice comando:
ssh -p 22 user@address-to-copy-from.com 'cd /parent/directory && tar zcvf - directory_to_copy' > /destination/on/your/machine/archive_name.tgz
Ad esempio, per copiare il contenuto di /var/logda domain.coma ~/logs.tgzsi esegue:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' > ~/logs.tgz
È inoltre possibile estrarre i file sul sistema di destinazione utilizzando le pipe. Questo comando copiare il contenuto di /var/loga domain.comper ~/destination/logil vostro sistema:
ssh -p 22 user@domain.com 'cd /var && tar zcvf - log' | tar xzf - -C ~/destination
Anche se per eseguire il mirroring di una directory, probabilmente dovresti usare rsync...
Se si preferisce passare la password dell'utente come parametro anziché immetterla in modo interattivo, è possibile utilizzare sshpass( sudo apt-get install -y sshpass).
Esempio:
sshpass -p 'remote_password' scp -rp /src/folder myremoteusername@122.10.12.123:/dest/folder
Puoi usare l'opzione -r con il comando scp per copiare ricorsivamente directory su qualsiasi sistema. Se hai bisogno di qualcos'altro, fai riferimento al tutorial sul comando scp . -r opzione sta per operazione ricorsiva nella maggior parte dei comandi di Linux.
-ropzione è già stata suggerita anni fa ed è la risposta accettata.
Un'altra opzione (probabilmente migliore per un uso ripetuto) è l'uso di NFS: controlla nfs-kernel-server e come impostare le condivisioni NFS.
scpuseresti ma NFS non è un'opzione.