2017-06-11 2 views
0

Ich habe eine Situation, in der ich eine Datei habe sagen TEST.csv in einem Quellsystem. Ich möchte diese Datei in meinem Zielsystem synchronisieren. Wenn in TEST.csv etwas Neues hinzugefügt oder alte Daten geändert werden, wird auch die Datei im Zielsystem geändert. Das Quellsystem ist nur für rsync verfügbar, daher kann ich außer rsync kein anderes Protokoll verwenden. Jetzt möchte ich nur den geänderten Teil in TEST.csv separat bekommen. Wie kann ich es tun?finde nur einen anderen Teil einer Datei über rsync

+0

Konnte meine Antwort Ihnen helfen? – EmilioMg

Antwort

0

Wenn ich Sie richtig verstehe, wollen Sie nur den geänderten Teil der TEST.csv anstelle der ganzen Datei übertragen, ja? Wenn das der Fall ist, glaube ich nicht, dass dies möglich ist. Dies ist gerade aus man rsync:

The rsync remote-update protocol allows rsync to transfer just the differences between two sets of files across the network connection, using an efficient checksum-search algorithm described in the technical report that accompanies this package.

Der wichtigste Teil ist using an efficient checksum-search algorithm - es läuft eine Prüfsumme gegen die lokalen und Remote-Datei, und wenn die Prüfsumme unterscheidet, überträgt er die Datei von der Quelle zum Ziel. Basierend auf einer Prüfsumme gibt es keine Möglichkeit zu sagen, welcher Teil der Datei geändert wurde und nur die Unterschiede zu übertragen.


Sie können ein lokales Versionierungstool verwenden, z. git, und verwenden Sie dieses Tool, um die Unterschiede zwischen Ihren Sync-Zyklen zu erhalten. Wenn Sie das diff haben, können Sie es in einer Datei speichern, es über rsync übertragen und dann das patch-Dienstprogramm auf dem Ziel verwenden, um dieses diff auf die TEST.csv anzuwenden.

git ist nicht erforderlich, Sie ein einfaches diff -u auf der Quelle und ein patch auf dem Ziel verwenden können, aber verwenden diff Sie eine altes TEST.csv und eine neues TEST.csv mit den neuen Änderungen zu verfolgen und dann diff dagegen laufen . Mit git bearbeiten Sie einfach die Datei mit den von Ihnen gewünschten Werkzeugen, und dann verwendet git seinen internen Mechanismus, um das korrekte Diffset für die Änderungen zu erstellen. Vergessen Sie nicht, die Änderungen hinzuzufügen und zu committen, nachdem das Diff übertragen wurde, so dass der nächste Zyklus ein sauberes Diff mit nur seinen eigenen Änderungen machen kann ;-)

Verwandte Themen