Wenn ich rsync mit Strg-C unterbreche, soll ich "--partial" oder "--append" verwenden?

14

Ich möchte unterbrechen rsyncmit ctrl-c(sagen wir mal nach der Hälfte - Datei übertragen) und wieder aufzunehmen , ohne die Daten erneut zu senden , die bereits übertragen wurde.

Die von mir gefundenen Stackexchange- / Google-Informationen scheinen in Konflikt zu stehen. Ich habe einige gefunden, die Gebrauch sagen, --partialund einige, die Gebrauch sagen --append. Für mich klingt es so, als würden beide funktionieren.

Wenn ich rsync mit Strg-C unterbrechen möchte, sollte ich --partialoder verwenden --append?

Wenn beides funktionieren würde, wann ist es besser, eins gegen das andere zu verwenden?

Trevor Boyd Smith
quelle

Antworten:

8

Ein Neustart --partialist ausreichend. Verwenden --inplaceSie diese Option, wenn Sie wirklich keine rsynctemporäre Datei erstellen möchten, in der die vorhandenen und die neuen kopierten Daten zusammengeführt werden, z. B. wenn rsyncbeim Erstellen einer temporären Datei im Zielordner Berechtigungsprobleme auftreten.

Nur verwenden, --appendwenn Sie garantieren können, dass die teilweise kopierten Daten noch mit der Quelle identisch sind. (Im Allgemeinen ist dies eine falsche Optimierung.)

Roaima
quelle
1
Wenn ich also die oben genannten Optionen verwende (und tatsächlich --append-verify verwende) und rsync immer noch behauptet, dass es von vorne anfängt , und ich sehe keine Änderung in der Dateigröße und der verbleibenden Dateizeit, wie sie ursprünglich war Wenn ich den Kopiervorgang gestartet habe, lügt rsync oder sollte ich mir Sorgen machen?
Michael
@Michael Wenn Sie eine lokale Quelle und ein lokales Ziel haben, ändern sich alle Regeln.
Roaima
Ich habe es über das LAN gemacht, aber nach ein bisschen mehr Experimentieren scheint es, dass das Problem ist, dass da --append-verifydie Teile der Datei, die auf beiden Seiten vorhanden sind, tatsächlich gelesen werden müssen, es aufgrund des Engpasses nicht schneller ist ein älteres Laufwerk auf der Leseseite und nicht das LAN selbst.
Michael
@Michael na ja, wenn du nach einer Überprüfung der bereits übertragenen Daten gefragt hast, muss sie die Daten lesen!
Roaima
1
@alper Ich habe diese Option noch nie bemerkt. Es sieht so aus, als wäre es am besten --partial-dir, aber ich habe es noch nicht ausprobiert.
Roaima
3
  • --append Nimmt man an, dass die Datei bereits im Ziel vorhanden ist, überprüft rsync den Inhalt nur nicht (siehe unten).
  • --partial Weist rsync an, teilweise übertragene Dateien nicht zu löschen.

Du brauchst auch --inplacemit --partial(es ist impliziert mit --append).

Es stellt sich heraus , dass dies --inplaceimpliziert --partial, weshalb --appendes ausreicht (impliziert, --inplacewas impliziert --partial). Aber --partialallein reicht nicht aus, Sie müssen --inplace, sonst erstellt rsync temporäre Dateien, anstatt die letzte zu aktualisieren.

spuk
quelle
Wenn ich rsync mit Strg-C unterbrechen möchte, würde ich verwenden --append? Denn --partialvon selbst würde nicht fortgesetzt.
Trevor Boyd Smith
Ich würde nur verwenden --inplace. rsync wird "immer fortgesetzt" (es versucht, die minimal benötigten Daten zu übertragen). Was --appendbedeutet, dass rsync die Daten, die sich bereits am Ziel befinden, nicht prüft. Wenn also die Teildatei am Ziel beschädigt wurde, bleibt sie mit beschädigt --append. --appendDies könnte interessant sein, wenn beispielsweise die Teildatei sehr groß ist und Sie nicht warten können (und es sich nicht darum kümmert, ob sie beschädigt ist) oder in einer anderen bestimmten Situation.
Spuk
1
Auf Fedora 20 lautet man rsyncdie Option--append... Implies --inplace
Trevor Boyd Smith
1
--inplacewird funktionieren. --appendwird funktionieren, weil (wie ich in der Antwort angegeben habe) impliziert --inplace, was impliziert --partial(was teilweise übertragene Dateien behält, wenn durch Strg-C unterbrochen, was die ursprüngliche Frage war). Also --appendbedeutet "mache als --inplace, aber prüfe nicht, was sich bereits im Ziel befindet . Es ist ein wichtiger Unterschied. Wenn es dich nicht interessiert, benutze auch.
spuk
1
--partial Also, worum geht es bei WITHOUT--inplace
Evan Carroll,