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 me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/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.

Odpowiedzi:


10

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

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

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 me@host.com: / 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.


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, me@site.com: / data / jest równoważne z / data / *, innymi słowy, jeśli dodasz ukośnik, kopiuje on całą zawartość. ale me@site.com: / data to sam katalog [i oczywiście jego podfoldery]


1

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

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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.