Posso scp una cartella che ha sottocartelle?


31

Ho una cartella che contiene file per un sito Web statico come:

/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...

Se aggiorno qualcosa sul mio laptop, voglio un singolo comando per inviare i file al mio server Ubuntu. Non voglio configurarlo su FTP se non ce l'ho, chiedendomi se scp sarebbe in grado di gestirlo?


Risposte:


56

Il comando scp -r source user@target:destpercorrerà tutte le sottodirectory di origine e le copierà.

Tuttavia, scpsi comporta come cpe copia sempre i file, anche se è lo stesso su sorgente e destinazione. [Vedi qui per una soluzione alternativa.]

Dato che si tratta di un sito Web statico, molto probabilmente stai solo effettuando aggiornamenti, non ricreando il tutto, quindi probabilmente troverai che le cose si muovono più velocemente se usi rsyncsu ssh invece di scp. Probabilmente qualcosa del genere

rsync -av -e ssh source user@target:dest

...per iniziare. Se lo stai facendo su una LAN, utilizzerei personalmente le opzioni -avWper rsync.

Rsync ti dà anche la possibilità di duplicare le eliminazioni nella tua fonte; quindi se rimuovi un file dal tuo albero, puoi eseguire rsynccome sopra e includere il flag --deletee rimuoverà lo stesso file dal lato di destinazione.


9

scp ha un flag ricorsivo che farà quello che vuoi. scp -r /base/directory user@server:/to/location

a partire dal man scp

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

2

scp -r e rsync -r sono i modi più affidabili per ottenere ciò che vuoi, come altri hanno notato.

Puoi anche usare sshfs per "montarlo" come se fosse un disco locale: sshfs user@host:/site /mnt/mountpoint

(Tuttavia probabilmente stai meglio lavorando localmente e distribuendo con rsync. Solo un altro strumento di cui essere a conoscenza.)

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.