Unsere Hardware im Haus:
Server
Der Server besteht aus günstiger Consumer Hardware, darin hängen 2 4tb Platten. Darauf läuft bei mir ein Debian, ohne Desktop Enviroment.
Er ist der Zentrale teil bei uns, er dient als Datengrab. Im Netzwerk (SMB) ist nur eine der beiden Platten zu sehen, darauf können alle Daten gelagert werden. Der Server sichert sich mittels Cronjob 1* täglich selber auf die zweite interne Platte.
Grober Aufbau der Struktur, auf dem Server:
Der Media Ordner wird 2 die Woche auf eine externe Platte gesichert, dann kann ich die jederzeit abziehen und irgendwo mit hinnehmen. Im Ordner Sites wird bei der täglichen Sicherung auch alles in der MySql Datenbank gesichert.
Sehr wichtige Daten schubse ich noch in GoogleDrive, zum einbinden von Drive nutze ich "google-drive-ocamlfuse".
Die Apple Clients sichern sich täglich auf dem Server, hier wird eigentlich nur die homedirectory gesichert, mit ein paar excludes. Das Linuxnotebook sichert seine homedirectory mit einigen ausnahmen auf dem Server.
Die Android Geräte sichern Bilder, Videos, Kontakt, etc. in die GoogleCloud - zusätzliche sichern wir diesen ab und an mit dem SolidExplorer auf den Server.
Das Windows Notebook hat nur Software, jegliche Daten werden auf dem Server gelagert, deshalb ist uns hier eine Sicherung nicht so wichtig.
Script zum sichern:
dieses script wird über den crontab von Linux gestartet, es ruft alle scripte im ordner "backup.d" auf, und führt diese aus.
Auszüge der Sicherungsscripte:
Auf der Backupplatte ist zusätzlich ein "Deleted" Ordner, in den wird temporär alles verschoben, was auf dem Datengrab entfernt wurde. Der Ordner wird ab und an von Hand geleert.
Datenbanken:
Sites/Repos:
da ich relativ viel javascript mache und der node_modules ordner immer relativ groß ist, sichere ich diesen nicht mit, die sicherung findet ganz klassisch über rsync statt.
Das Script für "Media" und "Daten" sieht ähnlich aus. Auch die Sicherung auf die Externe HDD sieht so aus, nur gibt es hier keinen "Deleted" Ordner, dieses Script wird über crontab Seperat gestartet.
Zur Überwachung nutze ich Cockpit, für meine Backups habe ich ein extra plugin geschrieben, welches die logs anzeigen kann. Plugin ist im Anhang, muss in dem Ordner "~/.local/share/cockpit/" als "backup" abgelegt werden. In der Javascript datei (backup.js) muss noch der Pfad zu den Logfiles eingetragen werden.
Das ist unsere Backuplösung Zuhause, sicherlich nicht Ideal, weil kaum extern abgesichert. Und auch bestimmt nicht ganz "nutzerfreundlich" weil die maus eigentlich keine funktion hat aber es tut was es soll und das schon seit jahren.
- Raspberry Pi´s als Streamboxen (Kodi)
- FireTV Stick als Streambox (Kodi, Prime, ...)
- MacBook - Arbeitsgerät
- Standpc - Hackintosh - Arbeitsgerät
- Windows Notebook - Freundin
- Linux Notebook - private spielerei
- Android Telefone
- Server - 24/7 an
Server
Der Server besteht aus günstiger Consumer Hardware, darin hängen 2 4tb Platten. Darauf läuft bei mir ein Debian, ohne Desktop Enviroment.
Er ist der Zentrale teil bei uns, er dient als Datengrab. Im Netzwerk (SMB) ist nur eine der beiden Platten zu sehen, darauf können alle Daten gelagert werden. Der Server sichert sich mittels Cronjob 1* täglich selber auf die zweite interne Platte.
Grober Aufbau der Struktur, auf dem Server:
- Media - Filme, Musik, Serien
- Daten - Arbeitsdaten, Ablage, Software, Etc.
- Sites - Webserver, Repo für git
Der Media Ordner wird 2 die Woche auf eine externe Platte gesichert, dann kann ich die jederzeit abziehen und irgendwo mit hinnehmen. Im Ordner Sites wird bei der täglichen Sicherung auch alles in der MySql Datenbank gesichert.
Sehr wichtige Daten schubse ich noch in GoogleDrive, zum einbinden von Drive nutze ich "google-drive-ocamlfuse".
Die Apple Clients sichern sich täglich auf dem Server, hier wird eigentlich nur die homedirectory gesichert, mit ein paar excludes. Das Linuxnotebook sichert seine homedirectory mit einigen ausnahmen auf dem Server.
Die Android Geräte sichern Bilder, Videos, Kontakt, etc. in die GoogleCloud - zusätzliche sichern wir diesen ab und an mit dem SolidExplorer auf den Server.
Das Windows Notebook hat nur Software, jegliche Daten werden auf dem Server gelagert, deshalb ist uns hier eine Sicherung nicht so wichtig.
Script zum sichern:
dieses script wird über den crontab von Linux gestartet, es ruft alle scripte im ordner "backup.d" auf, und führt diese aus.
[src=bash]
#!/bin/bash
date=`date +%Y-%m-%d`
dateMonth=`date +%Y-%m`
scriptDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
logDir=$scriptDir/logs/$dateMonth
mkdir -p $logDir
echo "Start Backup" $date >> $logDir/"$date""_00-backup.txt"
for i in $scriptDir/backup.d/*sh; do
IFS="/" read -a fileName <<< "$i"
file="${fileName[-1]}"
logName=${file::-3}
echo "Script Running" $logName >> $logDir/"$date""_00-backup.txt"
${i} >> $logDir/"$date"_$logName.txt
echo "Script Done" $logName >> $logDir/"$date""_00-backup.txt"
done
./clearlog.sh
echo "Backup Done" $date >> $logDir/"$date""_00-backup.txt"
echo "-----------------------------------------------------------" $date >> $logDir/"$date""_00-backup.txt"
[/src]
#!/bin/bash
date=`date +%Y-%m-%d`
dateMonth=`date +%Y-%m`
scriptDir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
logDir=$scriptDir/logs/$dateMonth
mkdir -p $logDir
echo "Start Backup" $date >> $logDir/"$date""_00-backup.txt"
for i in $scriptDir/backup.d/*sh; do
IFS="/" read -a fileName <<< "$i"
file="${fileName[-1]}"
logName=${file::-3}
echo "Script Running" $logName >> $logDir/"$date""_00-backup.txt"
${i} >> $logDir/"$date"_$logName.txt
echo "Script Done" $logName >> $logDir/"$date""_00-backup.txt"
done
./clearlog.sh
echo "Backup Done" $date >> $logDir/"$date""_00-backup.txt"
echo "-----------------------------------------------------------" $date >> $logDir/"$date""_00-backup.txt"
[/src]
Auszüge der Sicherungsscripte:
Auf der Backupplatte ist zusätzlich ein "Deleted" Ordner, in den wird temporär alles verschoben, was auf dem Datengrab entfernt wurde. Der Ordner wird ab und an von Hand geleert.
Datenbanken:
[src=bash]
#!/bin/bash
# anpassen!
targetDir="target/directory/"
mySqlUser="username please"
mySqlPass="password please"
databases=$(mysql -u $mySqlUser -p$mySqlPass -e "SHOW DATABASES;")
for DB in ${databases[@]}; do
if [ $DB != "performance_schema" ]; then
if [ $DB != "information_schema" ]; then
if [ $DB != "Database" ]; then
echo "Backing up Database" "$DB"
mysqldump -u $mySqlUser -p$mySqlPass $DB > $targetDir/$DB.sql
fi
fi
fi
done%
[/src]
#!/bin/bash
# anpassen!
targetDir="target/directory/"
mySqlUser="username please"
mySqlPass="password please"
databases=$(mysql -u $mySqlUser -p$mySqlPass -e "SHOW DATABASES;")
for DB in ${databases[@]}; do
if [ $DB != "performance_schema" ]; then
if [ $DB != "information_schema" ]; then
if [ $DB != "Database" ]; then
echo "Backing up Database" "$DB"
mysqldump -u $mySqlUser -p$mySqlPass $DB > $targetDir/$DB.sql
fi
fi
fi
done%
[/src]
Sites/Repos:
da ich relativ viel javascript mache und der node_modules ordner immer relativ groß ist, sichere ich diesen nicht mit, die sicherung findet ganz klassisch über rsync statt.
Das Script für "Media" und "Daten" sieht ähnlich aus. Auch die Sicherung auf die Externe HDD sieht so aus, nur gibt es hier keinen "Deleted" Ordner, dieses Script wird über crontab Seperat gestartet.
[src=bash]
#!/bin/bash
backupDir="/ordner/in/den/gesichert/werden/soll"
source="/ordern/der/gesichert/werden/soll/"
target=$backupDir"/Sites/"
deletedDir=$backupDir"/Deleted/Sites/"
additional="--exclude node_modules" # keine node_modules
rsync -ahu --numeric-ids --delete $additional --stats -b --backup-dir=$deletedDir $source $target%
[/src]
#!/bin/bash
backupDir="/ordner/in/den/gesichert/werden/soll"
source="/ordern/der/gesichert/werden/soll/"
target=$backupDir"/Sites/"
deletedDir=$backupDir"/Deleted/Sites/"
additional="--exclude node_modules" # keine node_modules
rsync -ahu --numeric-ids --delete $additional --stats -b --backup-dir=$deletedDir $source $target%
[/src]
Zur Überwachung nutze ich Cockpit, für meine Backups habe ich ein extra plugin geschrieben, welches die logs anzeigen kann. Plugin ist im Anhang, muss in dem Ordner "~/.local/share/cockpit/" als "backup" abgelegt werden. In der Javascript datei (backup.js) muss noch der Pfad zu den Logfiles eingetragen werden.
Das ist unsere Backuplösung Zuhause, sicherlich nicht Ideal, weil kaum extern abgesichert. Und auch bestimmt nicht ganz "nutzerfreundlich" weil die maus eigentlich keine funktion hat aber es tut was es soll und das schon seit jahren.