Backup/Backuperstellung auf/mit dem Cubietruck...

Begonnen von moonsorrox, 24 August 2014, 13:33:28

Vorheriges Thema - Nächstes Thema

moonsorrox

da es sicher einige Leute gibt die das Thema Sicherung auf/mit dem Cubietruck mit Hilfe von Linux-eigenen Bordmitteln interessiert also dieses Thema hier.

@HCS
hat ja schon einiges dazu geschrieben... wäre schön wenn das hier rein kopiert wird
Dann bin ich mal gespannt wie andere das erledigen und schön wäre es wenn es hier bald einige Beispiele gibt.

Ich muss mich erst einmal ausgiebig mit dem Thema beschäftigen und dann brauchen wir auch nicht in anderen Foren danach suchen...
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

moonsorrox

ich habe nun erste Erfolge mit "rsync"

Ich habe mir eine automatische Sicherung per crontab erstellt, die mir mein Verzeichnis /opt von Fhem automatisch an einem bestimmten Tag/Zeit sichert.
Gesichert werden soll auf einem NAS welches in meinem Netzwerk hier zuhause steht

Folgende Vorgehensweise bei:
Backup der von /opt

##### Verzeichnis für Fhem Backup auf dem Cubietruck erstellen
mkdir -p /mnt/share/MD0_DATA/Sicherung/Backup_FHEM


##### Rechte anpassen
chmod 755 /mnt/share/MD0_DATA/Sicherung/Backup_FHEM


##### jetzt den Mount für Fhem auf dem Fhem Server erstellen
mount <IP vom NAS>:/Sicherung/Backup_FHEM /mnt/share/MD0_DATA/Sicherung/Backup_FHEM


##### Nun solltest Du die NFS Freigabe sehen, in der Ausgabe von
df -h
##### Ergebnis sieht so aus
<IP vom NAS>:/Sicherung/Backup_FHEM  1,8T  395G  1,5T  22% /mnt/share/MD0_DATA/Sicherung/Backup_FHEM


##### jetzt die Sicherung mit rsync
##### hier wird der Ordner "/opt" gesichert
rsync -a /opt /mnt/share/MD0_DATA/Sicherung/Backup_FHEM


###### NFS Freigaben automatisch eingehängen
###### dies geschieht in der Datei "fstab" folgendermaßen
nano /etc/fstab


##### das wird eingetragen
<IP vom NAS>:/Sicherung/Backup_FHEM /mnt/share/MD0_DATA/Sicherung/Backup_FHEM    nfs      rw,sync,hard,intr  0     0



crontab anlegen

##### mit dem Befehl
nano /etc/crontab

##### Startet jeden Samstag um 22:10 obiges Backup
10 22   * * 6   root    rsync -a /opt /mnt/share/MD0_DATA/Sicherung/Backup_FHEM



sicher gibt es noch einiges zu verbessern, in Form von Scripten die mehrere Aufgaben erledigen können, aber ich habe erst einmal ein funktionierendes automatisches Backup..

Jeder kann hier seine Varianten darstellen, es würde mich freuen, denn gerade in Sachen Backup gibt es ne Menge zu erlernen  8)
Ich hoffe es ist alle soweit richtig, funktionieren tut es ja bei mir ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

HCS

Zitat von: moonsorrox am 24 August 2014, 13:33:28
@HCS
hat ja schon einiges dazu geschrieben... wäre schön wenn das hier rein kopiert wird
Was er hiermit getan hat. Hier der Beitrag aus dem anderen Thread. Ich lösche ihn dann dort.

Hier noch ein paar Anregungen, wie man Backups machen kann.
Das ist auch als Anregung zu verstehen, muss man für sich entscheiden, was man braucht, sich einarbeiten in das Thema, dass man es versteht und dann entsprechend Anpassen.
Aber oft ist ja der Punkt, wie man etwas generell angeht, die erste Hürde.

Alle Hosts und user habe ich natürlich hier anonymisiert  ;)

Das und einiges mehr zieht mein Cubie jede Nacht einmal durch.
Die Backup-Platte vom Cubie, auf der alles gesammelt wird, wird dann nochmal auf ein räumlich entferntes NAS gespiegelt, weil wenn der Keller ausbrennt, dann ist auch das Backup, das 30 cm. neben den Daten steht,  dahin.

Mein System ist so aufgebaut:
Cubietruck
- "Igor-Debian", boot aus NAND, rootfs auf SATA
- zwei 2TB Platten per USB, gemountet in /mnt/usb/NAS und /mnt/usb/backup
- JeeLink an USB
- FHEM


Backup der homepage
es gibt dort einen ftp-user "fhem" mit dem passwort "myPassWord"
curlftps muss mit apt-get curlftps installiert sein
curlftpfs ftp://www.homepage.com/html /mnt/tmp -o user=fhem:myPassWord,allow_other
rsync -avx -p --delete --chmod=a+rwx,g+rwx,o+rwx /mnt/tmp/ /mnt/usb/backup/Homepage/www.homepage.com/html/
umount /mnt/tmp


Backup der NAS Files
Der Cubie ist bei mir auch NAS
Ich habe ein 2TB Platte für NAS und eine weitere für Backups per USB dran
rsync -avx --delete /mnt/usb/nas/ /mnt/usb/backup/NAS/

Backup vom System
Ich habe permanent /dev/nand1 in /boot gemountet
dd if=/dev/nand of=/mnt/usb/backup/Cubie/System/debian-nand-mbr.img bs=1M count=1
tar -zcvf /mnt/usb/backup/Cubie/System/cubie-bootfs.tgz /boot
tar -zcvf /mnt/usb/backup/Cubie/System/cubie-rootfs.tgz / --exclude=/mnt --exclude=cubie-rootfs.tgz --exclude=/sys --exclude=/proc --exclude=/boot


Backup der Files vom System
rsync -avx --delete / /mnt/usb/backup/Cubie/Files/


Backup der mySQL-Datenbanken auf einem entfernten WebServer
Script auf dem Cubie
dbList=(name1 name2 name3)
for i in "${dbList[@]}"
do
  curl 'http://www.homepage.com/backup/backup_mysql.php?dbname='$i'&filename='$i'.sql'
  wget -O '/mnt/usb/backup/Homepage/www.homepage.com/mysql/'$i'.sql' 'http://www.homepage.com/backup/'$i'.sql'
done


backup_mysql.php liegt auf dem WebServer und sieht so aus:
<?php

 $dbname 
$HTTP_GET_VARS["dbname"];
 
$filename $HTTP_GET_VARS["filename"];
  
backup_tables('localhost','user','password'$dbname$filename);

echo 
"OK";

function 
backup_tables($host$user$pass$name$filename$tables '*') {
$link mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);

if($tables == '*'){
$tables = array();
$result mysql_query('SHOW TABLES');
while($row mysql_fetch_row($result)){
$tables[] = $row[0];
}
}
else{
$tables is_array($tables) ? $tables explode(',',$tables);
}

foreach($tables as $table){
$result mysql_query('SELECT * FROM '.$table);
$num_fields mysql_num_fields($result);

$return.= 'DROP TABLE '.$table.';';
$row2 mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
$return.= "\n\n".$row2[1].";\n\n";

for ($i 0$i $num_fields$i++){
while($row mysql_fetch_row($result)){
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0$j<$num_fields$j++) {
$row[$j] = addslashes($row[$j]);
$row[$j] = ereg_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
}
$return.="\n\n\n";
}

  
$handle fopen($filename,'w+');
fwrite($handle,$return);
fclose($handle);
  
}
?>


HCS

Da mich gerade jemand per PM gefragt hat, wie man Backups mit Wochentagen macht.

Hier das script, das ich verwende, um Backups im Wochenumlauf zu machen.
Soll meinen: es entsteht für jeden Wochentag ein File mit einem Komplettbackup des rootfs, das den Namen des entsprechenden Tages hat.
Man kann also immer eine Woche Tag für Tag zurück.
Das log vom Backupvorgang wird täglich überschrieben.

Ergebnis:
Cubie_Monday.tar.gz
Cubie_Tuesday.tar.gz
usw.

Am Montag drauf wird dann der letzte Montag überschrieben.

Das script muss man natürlich an seine eigenen Gegebenheiten anpassen.

target="/mnt/backup/Cubie/Files/Cubie_$(date +'%A').tar.gz"

echo "Cubie - Files" > /tools/backup/log/backup_Cubie_files.log
echo "================================================================================" >> /tools/backup/log/backup_Cubie_files.log

rm ${target}
tar -cpvzf ${target} / --exclude=/lib/modules --exclude=/sys --exclude=/proc --exclude=/mnt >> /tools/backup/log/backup_Cubie_files.log


moonsorrox

jetzt mal eine Frage zu einem backup welches ich manuell mit rsync angestoßen habe...

rsync sollte also meine gesamte Musik vom Cubie auf mein NAS schieben, von genau 115 GB sind es gerade mal ca 22GB geworden..! schön wäre es gewesen, wenn das geklappt hätte...! Aber warum hat das manuelle Backup nicht geklappt welches ich mir rsync gemacht habe..?

Das nächste zu den Scripten die ein Backup von Dateien machen sollen, da hatte ich ja einige schon im Internet gesucht.
Egal ob nun die Scripte im Inhalt richtig waren - dass wollte ich ja eben ausprobieren - ich konnte sie gar nicht starten weil er immer sagte da wo ich sie hin gepackt habe sie existieren nicht...

Wo legt man diese denn nun logischerweise ab, wenn man sie mit einem crontab starten will, dass ist doch eigentlich egal oder, wenn der Pfad stimmt..!
Aber wenn ich ein Script z.B. backup.sh in /root ablege dann starte ich es doch auch dort, auch manuell..
so z.B. ./backup.sh oder eben /root/backup.sh oder habe ich da einen Denkfehler..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

HCS

Zitat von: moonsorrox am 25 August 2014, 14:04:22
Wo legt man diese denn nun logischerweise ab, wenn man sie mit einem crontab starten will, dass ist doch eigentlich egal oder, wenn der Pfad stimmt..!
Aber wenn ich ein Script z.B. backup.sh in /root ablege dann starte ich es doch auch dort, auch manuell..
so z.B. ./backup.sh oder eben /root/backup.sh oder habe ich da einen Denkfehler..?
Hast es vemutlich nicht mit chmod ausführbar gemacht.

moonsorrox

Zitat von: HCS am 25 August 2014, 14:30:30
Hast es vemutlich nicht mit chmod ausführbar gemacht.

klar...!  ;) das ist ja das wenigste... chmod 755 richtig
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moonsorrox

vielen Dank  ;)
wann wird denn 755 verwendet..?
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

moonsorrox

Ok, mein script läuft nun durch und sichert alles was gefehlt hat, ich habe ein sehr gutes gefunden, aufwendig aber es macht erst mal alles was es soll.
Gefunden habe ich es hier

schickt mir allerdings keine Mail...!  ;)

Ich hatte einige gefunden aber keines lief richtig, oder funktionierte erst gar nicht, habe nochmal ein bis zwei probiert auch (richtig) ausführbar gemacht, ging aber nicht.

Das finde ich ganz gut, zumindest für Leute wie mich  ;)
Es lassen sich beliebig viele Backup-Profile konfigurieren (mit unterschiedlichen Verzeichnissen und Einstellungen).
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Tobias

Hi,
Fehler oder Warnmeldungen  gibt zuhauf bei sockets:
tar: /opt/www/clients/client4/web11/dev/log: Socket ignoriert

Kann man damit umgehen:find $backupdir -type s > /tmp/sockets
tar cvzf backup.tgz $backupdir --exclude-from=/tmp/sockets
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter