Sicherungen von Dialup-Clients a la rsnapshot

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

udius

Benutzer
Registriert
15. Apr. 2010
Beiträge
494
Reaktionspunkte
0
Punkte
0
Tach!

Ich habe mehrere Server, die ich alle vollautomatsch per rsnapshot sichere und bin damit sehr zufrieden.

Nun habe ich eine Reihe von Clients, auf denen leider auch eine Reihe von sichernswerten Daten stehen. Soweit es ging, habe ich die Daten einfach schon auf einen Server verlegt, damit sie dort gesichert werden, Aber einige Konfigurationsdateien liegen nun mal lokal.

Ich habe keinen Einfluss darauf, wann diese Clients online (einwählen tun sie sich nicht via ppp, insofern ist der Begriff "Dialup" vielleicht falsch gewählt. Sie booten oder wachen aus dem Hibernate auf) gehen. Mal sind sie es vielleicht durchgängig 2-3 Tage lang. Ein andermal gehen sie vielleicht 4-5 am Tag online und teilweise gehen sie auch mal für mehrere Tage gar nicht online.

Von daher funktioniert rsnapshot (nach meinem Wissen) nicht so richtig, denn rsnapshot geht davon aus, dass die zu sichernden Datenbestände zu den Sicherungsintervallen auch online sind.

Wie macht Ihr das?

Grüße + Dank im voraus

udius
 
Zuletzt bearbeitet:
eigenes Shell Script auf dem Client das mit rsync und ssh eine sicherung macht? Das könntest du mittels cron regelmässig aufrufen
 
eigenes Shell Script auf dem Client das mit rsync und ssh eine sicherung macht? Das könntest du mittels cron regelmässig aufrufen

cron ist ja solche sache: wenn die kiste aus ist, ist sie aus.

und welchen vorteil bringt mir ein eigenes script mit rsync und ssh gegenüber rsnapshot?
 
rsnapshot erwartet wie du sagtest eine bestimmte Anzahl snapshots z.B. 6xhourly für einen daily. Wenn jetzt zum Zeitpunkt wo daily ausgeführt wird nicht 6 hourly vorhanden sind wird der daily ned gemacht. Da führt dann aber bei jedem folgenden hourly dazu, dass du zuviele snapshots davon hast. hourly wird versuchen diese zu löschen, viel Spass wenn das länger geht als bis zum nächsten hourly (gibt ganz saubere RaceConditions ;-) )
Zudem bringt dir in diesem Fall rsnapshot nicht so viel: rsnapshot muss dort lokal laufen wo auch die backups gespeichert werden. Also auf der DS. Du kannst mit rsnapshot keine Backups an einen Server schicken sondern nur vom Server abholen lassen. Und das kann der Server ja nicht zuverlässig wenn die Clients nicht immer oben sind. Du könntest als Alternative (wenn du unbedingt rsnapshot willst) auch rsnapshot auf dem Client installieren und diesen dann lokal Schnapschüsse erstellen lassen. Diese könnte der Client dann regelmässig an den Server syncen. Aber das geht nur bei relativ kleinen Backups. Bei grossen Schnapschüssen würde das dazu führen, dass du jedesmal das komplette Backup an den Server übertragen musst ;-)
Lange Rede kurzer Sinn: Bei deinen Vorgaben würde ich auf jeden Fall was mit rsync und ssh auf dem Client machen. Denn der Client weiss ja wenn er Up ist :-) Und ich meinte eher den cron auf dem Client und nicht auf dem Server
 
cron ist ja solche sache: wenn die kiste aus ist, ist sie aus.
Hallo udius, wenn ich Dich richtig verstehe, sind es Dialups.
In dem /etc/ppp hatte ich mal was gemacht nach der Einwahl etliches Auszführen.
Vielleicht bringt Dich das auf eine Idee.

Gruß Jo
 
allenfalls könnte man das auch über @reboot im cron des Clients lösen. Das Ereignis wird einmalig ausgeführt und könnte das Backupscript anwerfen, das auf den Server sichert
 
allenfalls könnte man das auch über @reboot im cron des Clients lösen. Das Ereignis wird einmalig ausgeführt und könnte das Backupscript anwerfen, das auf den Server sichert
hmm, vielleicht. wobei sie meistens nicht wirklich booten, sondern nur hibernate
 
Hallo udius, wenn ich Dich richtig verstehe, sind es Dialups.
In dem /etc/ppp hatte ich mal was gemacht nach der Einwahl etliches Auszführen.
Vielleicht bringt Dich das auf eine Idee.

Gruß Jo

"Dialup" habe ich wohl falsch verwendet. Meist booten sie oder wachen aus dem Hibernate auf und sind z. Zt. alle im Lan angeschlossen.
 
hat denn der Client im Hibernate das eth noch up? Wenn nein, dann könntest du das "Aufwachen" am if-up Ereignis festmachen und ein Script anwerfen welches das Backup auf den Server macht
 
Hallo und Danke für Eure Ideen. Für mich klingt es aber so, als hätte noch keiner von Euch dieses Problem geschweige denn bereits eine Lösung dafür?!

Habt Ihr keine Clients, die lokale Daten haben, die es zu sichern gilt? Falls doch, wie realisiert Ihr das?
 
doch natürlich habe ich Clients (nicht immer on) die auf die DS sichern. rsync und ssh und ein paar Zeilen Shellcode und ein cronjob. Ich verwende rsnapshot nur für meine Server, die immer on sind. Für alle anderen "pushen" die Clients ihre Backups auf den Server (dann halt ohne rsnashot)
 
Hmmm, ich glaube, ich werde folgende Lösung wählen:

Der Server versucht 1x stündlich die entsprechenden Dateien (es sind nicht sehr viele aber an vielen Orten verstreut) von den Clients zu holen und in einem ersten Sicherungsverzeichnis abzulegen. Falls ein Client offline ist, bleibt das entsprechende erste Sicherungsverzeichnis unverändert.

Einmal täglich läuft dann ein rsnapshot auf meinem Server: Quelle ist das erste Sicherungsverzeichnis, Ziel ist ein zweites Sicherungsverzeichnis.

Auf diese Weise kommt rsnapshot nicht durcheinander, wenn ein Client mal offline ist.

Allerdings scheint es so zu sein, dass der rsync (auf dem Server) IMMER einen rsyncd (auf dem jeweiligen Client) benötigt, selbst, wenn man die Kommunikation über ssh lenkt a la
Rich (BBCode):
/opt/bin/rsync -avz --delete root@dm8000:/etc /volume1/dm8000-backup/
:-(

Ich hatte die Doku so verstanden, dass nur bei der Benutzung von "::" die Kommunikation über einen rsyncd geht?

Oder wo liege ich falsch?

Zur Not muss ich auf dem Server wohl wieder die Client-Filesysteme via NFS mounten und dann "lokal" rsyncen...
 
Das liegst du falsch. Da muss kein rsync-Daemon laufen wenn du rsync via ssh machst. Allerdings gehst du in deinem Bsp ja nicht via ssh :-)
Code:
rsync -avz --delete -e ssh root@dm800:/etc /volume1/dm800-backup/
und falls du dem ssh noch Parameter mitgeben willst
Code:
rsync -avz --delete -e "ssh -i /path/to/key" root@....
 
Das liegst du falsch. Da muss kein rsync-Daemon laufen wenn du rsync via ssh machst. Allerdings gehst du in deinem Bsp ja nicht via ssh :-)
Code:
rsync -avz --delete -e ssh root@dm800:/etc /volume1/dm800-backup/
und falls du dem ssh noch Parameter mitgeben willst
Code:
rsync -avz --delete -e "ssh -i /path/to/key" root@....


hmm, ja - danke.

genau so hatte ich es erst auch probiert, weil es so im i-net stand, bekam aber immer fehlermeldungen
Rich (BBCode):
DS710Plus> ssh bridge
root@bridge's password: 


BusyBox v1.15.3 (2011-10-28 21:07:55 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 Backfire (10.03.1-RC6, r28680) --------------------
  * 1/3 shot Kahlua    In a shot glass, layer Kahlua 
  * 1/3 shot Bailey's  on the bottom, then Bailey's, 
  * 1/3 shot Vodka     then Vodka.
 ---------------------------------------------------
root@TL1043ND:~# exit
Connection to bridge closed.
DS710Plus> /opt/bin/rsync -azv -e ssh root@bridge:/etc
root@bridge's password: 
ash: rsync: not found
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: remote command not found (code 127) at io.c(605) [Receiver=3.0.9]

Und zwar nur dann, wenn ich versuche von einem client etwas zu lesen, der keinen laufenden rsyncd hat.

ich verstehe die fehlermeldung jedenfalls so, dass auf der remote-seite versucht wird, rsync zu finden und eben das scheitert.

nachdem ich dann auf dem remote-system ein ln -s /opt/usr/bin/rsync /usr/bin/rsync erstellt habe, kommt

Rich (BBCode):
DS710Plus> /opt/bin/rsync -azv -e ssh root@bridge:/etc
root@bridge's password: 
rsync: can't load library 'libpopt.so.0'
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: sibling process terminated abnormally (code 16) at io.c(605) [Receiver=3.0.9]

auch dann, wenn ich "-e ssh" weglasse
Rich (BBCode):
DS710Plus> /opt/bin/rsync -azv root@bridge:/etc       
root@bridge's password: 
rsync: can't load library 'libpopt.so.0'
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: sibling process terminated abnormally (code 16) at io.c(605) [Receiver=3.0.9]

EDITH:
wie bekomme ich es denn nun hin, dass er die shared-lib findet? einen ln -s von /opt/.... nach /lib?

JUDITH: Mit diesem zusätzlichen Link funzt es. Und zwar mit "-e ssh" und ohne. Leider habe ich auf mind. einem meiner Clients keinen rsync drauf. :-( Also doch vom Server aus das Client-Filesystem mounten und dann auf dem Server "lokal" rsyncen?
 
Zuletzt bearbeitet:
wieso überhaupt /opt/bin/rsync ? Der ist doch auch als Bestandteil der Firmware mitdabei (/usr/syno/bin/rsync). Und ja leider muss auf jedem Client rsync (nicht rsyncd) installiert sein
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat