Dateien bei Änderung auf externen Server synchronisieren

  • 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.

deruku

Benutzer
Registriert
22. Okt. 2013
Beiträge
6
Reaktionspunkte
0
Punkte
0
Hallo,

ich habe zu diesem speziellen Anwendungsfall bisher per SuFu noch keine Info gefunden. Ich bitte um etwas Nachsicht, falls eine solche Situation hier bereits einmal behandelt wurde.

Folgende Ausgangssituation:

Ich habe einen Webspace bei uberspace.de, auf dem ich ein kleines per Markdown befüttertes Blog betreibe. Mein bisheriges Setup besteht darin, dass ich einen neuen Blogeintrag als Textdatei in meine Dropbox lege und dieser dann automatisch auf den Webspace synchronisiert und somit im Blog veröffentlicht wird.

Nun macht der Dropbox-Daemon auf dem Webspace gerne mal etwas Unfug, sodass es nötig wird manuell einzugreifen und ihn neu zu starten. Das würde ich mir gerne sparen und die Dropbox gleich komplett abklemmen.

Auf meiner DS213j läuft sowieso schon ein Mirror des Blogs, auf dem ich gerne neue Dinge erstmal ausprobiere. Die Idee ist also, neue Beiträge auf meine DS zu legen, welche dann automatisch auf den Webspace geschoben werden.

Ich habe schon einmal Bittorrent-Sync ausprobiert, hatte dann aber das Problem, dass sich die Festplatten der DS nicht mehr in den Ruhezustand begeben.

Bei rsync bin ich mir noch etwas unsicher. Im Idealfall müssten die Änderungen auf der DS möglichst zügig auf dem Webspace abgebildet werden. Wenn ich nun aber einen Cron für rsync anlege, der - sagen wir mal - alle 10 Minuten den Sync anstößt, dann hat sich die Frage nach dem Ruhezustand sicherlich auch schon erledigt. Wäre auch vielleicht deswegen nicht die beste Lösung, da im Normalfall vielleicht alle zwei Tage eine neue Datei hinzukommt.

Und nun, endlich, meine Frage an euch: Wie würdet ihr das realisieren?

Ich bedanke mich schonmal für's lesen und im Vorraus für Antworten.
 
Du musst ja nicht cron verwenden. Eine Alternative wäre ein Script welches du nach jeder Änderung manuell anwirfst
 
Danke für die Antwort.

Klar, das wäre naheliegend. Der Reiz in der ganzen Geschichte lag aber darin, dass ich so auch von unterwegs mit dem Smartphone neue Files in den Ordner werfen und so neue Beiträge veröffentlichen kann. Wenn ich dann der DS noch einen Besuch per SSH abstatten müsste, könnte ich auch gleich den eigentlichen rsync-Befehl in die Tastatur hämmern. Oder FTP benutzen.

Mir schwebte eher eine Lösung vor, bei der Änderungen in einem Ordner erkannt und daraufhin eine Aktion ausgeführt wird. Ich habe bisher zwei mögliche Lösungen (hier und hier) für diese Aufgabenstellung gefunden - dummerweise fehlt mir auf der DS gcc um sie auch zu kompilieren. Und ohne ipkg (was es wohl bisher für die 213j nicht gibt) sieht's irgendwie schlecht aus. Zumindest aus meiner Sicht als Laie.

Notfalls werde ich auf die Aktualität verzichten und cron alle paar Stunden diese Aufgabe übernehmen lassen.
 
dann lass halt ein Script in einer Endlosschleife laufen, dass dein Verzeichnis prüft und falls Daten vorhanden sind diese auf den Server schickt und lokal löscht
Code:
#!/bin/ash

cd /pfad/zu/deinem/Verzeichnis
while true do ;
 for i in $(ls .) ; do
  rsync -a -e ssh $i root@deinServer/pfad/
  rm $i
 done
 sleep 30
done
so mal als Bsp-Code, voll ungetestet ;-)
 
Das ist schonmal eine Basis, auf der ich aufsetzen kann. Vielen Dank!
 
Wo soll denn das Skript laufen? Wenn es auf der DS läuft ist auch wieder nichts mit Ruhezustand. Du hast nur die Wahl entweder schnell einen Upload anzustoßen oder die Platten lange im Ruhezustand zu lassen. Beides wiederspricht sich.
 
Mittlerweile habe ich etwas mit Scripts - wie von jahlives skizziert - herumgebastelt. Leider mit sehr mäßigem Erfolg. Ich wage, mit meinem zugegebenermaßen begrenztem Wissen, stark zu bezweifeln dass Shellscripts für diese Problemstellung geeignet sind.

Die Aufgabe ist also weiterhin eine Möglichkeit zu finden, Änderungen in einem Ordner zu erkennen und dabei die Platten auch in einen Ruhezustand schicken zu können.
 
Die Aufgabe ist also weiterhin eine Möglichkeit zu finden, Änderungen in einem Ordner zu erkennen und dabei die Platten auch in einen Ruhezustand schicken zu können.
das dürfte vom Prinzip her kaum gehen. Denn die Prüfung setzt voraus, dass auf die Platten zugegriffen werden muss. Was einzig noch eine Alternative sein könnte wäre die Verwendung von inotify. Bei einem Linux gibt es dafür auch eine Abwandlung von cron namens incron. Der reagiert nicht nach einem Zeitplan sondern nach Ereignissen in den Filesystemen. Allerdings habe ich keine Ahnung ob das in der Firmware mitdabei ist oder sich vielleicht via ipkg installieren lässt. Das es sich jedoch um Kernelgeschichten handelt zweifle ich daran, dass man es bei ipkg finden kann
 
Auch die Dinge die ich über inotify gesehen habe überwachen Änderungen im Dateisystem. Um Änderungen mitzubekommen muss das System darauf zugreifen, ergo kein Spindown.
 
inotify (bzw. inotify-tools) steht leider nicht zur Verfügung, weil ich es ohne ipgk (und damit ohne gcc) nicht kompilieren kann. Ich denke dann werde ich einfach einen Cron anlegen, der alle paar Stunden mal vorbeischaut. Das muss dann reichen.

EDIT: Gerade nochmal recherchiert: inotify als Kernelfunktion wäre wirklich die Lösung, die auch Ruhezustand der Platten zulässt. Schade.
 
Zuletzt bearbeitet:
afaik überwacht inotify nicht aktiv das Filesystem, sondern Änderungen im Filesystem triggern einen inotify-Event auf den man dann reagieren kann. imho müsste der Spindown damit eigentlich funzen, habs aber nie getestet
 
Ich habe es offensichtlich geschafft ipkg zu installieren - nach dieser Anleitung. Mal sehen, wie weit ich damit komme.

Nachtrag: Zu früh gefreut. ipkg -h geht, alles andere: Permission denied. Als root: ipkg not found. Das wird mich bestimmt noch eine Weile beschäftigen.

Nachtrag 2: Habe gerade erfolgreich Nano installiert. Vielleicht klappt's ja doch noch mit inotify.
 
Zuletzt bearbeitet:
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