[GELÖST] rsync - mehrere Zielpfade?

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
BrotherJ
Beiträge: 323
Registriert: 15.11.2018 07:56:18

[GELÖST] rsync - mehrere Zielpfade?

Beitrag von BrotherJ » 18.02.2019 12:52:50

Hallo,

ich möchte mittels rsync täglich wichtige Verzeichnisse zur Datensicherung synchronisieren. Dazu nutze ich eine zweite Festplatte im Rechner. Zur Sicherheit will ich das zusätzlich auf einer externen Festplatte machen.
Kann man bei rsync mehrere Zielpfade angeben, die quasi gleichzeitig befüllt werden?

Grüße

BrotherJ
Zuletzt geändert von BrotherJ am 18.02.2019 17:54:50, insgesamt 1-mal geändert.

Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: rsync - mehrere Zielpfade?

Beitrag von hikaru » 18.02.2019 16:22:10

Mit rsync geht das nicht, allerdings soll wohl parallel-rsync aus Debianpssh sowas können.
Der Manpage nach müsste dann wohl einer deiner Hosts localhost sein.

Getestet habe ich es nicht.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: rsync - mehrere Zielpfade?

Beitrag von Meillo » 18.02.2019 16:34:22

Ansonsten ginge das:

Code: Alles auswählen

rsync $from $to1 & rsync $from $to2
Das kopiert quasi gleichzeitig, in separaten Prozessen. (... was aber bei `parallel-rsync' doch auch so sein sollte, oder?)
Use ed once in a while!

Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: rsync - mehrere Zielpfade?

Beitrag von hikaru » 18.02.2019 16:59:13

Meillo hat geschrieben: ↑ zum Beitrag ↑
18.02.2019 16:34:22

Code: Alles auswählen

rsync $from $to1 & rsync $from $to2
Das liest die Quelle doppelt. Ich hoffe parallel-rsync ist etwas schlauer.

BrotherJ
Beiträge: 323
Registriert: 15.11.2018 07:56:18

Re: rsync - mehrere Zielpfade?

Beitrag von BrotherJ » 18.02.2019 17:54:30

Prima, das ist es! Vielen Dank für den Tipp!

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: rsync - mehrere Zielpfade?

Beitrag von Meillo » 18.02.2019 19:20:01

hikaru hat geschrieben: ↑ zum Beitrag ↑
18.02.2019 16:59:13
Meillo hat geschrieben: ↑ zum Beitrag ↑
18.02.2019 16:34:22

Code: Alles auswählen

rsync $from $to1 & rsync $from $to2
Das liest die Quelle doppelt. Ich hoffe parallel-rsync ist etwas schlauer.
Weiss jemand, wie es arbeitet? Ist das ein Fork von rsync, oder warum ist das nicht Teil von rsync selbst? Ich dachte, es waere nur ein Wrapper oder so. Waere an Hintergrundinfos interessiert ...
Use ed once in a while!

Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: rsync - mehrere Zielpfade?

Beitrag von hikaru » 18.02.2019 23:10:30

Meillo hat geschrieben: ↑ zum Beitrag ↑
18.02.2019 19:20:01
Weiss jemand, wie es arbeitet? Ist das ein Fork von rsync, oder warum ist das nicht Teil von rsync selbst? Ich dachte, es waere nur ein Wrapper oder so. Waere an Hintergrundinfos interessiert ...
Man könnte in den Code schauen. [1] Das ist ein Python-Script und man erkennt auch ohne Ahnung von der Sprache zu haben recht schnell, dass es wirklich nur ein Wrapper ist, der ledigllich in einer Schleife über alle Ziele läuft. So richtig Punkte bringt das also nicht.


[1] https://sources.debian.org/src/pssh/2.3.1-1/bin/prsync/

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: rsync - mehrere Zielpfade?

Beitrag von Meillo » 19.02.2019 08:36:38

hikaru hat geschrieben: ↑ zum Beitrag ↑
18.02.2019 23:10:30
Meillo hat geschrieben: ↑ zum Beitrag ↑
18.02.2019 19:20:01
Weiss jemand, wie es arbeitet? Ist das ein Fork von rsync, oder warum ist das nicht Teil von rsync selbst? Ich dachte, es waere nur ein Wrapper oder so. Waere an Hintergrundinfos interessiert ...
Man könnte in den Code schauen. [1]
;-)
Das ist ein Python-Script und man erkennt auch ohne Ahnung von der Sprache zu haben recht schnell, dass es wirklich nur ein Wrapper ist, der ledigllich in einer Schleife über alle Ziele läuft. So richtig Punkte bringt das also nicht.
Das bestaetigt zumindest mein Weltbild. ;-)


Kommentar aus dem Code:

Code: Alles auswählen

Parallel rsync to the set of nodes in hosts.txt.

For each node, we essentially do a rsync -rv -e ssh local user@host:remote.
Note that remote must be an absolute path.
Also ist das in der Essenz auch nichts anders als:

Code: Alles auswählen

for i in `cat hosts.txt`; do
    rsync -rv -e ssh local user@$i:remote
done
... bloss dass es in mancherlei Hinsicht bequemer zu bedienen ist und in anderer Hinsicht eingeschraenkter ist.

Das passt dazu, dass es Teil von `pssh' ist, was ja darauf ausgelegt ist, als Admin auf einem Set von entfernten Rechnern den gleichen Befehl auszufuehren. Mit `prsync' kann man eben ein rsync auf ein ganzes Set von Rechnern machen, wie ein `pscp', bloss besser.


Wenn man die Quelle nur einmal lesen will, dann kann das nur ueber ein internes Feature von rsync gehen. Das kann man nicht von aussen dranflanschen. Entweder rsync kann das selbst, oder es gibt einen Fork von rsync, der das kann, oder es geht nicht.
Use ed once in a while!

Benutzeravatar
hikaru
Moderator
Beiträge: 13559
Registriert: 09.04.2008 12:48:59

Re: rsync - mehrere Zielpfade?

Beitrag von hikaru » 19.02.2019 08:55:54

Meillo hat geschrieben: ↑ zum Beitrag ↑
19.02.2019 08:36:38
Wenn man die Quelle nur einmal lesen will, dann kann das nur ueber ein internes Feature von rsync gehen. Das kann man nicht von aussen dranflanschen. Entweder rsync kann das selbst, oder es gibt einen Fork von rsync, der das kann, oder es geht nicht.
Ich hatte gestern kurz überlegt, ob man da etwas mit einer tee-Pipe machen könnte.
Aber dazu müsste man rsync dazu überreden können, auf STDOUT zu schreiben und von STDIN zu lesen. Das geht nicht, soweit ich weiß.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: rsync - mehrere Zielpfade?

Beitrag von Meillo » 19.02.2019 09:20:41

hikaru hat geschrieben: ↑ zum Beitrag ↑
19.02.2019 08:55:54
Meillo hat geschrieben: ↑ zum Beitrag ↑
19.02.2019 08:36:38
Wenn man die Quelle nur einmal lesen will, dann kann das nur ueber ein internes Feature von rsync gehen. Das kann man nicht von aussen dranflanschen. Entweder rsync kann das selbst, oder es gibt einen Fork von rsync, der das kann, oder es geht nicht.
Ich hatte gestern kurz überlegt, ob man da etwas mit einer tee-Pipe machen könnte.
Aber dazu müsste man rsync dazu überreden können, auf STDOUT zu schreiben und von STDIN zu lesen. Das geht nicht, soweit ich weiß.
Das muesste dann wohl in einem internen Format oder als Tar oder so sein, weil du ja mehrere Dateien und ihre Attribute transportieren muesst. Es muss also serialisiert plus um Metadaten angereichert sein. Du musst aber noch beruecksichtigen, dass rsync(1) AFAIK eine Zwei-Wege-Kommunikation hat, in der zuerst die Filelist abgeglichen wird, um herauszufinden, was wirklich uebertragen werden muss, bevor es uebertragen wird. Dabei hat man das Problem, dass die verschiedenen Ziele verschiedene Rueckmeldungen liefern koennen, weswegen das rsync an der Quelle fuer die verschiedenen Ziele unterschiedliches liefern muss. Folglich kann es nur funktionieren, wenn das eine interne Logik von rsync ist (oder man inkrementelle Uebertragungen weglaesst, womit dann aber rsync seinen eigentlichen Daseingrund verliert).
Use ed once in a while!

RobertDebiannutzer
Beiträge: 385
Registriert: 16.06.2017 09:52:36

Re: [GELÖST] rsync - mehrere Zielpfade?

Beitrag von RobertDebiannutzer » 19.02.2019 21:04:35

Vielleicht hilft der Punkt "Batch Mode" in der manpage von rsync weiter?
Zitat daraus:
Batch mode can be used to apply the same set of updates to many identical systems. Suppose one has a tree which is replicated on a number of hosts. Now suppose some changes have been made to this source tree and those changes need to be propagated to the other hosts. In order to do this using batch mode, rsync is run with the write-batch option to apply the changes made to the source tree to one of the destination trees. The write-batch option causes the rsync client to store in a "batch file" all the information needed to repeat this operation against other, identical destination trees.
Generating the batch file once saves having to perform the file status, checksum, and data block generation more than once when updating multiple destination trees. Multicast transport protocols can be used to transfer the batch update files in parallel to many hosts at once, instead of sending the same data to every host individually.
[...]
Quelle auch online: https://manpages.debian.org/stretch/rsy ... .1.en.html
Wie das genau funktioniert - keine Ahnung! Ich bin froh, dass ich mittlerweile rsync für mein vergleichsweise einfaches backup-Script zähmen konnte - die exclude-Patterns haben mir zunächst die Suppe ziemlich versalzen...
Im Zweifel würde ich eher zu einem einfachen Script tendieren, bevor man sich beim backup vertut und dann kein backup hat, weil man das ja gerade machen wollte...

Antworten