automatischer Backup von Server per FTP auf Diskstation

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

hewimeddel

Benutzer
Registriert
27. Sep. 2007
Beiträge
25
Reaktionspunkte
0
Punkte
0
Hallo,

ich habe bei einem FreeHoster Webspace gemietet und darauf meine Webseite eingerichtet.

Per FTP-Zugang kann ich auf die dort gespeicherten Dateien zugreifen, kann jedoch dort keine Dateien zur Ausführung installieren.

Ich würde nun gerne täglich automatische Backups dieser Daten auf meine DiskStation machen, da meine Webseite als WIKI aufgebaut ist.

Die DiskStation müsste sich also per Zeitplan selbständig beim entfernten FTP-Server anmelden und die dortigen Dateien in ein Verzeichnis auf der DiskStation schreiben.

Weiß jemand hierfür eine Lösung?

Tschau
hewi
 
wget

Allerdings wird es schwierig ohne Scriptmöglichkeit beim Hoster die Datenbank automatisch zu dumpen.
 
Hallo,

ich muss keine Datenbanken kopieren - die Webseite inkl. Wiki basieren rein auf Dateibasis. Ich muss also nur per FTP auf die Dateien zugreifen und diese kopieren.

Kannst du deinen Kommentar "wget" bitte noch ein bißchen konkretiesieren?

tschau
hewi
 
Ja, mit "wget" wird das wohl funktionieren - wenn ich wüsste, wie ich damit umgehen muss.

Würde mir jemand mal beschreiben wie ich mit "wget" folgendes 1x pro Tag sichern könnte:

Entfernte Adresse:

ftp://beispiel.de
user: hans
passwort: muster
Verzeichnis: Web

DiskStation-Verzeichnis: Backup


Da ich mit ssh nicht so firm bin, wäre eine Schritt-für-Schritt-Anleitung schön.
(Eingeloggt habe ich mich per SSH bereits, aber weiter bin ich nicht gekommen)

tschau
hewi
 
Rich (BBCode):
wget -O /volume1/Backup --ftp-user=hans --ftp-password=muster ftp://beispiel.de/Web
so wirds wahrscheinlich funzen ... habs aber nicht ausprobiert

itari
 
Hallo,

also ich habe es jetzt geschafft, mit wget etwas herunterzuladen, aber:

1) Ich kann offensichtlich kein Zielverzeichnis angeben. Der Schalter -o funktioniert dafür nicht, und es gibt wohl auch keinen eigenen. Ich muss wget also aus dem Zielverzeichnis aufrufen um den Download starten.

2) wget beendet sich nach dem Download und ich habe keinen Schalter gefunden, um einen Zeitraum anzugeben, wann es erneut starten soll. Ich müsste es also täglich selbst starten, was ja nicht der Sinn der Sache ist.

3) wget lädt immer alles herunter, es gibt scheinbar keinen Schalter um nur geänderte Daten herunterzuladen.

Insgesamt scheint mir wget keine richtige Backup-Lösung zu sein.

Gibt es da keine andere Möglichkeit für solche BackUps?
Kann man evtl. die integrierten Backup-Funktionen oder die "Download-Station" dafür umbauen?

tschau
hewi
 
Hallo,

also ich habe es jetzt geschafft, mit wget etwas herunterzuladen, aber:

1) Ich kann offensichtlich kein Zielverzeichnis angeben. Der Schalter -o funktioniert dafür nicht, und es gibt wohl auch keinen eigenen. Ich muss wget also aus dem Zielverzeichnis aufrufen um den Download starten.

2) wget beendet sich nach dem Download und ich habe keinen Schalter gefunden, um einen Zeitraum anzugeben, wann es erneut starten soll. Ich müsste es also täglich selbst starten, was ja nicht der Sinn der Sache ist.

3) wget lädt immer alles herunter, es gibt scheinbar keinen Schalter um nur geänderte Daten herunterzuladen.

Insgesamt scheint mir wget keine richtige Backup-Lösung zu sein.

Gibt es da keine andere Möglichkeit für solche BackUps?
Kann man evtl. die integrierten Backup-Funktionen oder die "Download-Station" dafür umbauen?

tschau
hewi
1) Hast du auch -O verwendet (Grosssbuchstabe)? -o steuert die Logeinstellung
2) darum gibt es cron. Um automatisch Jobs zu bestimmten Zeiten auszuführen
3) Ich glaube kaum, dass wget das könnte.

wget ist keine Backup Lösung. Dazu gibt es für Linux z.B. rsync. Das kann man auch auf der DS installieren, ABER für ein richtiges inkrementelles Backup muss rsync auch auf deinem Webserver laufen. Und das ist bei einem Freehoster wo wahrscheinlich wie Schnee im August
 
Offensichtlich ist auf der DS bereits rsync v. 2.6.6 installiert. Hier habe ich auch ein Beispiel gefunden, wo "fast" genau das gemacht wird, was ich will:

http://rsync.samba.org/examples.html

Wenn mir jetzt noch jemand erklärt, wie ich da einen FTP-Server als Quelle eingeben kann, und wie ich dieses Script auf der DS starten kann.

tschau
hewi
 
Als Quelle kannst du afaik nur eine lokales Verzeichnis oder einen Remote Host und dessen rsync angeben. Mit FTP als Quelle läuft das nicht (oder zumindest nicht dass ich wüsste).
rsync setzt auf der Gegenseite eine Shell voraus und ftp ist nix shell. Ich würde ein ftp Kopierprogramm verwenden
 
Zuletzt bearbeitet:
Hallo,

dann muss ich das wohl doch mit "wget" machen.

Scheinbar kann man ja auf der DiskStation auch Scripts laufen lassen. Ich habe mir da jetzt mal etwas zusammengebastelt, weiß aber nicht, ob das überhaupt funktioniert.

Mein Script sieht wie folgt aus:
________________________________
cd /volume1/Backup
While [ 1 ]
do
wget -o log.txt -N -r --ftp-user=hans --ftp-passwort=muster ftp://beispiel.de/web
sleep 86400
done
________________________________

Wie kann ich dieses Script jetzt so einbinden, dass es beim booten der DS automatisch gestartet wird und dass es die DS nicht unnötig ausbremst?

-------------------------

Bemerkungen zu "wget":
der Schalter "-O" von wget funktioniert scheinbar nur mit einzelnen Files, nicht mit Verzeichnissen. Ist aber nicht schlimm, ich kann ja mit so einem Script vorher in das richtige Verzeichnis wechseln.

Außerdem funktioniert der Schalter "-N", um nur die neueren Files herunterzuladen, mein oben geschriebener Punkt 3) hat sich damit erledigt, das hatte ich zuvor übersehen.

tschau
hewi
 
Das mit dem -N habe ich ned gewusst, danke.
Das Script ist nicht wirklich gut, sorry. Denn es würde einfach unendlich lange laufen. :D
Ausserdem sollte die erste Zeile immer den Pfad zum Interpreter aufweisen
Code:
#!/bin/sh
cd /volume1/Backup
wget -o log.txt -N -r --ftp-user=hans --ftp-passwort=muster [URL]ftp://beispiel.de/web[/URL]
reicht eigentlich schon. Für den Aufruf alle 24 h ist dann der cron zuständig

Gruss

tobi
 
Ja, das skript soll ja auch unendlich lange laufen, bzw. bis die DS ausgeschaltet wird.
Es ist oben übrigens oben nur sinngemäß wiedergegeben, Original sieht es so aus:

#!/bin/sh

#### Wechseln in das Verzeichnis
cd //volume1/Backup/Web

#### Unendliche Schleife
while [ 1 ]
do

#### Download der neuen Dateien
wget -a wget-log.txt -nv -r -N --ftp-user=hans --ftp-password=muster ftp://beispiel.de/web/ &

#### Warten bis zum nächsten Tag, 86400 Sekunden
sleep 86400

#### Ende der unendlichen Schleife ;)
done

Das mit "Cron" laufen zu lassen habe ich irgendwie gleich aufgegeben - das Script oben ist ja noch logisch, aber "Cron" verstehe ich gar nicht, obwohl ich mir da auch diverse Anleitungen im web durchgelesen habe. Es fängt schon damit an, dass ich nicht weiß, wo ich diese crontab finde und wie ich diese bearbeiten kann (bitte kein "vi"!).
Diese Datei ist ja scheinbar nicht so leicht zugänglich außer über die Shell.

Oder bremst mein Skript die DS, bzw. hindert es diese evtl. daran, die Festplatten schlafen zu legen o.ä. ? Der "sleep"-Befehl wird doch sicher nicht viel Resourcen verbrauchen, oder?
Lt. der Ausgabe in "top" liegt es bei 0,0 %CPU und 0,6 %MEM - das wäre für mich vertretbar, sofern es sonst keine Probleme macht.

tschau
hewi
 
Zuletzt bearbeitet:
Wenn du willst, dann lass das Script halt unendlich lange laufen. Wie gesagt machen würde ich das nie so machen, aber wenn du magst dann mach es wie du willst.
 
Also, die crontab liegt unter /etc

vi ist jetzt auch nicht so schwer.

Hier mal eine kurze "Tasten"-Abfolge:
1. als root auf der shell anmelden
2. vi /etc/crontab [Enter]
3. mit [ESC] I (das ist ein großes i für Insert) in den Einfügen-Modus des vi wechseln.
4. mit den Cursortasten ans Ende der Datei gehen
5. folgende Zeichenfolge Eingeben:
0[TAB]0[TAB]*[TAB]*[TAB]*[TAB]user[TAB]dateiname
6. Die Datei mittels [ESC]:wq [ENTER] speichern

Anschl. müßtest du noch den Cronjob neu starten.
Hinweise:
user ist der lokale user, der das Script dateiname ausführt.
dateiname muss mit absolutem Pfad angegeben werden und vorher mittels
chmod +x dateiname
ausführbar gemacht werden.

HTH
 
Man muss ein Skript nicht unbedingt per crond steuern lassen, man kann es auch per Endlos-Schleife tun. Man nennt dann das Skript einen "Server", weil Server auch immer per Endlos-Schleife funzen. Klar sollteman den Abbruch gezielt einbeziehen, dafür wäre eine trap-Anweisung im Skript in der ersten Zeile sinnvoll. Aber ich denke, das ist Kür.

Zwei Dinge zum Skript selbst:

(1) der cd /volume1/Backup/web braucht keine Doppel // am Anfang.

und

(2) den while kann man wie folgt schrieben: while true; do

itari
 
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