Wznowienie rekurencyjnego transferu scp (z rsync?)

14

Przesyłałem kilka tysięcy plików ~ 1 MB przez scp, a moje połączenie zostało zerwane po pierwszych 2k plików. Chciałem wiedzieć, czy istnieje sposób na wznowienie transferu rekurencyjnego bez rozpoczynania od nowa. Coś jak

$ scp -r [email protected]:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P [email protected]:/datafiles/ ./
... Continue transf...

Problem polega na tym, że nie wydaje się, aby poprawna składnia była możliwa, jeśli jest to możliwe. Czy ktoś może rzucić nieco światła na to, czy / jak można to zrobić?

PS. Jeśli określisz ukośnik po „plikach danych” w wierszu rsync, czy spowoduje to przeniesienie katalogu lub jego zawartości? Kiedy googlowałem, widziałem sprzeczne komentarze.

physicsmichael
źródło

Odpowiedzi:

10

jeśli rsynchronizujesz z komputera lokalnego na zdalnym hoście, działałoby to:

rsync -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/
kibitzer
źródło
Dzięki. Nie sądziłem, że to zadziała, ponieważ zacznie wyświetlać listę wszystkich moich plików, ale nie zdawałem sobie sprawy, że wyświetla „transfer plików”, co oznacza po prostu zauważenie, że plik jest aktualny. Racja, mój transfer został pominięty z prawdziwymi (wolniejszymi) transferami.
physicsmichael
Hmm, dla mnie ssh -i akey.pemjest wymagany i nie mogę zmusić -iczęści do pracy z tymi poleceniami.
izomorfizmy
2
Jeśli próbujesz wznowić dużego pliku, ta opcja może być przydatna: --partial --inplace --no-whole-file.
Rafael Xavier
@kibitzer - kiedy pokazał ci plik (na zdalnym serwerze), jak zacząłeś ponownie transfer? Mój po prostu zbuduj plik listy i pokaże mi plik oraz ile zostało przesłane. Ale po prostu zawiesza się bez opcji kontynuowania lub postępu wyświetlania. Czy transfer zaczął się od nowa, czy muszę coś zrobić, aby go rozpocząć?
masterninja01
3
-lto nie jest konieczne. Sugeruje to:-a
Guido
11

Poniższy wiersz powinien załatwić sprawę:

rsync --partial --progress --rsh = ssh -r [email protected]: / datafiles / ./

Nigdy wcześniej nie korzystałem z tego w przypadku katalogów rekurencyjnych, ale kiedy właśnie to napisałem, wydawało się, że działa zgodnie z oczekiwaniami.

Tyler
źródło
1
Działa to również, o ile podasz -r =)
physicsmichael
Większość moich transferów rsync jest typu „rsync -ahP coś / użytkownik @ host: / gdzieś /”. --Rsh = ssh jest całkowicie niepotrzebny. Następnie również -P przeciąga do --partial i --progress.
killermist
1

Polecenie rsync, które wymieniłeś, działałoby, jeśli dodałeś tylko „-r”. ale najprawdopodobniej będziesz chciał również „-a” i „-v”.

A jeśli chodzi o końcowy ukośnik, [email protected]: / data / jest równoważne z / data / *, innymi słowy, jeśli dodasz ukośnik, kopiuje on całą zawartość. ale [email protected]: / data to sam katalog [i oczywiście jego podfoldery]

Matt
źródło
1

Połączenie odpowiedzi Kibitzera i Tylera działało dla mnie najlepiej:

rsync --partial --progress -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/

(rsynchronizuje rekurencyjnie i pokazuje postęp każdego pliku)

Tarc
źródło