Copia dei file utilizzando rsync dal server remoto al computer locale


319

Una volta che ho inviato il mio server remoto, quale sarebbe il comando per copiare tutti i file da una directory a una directory locale sulla mia macchina?


4
Perché puoi rsyncdirettamente dal tuo computer locale.
Johnsyweb,

2
Oh ... sì, posso. Vedo le altre risposte ora. Grazie.
Markswie,

17
Questo è un compito comune per lo sviluppo (web) con una buona risposta. Non vedo perché sia ​​ancora chiuso.
d.raev,

6
Penso che @d.raev si riferisse al fatto che la domanda era chiusa come fuori tema (se ricordo bene ho segnalato che questa domanda doveva essere migrata su SuperUser, dove penso che si adattasse meglio) piuttosto che non ci fosse una risposta accettata . Comunque ... è stato bello avere la mia risposta accettata dopo tutto questo tempo. :-)
Johnsyweb il

3
@markstewie niente brutti sentimenti, è una buona domanda e mi ha aiutato (sembra anche molti altri) ma questo "chiuso" lo fa sembrare non degno di fiducia, quindi ho voluto portare qualche attenzione su di esso.
d.raev,

Risposte:


575

Dal tuo computer locale:

rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage

Dal tuo computer locale con una porta ssh non standard:

rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path

O dall'host remoto, supponendo che tu voglia davvero lavorare in questo modo e il tuo computer locale stia ascoltando su SSH:

rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage

Vedi man rsyncuna spiegazione dei miei soliti interruttori.


255
Una spiegazione del comando: explainshell.com/...
beefsack

118
Caspita che il sito esplicativo è fantastico.
gosukiwi,

2
@cmcdragonkai: in effetti, l'host locale deve eseguire un server SSH ed essere accessibile all'host remoto. Questo è uno dei motivi per cui preferisco la prima soluzione alla seconda.
Johnsyweb,

16
Fai attenzione quando esegui la risincronizzazione con barre finali. Il comando dato da Johnnysweb avrebbe creato una directory chiamata copia all'interno /path/to/local/storage. In questo modo /path/to/local/storage/copy. Se è quello che vuoi alla grande. Tuttavia, uno scenario più comune è che si desidera copiare il contenuto della directory remota in una directory nel proprio locale. Quindi faresti /path/to/copy/che collocherebbe il contenuto all'interno della directory /path/to/local/storagesenza creare una directory di copia locale.
cap.

16
Sono venuto qui per un comando rsync e sono venuto via con spiegahell.com . Grazie @beefsack!
Cifase

49

Se si dispone dell'accesso SSH, non è necessario prima SSH e quindi copiare, basta utilizzare la copia protetta (SCP) dalla destinazione.

scp user@host:/path/file /localpath/file

Sono supportati i caratteri jolly, quindi

scp user@host:/path/folder/* /localpath/folder

copierà tutti i file remoti in quella cartella. Se copi più di una directory.

note -r copierà anche tutte le sottocartelle e i contenuti.


6
Perché usare scppiuttosto che rsync? Inoltre, osserva che la tua shell non tenta di espandersi user@host:/path/folder/*, forse usando virgolette singole ( ').
Johnsyweb,

Trovo scp più facile da usare dalla destinazione .... Essenzialmente si tratta di copiare file su ssh, ma senza dover prima stabilire la connessione ssh.
Tezyn,

8
So cos'è scp, non era la mia domanda. Perché non hai usato rsync? Questo è ciò che fa la domanda, non richiede una sessione SSH consolidata ed è spesso più veloce ed efficiente di scp.
Johnsyweb,

26
Ricorda, scp segue i symlink invece di copiarli. Ciò può comportare la copia di più di quanto ci si aspetti e la perdita di collegamenti simbolici (diventano normali cartelle / file).
Mondane,

2
La risposta di Mondane è proprio il motivo per cui ho trovato questo post. Normalmente, utilizzo scp per tutto, ma avevo bisogno di conservare le autorizzazioni e il collegamento simbolico da server a server. Inoltre, la differenza di velocità (bc il mio io da principiante sicuramente scappato per prima) era enorme.
kyle,
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.