Przerywając rsync za pomocą ctrl-c, czy powinienem używać `--partial` czy` --append`?

14

Chciałbym przerwać rsyncz ctrl-c(powiedzmy po pół plik przeniesiony) i wznowić bez konieczności ponownego wysyłania danych, które już zostały przeniesione.

Informacje o stosie wymiany / google, które znalazłem, wydają się być sprzeczne. Znalazłem niektórych, którzy mówią użytek, --partiala niektórzy mówią użytek --append. Dla mnie brzmi to tak, jakby obie działały.

Jeśli chcę przerwać rsync za pomocą ctrl-c, czy powinienem użyć --partiallub --append?

Jeśli oba działałyby, kiedy lepiej używać jednego kontra drugiego?

Trevor Boyd Smith
źródło

Odpowiedzi:

8

Do ponownego uruchomienia --partialwystarczy. Użyj, --inplacejeśli naprawdę nie chcesz rsyncutworzyć pliku tymczasowego, który scali istniejące skopiowane dane z nowym, na przykład, jeśli rsyncwystąpią problemy z uprawnieniami do utworzenia pliku tymczasowego w folderze docelowym.

Używaj tylko --appendwtedy, gdy możesz zagwarantować, że częściowo skopiowane dane są nadal identyczne ze źródłem. (Ogólnie jest to fałszywa optymalizacja).

roaima
źródło
1
więc kiedy używam powyższych opcji (faktycznie używam --append-Verify) i rsync nadal twierdzi, że zaczyna się od początku, i nie widzę żadnych zmian w rozmiarze pliku, a pozostały czas pliku jest taki, jak pierwotnie kiedy zaczynałem kopiowanie, czy rsync kłamie, czy powinienem się martwić?
Michael
@ Michael, jeśli masz lokalne źródło i miejsce docelowe, wszystkie reguły się zmieniają.
roaima
Robiłem to przez sieć LAN, ale po nieco więcej eksperymentach wydaje się, że problem polega na tym, że ponieważ --append-verifyfaktycznie muszę odczytać części pliku po obu stronach, które tam są, t nie jest szybszy z powodu wąskiego gardła jest to starszy dysk po stronie odczytu, a nie sama sieć LAN.
Michael
@ Michael cóż, tak, jeśli poprosiłeś o weryfikację danych już przesłanych, to musi je odczytać!
roaima
1
@alper Nigdy wcześniej nie zauważyłem tej opcji. Wygląda na to, że najlepiej byłoby go użyć --partial-dir, ale jeszcze go nie wypróbowałem.
roaima
3
  • --append zakłada, że ​​plik może już istnieć w miejscu docelowym, po prostu sprawia, że ​​rsync nie sprawdza zawartości już tam (ale patrz poniżej).
  • --partial informuje rsync, aby nie usuwał częściowo przesłanych plików.

Będziesz także potrzebować --inplacez --partial(jest to sugerowane --append).

Okazuje się, --inplaceże implikuje --partial, dlatego --appendwystarczy (implikuje to, --inplaceco implikuje --partial). Ale --partialsam nie wystarczy, w --inplaceprzeciwnym razie rsync tworzy pliki tymczasowe zamiast aktualizować ostatni.

spuk
źródło
Jeśli chcę przerwać rsync za pomocą ctrl-c, użyłbym --append? Ponieważ --partialsam w sobie nie wznowiłby.
Trevor Boyd Smith
Użyłbym tylko --inplace. rsync „zawsze wznawia” (próbuje przesłać minimalne potrzebne dane). Co --appendrobi jest rsync aby nie suma kontrolna danych już w miejscu docelowym, więc jeśli plik częściowy w miejscu przeznaczenia został uszkodzony, to pozostanie z uszkodzony --append. --appendmoże być interesujące, jeśli powiedzmy, że plik częściowy jest bardzo duży i nie możesz się doczekać (i jest pewien lub nie obchodzi go, czy jest uszkodzony), lub w innej konkretnej sytuacji.
spuk
1
na Fedorze 20 man rsyncopcja --appendmówi... Implies --inplace
Trevor Boyd Smith
1
--inplacebędzie działać. --appendzadziała, ponieważ (jak powiedziałem w odpowiedzi) sugeruje to --inplace, co implikuje --partial(które zachowa częściowo przesłane pliki, gdy zostanie przerwane przez Ctrl-c, co było pierwotnym pytaniem). Więc --appendoznacza „zrobić tak --inplace, ale nie sumy kontrolnej, co już w miejscu przeznaczenia Jest to istotna różnica Jeśli nie dbam o to, czy wykorzystanie...
Spuk
1
więc jaki jest sens --partial BEZ --inplace
Evan Carroll