2012-07-21 25 views
9

C'è un modo per scp tutti i file in una directory ricorsivamente ad una macchina remota e mantenere i loro nomi dei file originali, ma non copiare la directory è in?ricorsivamente SCP tranne directory corrente

dir1/file 
dir1/dir2/file2 

quindi il contenuto di dir1 verrà copiato solo. dir1 non verrebbe creato. Tuttavia, la directory dir2 verrà creata con file2 all'interno.

Ho provato scp -r dir1 remote:/newfolder ma crea nella directory /newfolder su remote. Non voglio che crei la directory dir1. Basta inserire tutti i file all'interno di dir1 in newfolder.

risposta

19
cd dir1 
scp -r . remote:/newfolder 

questo evita dando scp la possibilità di fare qualsiasi cosa con il nome dir1 sulla macchina remota. Si potrebbe anche preferire:

(cd dir1; scp -r . remote:/newfolder) 

Questo lascia la shell nella sua directory originale, mentre si lavora lo stesso (perché lancia un sub-shell che fa le operazioni cd e scp).

8

Ciò significa copiare l'elenco dei file da parte l'espansione della shell dir1/* al telecomando postazione remota:/newfolder

scp -r dir1/* remote:/newfolder 
+0

Mi piace questa risposta perché evita di dover fare un 'cd'. Se la tua prossima affermazione dopo 'scp' si aspetta che tu sia nella tua directory originale, allora dovresti fare ancora un altro passo per tornare a 'cd'. – jreancsu

1

È possibile utilizzare la sintassi del punto con il percorso relativo.

scp -r dir1/. remote:/newfolder 

Se la directory remota non esiste viene creata.

Problemi correlati