Backup automatisieren

vice_pres

Mitglied
Mitglied seit
6 Apr 2008
Beiträge
474
Punkte für Reaktionen
4
Punkte
18
Hi,

Ich hab schon mal rumgesucht und auch ne methode gefunden das ganze Image zu sichern, aber gibts auch ne möglichkeit übern Script das Backup auszuführen das im Freetz Webif verfügbar ist (Backup /var/flash Bereich)? Ich sicher meine DD-WRT Router auch ähnlich (naja nur die Einstellungen) - die Einstellungen würden mir ja eigentlich reichen, will ja nicht gleich das Image sichern.

Danke schonmal vorab

Gruß

Peter
 
Das Skript sieht so aus:
Code:
[SIZE=2]
[LEFT]# Set working dir so tar can use relative path names
cd /var/tmp > /dev/null 2>&1

# Create empty temp-dir for backup
export BACKUP_DIR='var_flash' > /dev/null 2>&1
rm -rf $BACKUP_DIR > /dev/null 2>&1
mkdir $BACKUP_DIR > /dev/null 2>&1

# Create temporary copies of those character streams in /var/flash
for file in $(ls /var/flash); do
cat /var/flash/$file > $BACKUP_DIR/$file 2> /dev/null
done

# Create backup and send it to client via stdout
tar cz $BACKUP_DIR/ 2> /dev/null

# Clean up[/LEFT]
rm -rf $BACKUP_DIR > /dev/null 2>&1
Du kannst dir natürlich ein "eigenes" schreiben und das z.B. per cron job aufrufen...

MfG Oliver
[/SIZE]
 
Klar, über nen cronjob.
Erstell dir ein kleines Script und leg das auf einen angeschlossenen USB-Stick.
Über crond startest du das Script täglich und sicherest die Dateien auf den Stick.

Gruß
HS

p.s. Ohh, Olli war paar Sekunden schneller. Zwei.. ein Gedanke ;-)
 
Achso, jetzt hab ich es erst geschnallt, zwar vorher das .cgi schon angeguckt aber irgendwie...

Das Script macht nichts anderes als den /var/flash ordner zu packen? Dann kann ich im Prinzip ja eins meiner Scripts anpassen.

Der Vollständigkeit halber, falls noch jemand Interesse dran hat:

Code:
#!/bin/sh

### Setzen der Variablen

FUSER=User
FPASS=Pass
WOTAG=`date +%a`                                # Wochentag
DATE=`date +%m.%d`                              # Datum

### Altes Backup löschen und neues erzeugen

rm /var/media/ftp/uStor01/kernel.image
rm /var/media/ftp/uStor01/var_flash.tar.gz

cat /dev/mtdblock7 > /var/media/ftp/uStor01/kernel.image

# Ins Tempverzeichnis wechseln
cd /var/tmp
# Leeres Verzeichnis erzeugen fürs Backup
export BACKUP_DIR='var_flash'
rm -rf $BACKUP_DIR
mkdir $BACKUP_DIR
# Temporäre Kopie von /var/flash anlegen zwecks Backup
for file in $(ls /var/flash); do
        cat /var/flash/$file > $BACKUP_DIR/$file
done
# Backup durchführen
tar czf /var/media/ftp/uStor01/var_flash.tar.gz $BACKUP_DIR/
# Temp Ordner löschen
rm -rf $BACKUP_DIR

### FTP-Upload des erzeugten Images

ftpput -u $FUSER -p $FPASS 192.168.0.1 kernel.$DATE.$WOTAG.image /var/media/ftp/uStor01/kernel.image
ftpput -u $FUSER -p $FPASS 192.168.0.1 var_flash.$DATE.$WOTAG.tar.gz /var/media/ftp/uStor01/var_flash.tar.gz
 
Zuletzt bearbeitet:
wenn man es mit rsync macken könnte sollte uüber usb könnte so aussehen.

Code:
#!/bin/sh
#
# edit crontab
#
#
# requires a cron-compatible command at /config/cron

USD=/usr/cron.sh

if [ -e $USD/config/cron ]; then
     crontab -l > /tmp/crontab.tmp
     cat $USD/config/cron >> /tmp/crontab.tmp
     crontab /tmp/crontab.tmp
     rm -f /tmp/crontab.tmp
fi

Die cron könnte dann so aussehen

Code:
30 * * * * /mnt/§mountpoint/usb/backup/bin/BackupCron.sh
 
Komplettes Image Backup FBF 7170

Hi,

Ich hab schon mal rumgesucht und auch ne methode gefunden das ganze Image zu sichern ...

Peter

Hallo, kennt jemand die oben zitierte Möglichkeit? Ich möchte das Image jederzeit auf die andere FBF 7170 übertragen können ohne mehrere Methoden
nutzen zu müssen.


Gruß
 
Du hast do eh eine Image-Datei, oder? Diese ist portabel, so lange es sich um den gleichen Boxtyp handelt. (Branding beachten)

Du könntest ansonsten auch einen Blick ins Wiki werfen, da hat Alexander an irgendeiner Stelle etwas über die mtd-Blocks und das Sichern derselben geschrieben.

Generell aber denke ich, dass man doch die Firmware und die Einstellungen getrennt voneinander betrachten sollte und du somit das Image aufhebst, und die Einstellungen aus dem Freetz heraus sicherst .
 
Hi,

### Setzen der Variablen

Code:
FUSER=USER
FPASS=PASS
WOTAG=`date +%a`                                # Wochentag
DATE=`date +%m.%d`                              # Datum

### Altes Backup löschen und neues erzeugen

rm /var/media/ftp/uStor01/kernel.image
rm /var/media/ftp/uStor01/var_flash.tar.gz

cat /dev/mtdblock7 > /var/media/ftp/uStor01/kernel.image

# Ins Tempverzeichnis wechseln
cd /var/tmp
# Leeres Verzeichnis erzeugen fürs Backup
export BACKUP_DIR='var_flash'
rm -rf $BACKUP_DIR
mkdir $BACKUP_DIR
# Temporäre Kopie von /var/flash anlegen zwecks Backup
for file in $(ls /var/flash); do
        cat /var/flash/$file > $BACKUP_DIR/$file
done
# Backup durchführen
tar czf /var/media/ftp/uStor01/var_flash.tar.gz $BACKUP_DIR/
# Temp Ordner löschen
rm -rf $BACKUP_DIR

### FTP-Upload des erzeugten Images

ftpput -u $FUSER -p $FPASS 192.168.0.1 kernel.$DATE.$WOTAG.image /var/media/ftp/uStor01/kernel.image
ftpput -u $FUSER -p $FPASS 192.168.0.1 var_flash.$DATE.$WOTAG.tar.gz /var/media/ftp/uStor01/var_flash.tar.gz

Das ist das Script das bei mir läuft.

Zurückgespielt hab ich das Image so noch nicht, hab das ursprüngliche Freetz image für den Fall aufbewahrt. Letztendlich machts auch keinen großen Unterschied ob ichs nun sicher oder nicht, die Einstellungen sind wichtiger.

Gruß

Peter
 
da ich 2 FBF 7170 habe werde ich es einfach mal probieren.

werde dann berichten, ob der restore funktioniert (oder eben nicht)

vielen dank erstmal
 
habe es probiert und es werden auch dateien erstellt (kernel.image und var_flash.tar.gz)
ist dann kernel.image mtd1 beim restore?

sorry, wenn ich so "unbeholfen" frage
 
Hallo zusammen,
ich habe mir dieses etwas älteren Beitrag durchgelesen, weil ich auch auf der Suche nach einer Backuplösung mittels der Fritzbox bin.
Ich gebe mir alle Mühe das Script zu verstehen und nach und nach wird es klarer :)
Allerdings glaube ich nicht, dass ich mein vorhaben alleine hin bekomme und bitte darum um Unterstützung.
Ich möchte mit dem Crontab der Freetz-Version ein Backup von Dateien machen, die auf einem entfernten FTP-Server liegen. Diese Sollen 3mal am Tag downgeloadet werden und jeweils fortlaufend auf eine an der Fritzbox angeschlossene Partition gespeichert werden. Da es sich um kleine Dateien handelt, ist das löschen der vorherigen Backups nicht erforderlich und auch nicht gewünscht.
Wie kann ich das umsetzten? Meinem Verständnis nach müsste die Reihenfolge wie folgt aussehen:
1. Crontab ruft zu den angegebenen Zeiten ein Script auf....
2. In Script stellt eine Verbindung zu dem FTP-Server her
3. Läd entsprechende Dateien herunter
4. Komprimiert Datei(en)
5. Benennt sie um
6. Schreibt diese auf eine Partition (z.B uStor01)

ist das so richtig?
Und jetzt kommt meine größte Schwäche, nämlich das erzeugen des Scripts.... Dafür benötige ich Hilfe.

Ich würde mich über eure Hilfe freuen.
 
Ganz ehrlich hat nichts davon mit Freetz zu tun ausser, dass du Freetz auf deiner Box nutzt :D Es gibt denke ich Millionen Backup-Scripte im Netz, die wahrscheinlich nahezu alle irgendwie funktionieren. Wie wäre es, so eins entsprechend zu modifizieren?
 
Hallo Silent Tears,

danke für das anschupsen :)

Ich weiß, dass es natürlich unabhängig von Freetz ist.... Das diente nur der Umgebungserklärung :)

Nach einer Weile habe ich ein Script gefunden, von dem ich denke, dass es funktionieren sollte. Ich habe das so, wie es unten steht (natürlich mit anderen Zugangsdaten und Dateinamen) versucht mit RudisShell aus zu führen. Leider kommt nix... Ich finde auch nirgends eine Log Datei, daher ist die Fehlersuche sehr schwierig...
Kannst Du einen Fehler entdecken?

<?php
$ftp_server = "xyz.de";
$ftp_user_name = "xyz-benutzername";
$ftp_user_pass = "xyz-passwort";
$date = date("Y-n-d"); // Datum: Jahr-Monat-Tag
$destination = "/var/media/ftp/uStro02/bu/yxz-datei" . $date . ".db";
$source_file = "yxz-datei.db";

// Open the connection

$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if((!$conn_id) || (!$login_result))
{
die("Connection could not be established.");
}

// Get the file from FTP

$download = ftp_get($conn_id, $destination, $source_file, FTP_BINARY);

if($download)
{

$fp = fopen($destination, "r");
while($line = fgets($fp, 4096))
{
$file_content .= $line;
}

fclose($fp);
ftp_quit($conn_id);
 
Dir ist schon klar, dass das ein PHP-Skript ist und wie man sowas ausführt!? :)

Gruß
Oliver
 
Hallo Oliver,

alleine Deine Frage treibt mir ein ungutes Gefühl in die Magengegend :)
Ich vermute, dass es nicht funktioniert, dieses Script mit Rudis.Shell zu testen?

Wie wird denn dieses Script gestartet, oder was für ein Script kann ich denn überhaupt auf der Fritzbox starten?
 
Du solltest nach Shell-Skripten suchen. Diese beginnen oft mit der Zeile "#!/bin/sh". "#!/bin/bash" könnte evtl. laufen.

Gruß
Oliver
 
Hallo Oliver,
ich muss das glaube ich erst mal aufgeben, Beim googlen habe ich einige Scripts gefunden, die sich allerdings umgekehrt mit dem hoch laden lokaler Backups beschäftigen.
Andere wiederum behandeln das Thema MySQL

dennoch danke für den Hinweis
 
Abgesehen davon gibt es solche Programme, wie rsync und sonstiges, die sowas tun... Außerdem ist die Box wirklich nicht gerade die schnellste, um solche Aufgaben zu lösen. Wenn es wirklich nur kleine Dateien sind und wirklich nur drei Mal am Tag, dann könnte es noch gehen...
Hol doch bitte raus: Was sind es denn für drei Dateien? Was speicherst du da drin? Deine Passwörter? Deine Kontakte? Deine Bookmarks vom Browser? Für all dies gibt es Lösungen, die zwar mit FREETZ weniger zu tun haben und hier langsam OT werden, ich könnte dir aber trotzdem ausnahmsweise in 2-3 Zeilen einige OpenSource-Tools nennen, die sowas bewerkstelligen. All diese Lösunge arbeiten aber meistens darauf, dass man eine zentrale Ablagestelle hat. Mit der synchronisieren sich dann die Clients.

MfG
 
hallo zusammen,
nach dem ich euren Hinweise und Tips gefolgt bin, habe ich folgendes Script gefunden und ein bißchen angepasst.

#!/bin/bash

### getFTP v.1 #################
#
# Variables : use backquotes!#
DATE=`date +%Y%m%d`
HOME='/var/media/ftp/uStor02/bu'
#
HOST='xxxxxxx.de'
USER='xxxxxx'
PASSWD='xxxxxxx'
FILE='*.*'
#
####################################

# Make directory of current date, make that directory local
mkdir $HOME/$DATE
cd $HOME/$DATE

# Login, run get files
ftp -inv $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
mget $FILE
!ls > $DATE.list
bye

# Cleanup
exit 0


ich habe es im Terminal unter Ubuntu mit etwas anderen Ziefpfaden gestartet. Es hat reibungslos funktioniert.
Nach dem ich versucht habe, das auf der FB mit dem RudiShell zu starten, hat er zwar das Verzeichnis angelegt, aber die Dateien nicht heruntergeladen.
Jetzt weiß ich natürlich nicht, ob er überhaupt eine Verbindung zum FTP aufgebaut hat, oder nicht, da ich kein Protokoll erstellen kann.

hat da jemand einen Tip für mich?

Vielen Dank für das geduldige mitlesen.
 
1. Wir haben per see kein bash auf der Box. Das muss man schon extra installieren. Und zwischen bash und ash gibt es einige feine Unterschiede
2. Benutze bitte code-Tags
3. Ich weiß nicht, ob dieser Konstrukt mit ftp und alles was danach folgt überhaupt bei uns läuft. Ich weiß nicht, ob wir einen Klient namens "ftp" haben und ob unser ftp-Klient sich mit solchen Befehlen (oder was das auch immer ist), wie quote, mget, bye steuern lässt
4. Es gibt doch fertige Lösungen, hatte ich dir oben erzählt (z.B. rsync). Warum fängst du an das Rad neu zu erfinden? Vor allem, wenn du anscheinend überhaupt Null Ahnung davon hast. Es ist natürlich schön für dich dabei was zu lernen, aber müssen denn alle an deinem mühsamen Lernprozess teilhaben?

MfG
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.