Riprendi il trasferimento scp ricorsivo (con rsync?)


14

Stavo trasferendo diverse migliaia di file ogni ~ 1 MB tramite scp e la mia connessione è stata interrotta dopo i primi 2k file o giù di lì. Volevo sapere se c'era un modo per riprendere il trasferimento ricorsivo senza ricominciare. Qualcosa di simile a

$ scp -r me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/datafiles/ ./
... Continue transf...

Il problema è che non riesco a ottenere la sintassi corretta se è possibile. Qualcuno può far luce su se / come può essere fatto?

PS. Se si specifica la barra dopo "datafile" nella riga rsync, viene trasferita la directory o il suo contenuto? Ho visto commenti contrastanti quando ho cercato su Google.

Risposte:


10

se stai eseguendo il rsync da una macchina locale a un host remoto, questo funzionerebbe:

rsync -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

Grazie. Non pensavo che questo funzionasse perché avrebbe iniziato a elencare tutti i miei file, ma non mi ero reso conto che stava mostrando il "trasferimento file", il che significa semplicemente che il file era aggiornato. A destra il mio trasferimento è stato interrotto con trasferimenti reali (più lenti).
physicsmichael

Hmm, per me ssh -i akey.pem è richiesto e non riesco a ottenere il -i parte per lavorare con questi comandi.
isomorphismes

2
Se stai tentando di riprendere un file di grandi dimensioni, queste opzioni potrebbero essere utili: --partial --inplace --no-whole-file.
Rafael Xavier

@kibitzer: una volta che ti ha mostrato il file (sul server remoto), come hai riavviato il trasferimento? Il mio solo costruire il file di elenco e mi mostra il file e quanto è stato caricato. Ma semplicemente si blocca senza alcuna opzione per continuare o progredire l'output. Il trasferimento è iniziato di nuovo o devo fare qualcosa per avviarlo?
masterninja01

3
-l non è necessario. È implicito da -a
Guido

11

La seguente linea dovrebbe fare il trucco per questo:

rsync --partial --progress --rsh = ssh -r me@host.com: / datafiles / ./

Non l'ho mai usato prima per le directory ricorsive, ma quando l'ho scritto adesso sembra che funzioni come previsto.


Funziona anche, purché includi -r =)
physicsmichael

La maggior parte dei miei trasferimenti rsync sono di tipo "rsync -ahP qualcosa / utente @ host: / da qualche parte /". Il --rsh = ssh è completamente inutile. Quindi, anche -P trascina in --partial e --progress.
killermist

1

Il comando rsync che hai elencato funzionerebbe, se avessi aggiunto solo "-r". ma probabilmente vorrai anche "-a" e "-v".

E sulla barra finale, me@site.com: / data / equivale a / data / *, in altre parole, se aggiungi una barra, copia tutto il contenuto. ma me@site.com: / data sarebbe la directory stessa [e naturalmente, le sue sottocartelle]


1

L'unione delle risposte di kibitzer e Tyler ha funzionato meglio per me:

rsync --partial --progress -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

(rsincronizzazione ricorsiva e visualizzazione dello stato di avanzamento di ciascun file)

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.