Backup: Difference between revisions
| Line 335: | Line 335: | ||
</pre> | </pre> | ||
= backup server configs van uit backup2bit = | = backup server configs van uit backup2bit = | ||
Elke dag worden van alle servers de /etc directory gekopieerd naar /disk/backup/'''servernaam'''/etc/.<br> | |||
Ook wordt van elke server een lijst gemaakt en in file gezet /disk/backup/'''servernaam'''/pakketten.lijst<br> | |||
van de volgende servers stellen we ook /usr/local/hobbynet directrory structuur veilig | |||
* redirect-lb1-int | |||
* redirect-lb2-int | |||
* domein-int | |||
* ns3 | |||
* ns4 | |||
* mail-lb1-int | |||
* mail-lb2-int | |||
== script /usr/local/hobbynet/bin/backup_server_configs== | |||
<pre> | |||
#!/bin/sh | |||
LOGFILE="/var/log/backup_all.log" | |||
HNET_LIB=/usr/local/hobbynet/lib | |||
HNET_LOCK=$HNET_LIB/backup_server_configs.lock | |||
VMSUBN=$HNET_LIB/vms-ubuntu | |||
HWUBN=$HNET_LIB/hw-ubuntu | |||
HNET_LOCK_TIME=180 | |||
if [ -e $HNET_LOCK ]; then | |||
echo "lock file $HNET_LOCK gedetecteerd" >&2 | |||
if test "`find $HNET_LOCK -mmin +$HNET_LOCK_TIME`" | |||
then | |||
echo "Lock file $HNET_LOCK is ouder dan $HNET_LOCK_TIME minuten en is daarom verwijderd" >&2 | |||
rm $HNET_LOCK | |||
else | |||
echo "Script $0 draait op moment al " >&2 | |||
echo "Is dit niet het geval, verwijder $HNET_LOCK en draai het script opnieuw" >&2 | |||
exit | |||
fi | |||
fi | |||
# Create the lockfile | |||
touch $HNET_LOCK | |||
logger -p auth.notice "=*= backup_server_configs started on server backup2bit =*=" | |||
echo "Bezig met backuppen van de server configuraties" | |||
echo "Bezig met backuppen van de server configuraties" >>"$LOGFILE" | |||
date >>"$LOGFILE" | |||
for SERVER in `cat $VMSUBN` | |||
do | |||
echo "Bezig met het backuppen van $SERVER/etc" | |||
echo "Bezig met het backuppen van $SERVER/etc" >>"$LOGFILE" | |||
# Maak de directory structuur aan (mag ook als deze al bestaat) | |||
mkdir -p /disk/backup/$SERVER/etc | |||
# Haal de leesrechten weg voor de wereld | |||
chmod o-x /disk/backup/$SERVER | |||
# Copieer de gehele /etc structuur | |||
# - Negeer eventuele .svn mappen etc. (--cvs-exclude) | |||
# - Verwijder lokale bestanden die inmiddels op de server niet meer bestaan | |||
rsync -a root@$SERVER:/etc/ /disk/backup/$SERVER/etc/ -r -t --cvs-exclude --delete | |||
if [ $? -ne 0 ] | |||
then | |||
echo "!!! rsync van map /etc (server $SERVER) is fout gelopen!" | |||
fi | |||
echo "Verzamel alle geinstalleerde pakketten voor $SERVER" | |||
echo "Verzamel alle geinstalleerde pakketten voor $SERVER" >>"$LOGFILE" | |||
ssh root@$SERVER dpkg --get-selections | grep -v deinstall >/disk/backup/$SERVER/pakketten.lijst | |||
done | |||
for SERVER in `cat $VMSUSE` | |||
do | |||
echo "Bezig met het backuppen van $SERVER/etc" | |||
echo "Bezig met het backuppen van $SERVER/etc" >>"$LOGFILE" | |||
# Maak de directory structuur aan (mag ook als deze al bestaat) | |||
mkdir -p /disk/backup/$SERVER/etc | |||
# Haal de leesrechten weg voor de wereld | |||
chmod o-x /disk/backup/$SERVER | |||
# Copieer de gehele /etc structuur | |||
# - Negeer eventuele .svn mappen etc. (--cvs-exclude) | |||
# - Verwijder lokale bestanden die inmiddels op de server niet meer bestaan | |||
rsync -a root@$SERVER:/etc/ /disk/backup/$SERVER/etc/ -r -t --cvs-exclude --delete | |||
if [ $? -ne 0 ] | |||
then | |||
echo "!!! rsync van map /etc (server $SERVER) is fout gelopen!" | |||
fi | |||
done | |||
for SERVER in `cat $HWUBN` userstore1-int userstore2-int | |||
do | |||
echo "Bezig met het backuppen van $SERVER/etc" | |||
echo "Bezig met het backuppen van $SERVER/etc" >>"$LOGFILE" | |||
# Maak de directory structuur aan (mag ook als deze al bestaat) | |||
mkdir -p /disk/backup/$SERVER/etc | |||
# Haal de leesrechten weg voor de wereld | |||
chmod o-x /disk/backup/$SERVER | |||
# Copieer de gehele /etc structuur | |||
# - Negeer eventuele .svn mappen etc. (--cvs-exclude) | |||
# - Verwijder lokale bestanden die inmiddels op de server niet meer bestaan | |||
rsync -a root@$SERVER:/etc/ /disk/backup/$SERVER/etc/ -r -t --cvs-exclude --delete | |||
if [ $? -ne 0 ] | |||
then | |||
echo "!!! rsync van map /etc (server $SERVER) is fout gelopen!" | |||
fi | |||
# echo "Als er een locale directory /usr/local/hobbynet/local bestaat, maak daar dan ook een backup van" >>"$LOGFILE" | |||
# echo "Als er een locale directory /usr/local/hobbynet/local bestaat, maak daar dan ook een backup van" | |||
# rsync -a root@$SERVER:/usr/local/hobbynet/local /disk/backup/$SERVER/usr/local/hobbynet/local -r -t --cvs-exclude --delete | |||
echo "Verzamel alle geinstalleerde pakketten voor $SERVER" | |||
echo "Verzamel alle geinstalleerde pakketten voor $SERVER" >>"$LOGFILE" | |||
ssh root@$SERVER dpkg --get-selections | grep -v deinstall >/disk/backup/$SERVER/pakketten.lijst | |||
done | |||
SERVER="scripting-int" | |||
echo "Bezig met het backuppen van $SERVER/usr/local/hobbynet" | |||
echo "Bezig met het backuppen van $SERVER/usr/local/hobbynet" >>"$LOGFILE" | |||
mkdir -p /disk/backup/$SERVER/usr/local/hobbynet | |||
# Maak geen backup van enige directory met de naam "Old" | |||
rsync -a root@$SERVER:/usr/local/hobbynet/ /disk/backup/$SERVER/usr/local/hobbynet/ -r -t --cvs-exclude --exclude /home --exclude="Old" --delete | |||
if [ $? -ne 0 ] | |||
then | |||
echo "!!! rsync van map /usr/local/hobbynet (server $SERVER) is fout gelopen!" | |||
fi | |||
# Van deze servers moet de gehele /usr/local/hobbynet omgeving veilig worden gesteld | |||
for SERVER in redirect-lb1-int redirect-lb2-int domein-int ns3 ns4 mail-lb1-int mail-lb2-int | |||
do | |||
echo "Bezig met het backuppen van $SERVER/usr/local/hobbynet" | |||
echo "Bezig met het backuppen van $SERVER/usr/local/hobbynet" >>"$LOGFILE" | |||
mkdir -p /disk/backup/$SERVER/usr/local/hobbynet | |||
rsync -a root@$SERVER:/usr/local/hobbynet/ /disk/backup/$SERVER/usr/local/hobbynet -r -t --cvs-exclude --exclude /home --exclude /firewall --delete | |||
if [ $? -ne 0 ] | |||
then | |||
echo "!!! rsync van map /usr/local/hobbynet (server $SERVER) is fout gelopen!" | |||
fi | |||
done | |||
echo "klaar met backup van de server configuraties" >>"$LOGFILE" | |||
date >>"$LOGFILE" | |||
echo "------------" >>"$LOGFILE" | |||
echo "klaar met backup van de server configuraties" | |||
# Finally remove the file lock | |||
rm $HNET_LOCK | |||
logger -p auth.notice "=*= backup_server_configs finished on server backup2bit =*=" | |||
</pre> | |||
Revision as of 11:51, 10 February 2019
backup naar bit
Via backup2bit trekt elke nacht rond 01:00 een back-up met snap shots van onze server.
In de nacht van zondag op maandag wordt een full back-up getrokken.
De rest zijn incrimentals.
We bewaren 5 full back-up's en de dagelijkse backup's worden elke week overschreven.
back-up naar nas
Elke dag wordt met rsync een volledige back-up naar de nas getrokken zonder snapshots
script
#!/bin/bash
LOGFILE="/var/log/backup2nas.log"
HNET_LIB=/usr/local/hobbynet/lib
HNET_LOCK=$HNET_LIB/backup2nas.lock
MOUNTDIR=/mnt/backup-nas
BACKUPTARGET=$MOUNTDIR/disk
BACKUP_MOUNT_CHECK_FILE=$MOUNTDIR/ikbengemount.txt
HNET_LOCK_TIME=1200
if [ -e $HNET_LOCK ]; then
echo "lock file $HNET_LOCK gedetecteerd" >&2
if test "`find $HNET_LOCK -mmin +$HNET_LOCK_TIME`"
then
echo "`date +%F+%R` Lock file $HNET_LOCK is ouder dan $HNET_LOCK_TIME minuten en is daarom verwijderd" >&2
rm $HNET_LOCK
echo "het eventueel nog lopend rsync proces wordt getermineerd"
echo "backup naar $BACKUPTARGET loopt langer dan $HNET_LOCK_TIME minuten, daarom is dit proces getermineerd" | mail -s backup2nas rootmail@hobby.nl
logger -p auth.notice "=*= backup naar $BACKUPTARGET loopt langer dan $HNET_LOCK_TIME minuten, daarom is dit proces getermineerd =*="
pkill -f "rsync -a /disk/ $BACKUPTARGET -r -t --delete"
else
echo "Script $0 draait op moment al " >&2
echo "Is dit niet het geval, verwijder $HNET_LOCK en draai het script opnieuw" >&2
exit
fi
fi
touch $HNET_LOCK
logger -p auth.notice "=*= backup2nas started on server backup2bit =*="
echo "`date +%F+%R` bezig met backupen van /disk naar backup-hobbynet.hobby.nl" >>"$LOGFILE"
date >>"$LOGFILE"
if [ ! -e $BACKUP_MOUNT_CHECK_FILE ]; then
echo "$MOUNTDIR wordt gemount"
mount $MOUNTDIR
fi
if [ -e $BACKUP_MOUNT_CHECK_FILE ]; then
echo "`date +%F+%R` bezig met backupen van /disk naar $BACKUPTARGET"
rsync -a /disk/ $BACKUPTARGET -r -t --delete
echo "`date +%F+%R` klaar met backup van /disk naar backup-hobbynet.hobby.nl" >>"$LOGFILE"
date >>"$LOGFILE"
echo "------------" >>"$LOGFILE"
echo "`date +%F+%R` klaar met backup van /disk naar $BACKUPTARGET"
logger -p auth.notice "=*= backup2nas finished on server backup2bit =*="
fi
if [ ! -e $BACKUP_MOUNT_CHECK_FILE ]; then
echo "`date +%F+%R` backup van /disk naar $BACKUPTARGET MISLUKT"
echo "backup van /disk naar $BACKUPTARGET MISLUKT" | mail -s backup2nas rootmail@hobby.nl
logger -p auth.notice "=*= backup2nas MISLUKT on server backup2bit =*="
fi
back-up naar bas (offsite)
Elke dag wordt met rsync een volledige back-up naar de nas bij Bas getrokken zonder snapshots
Dit doen we stel er gebeurt er wat met BIT dan hebben we nog alles achter de hand.
De backup op de nas zijn volledig encrypted, encryptie sleutels zijn bekend bij Bas en Hans
script
#!/bin/bash
LOGFILE="/var/log/backup2bas.log"
HNET_LIB=/usr/local/hobbynet/lib
HNET_LOCK=$HNET_LIB/backup2bas.lock
MOUNTDIR=/mnt/backup-bas
BACKUPTARGET=$MOUNTDIR/disk
BACKUP_MOUNT_CHECK_FILE=$MOUNTDIR/ikbengemount.txt
HNET_LOCK_TIME=1200
if [ -e $HNET_LOCK ]; then
echo "lock file $HNET_LOCK gedetecteerd" >&2
if test "`find $HNET_LOCK -mmin +$HNET_LOCK_TIME`"
then
echo "`date +%F+%R` Lock file $HNET_LOCK is ouder dan $HNET_LOCK_TIME minuten en is daarom verwijderd" >&2
rm $HNET_LOCK
echo "het eventueel nog lopend rsync proces wordt getermineerd"
echo "backup naar $BACKUPTARGET loopt langer dan $HNET_LOCK_TIME minuten, daarom is dit proces getermineerd" | mail -s backup2bas rootmail@hobby.nl
logger -p auth.notice "=*= backup naar $BACKUPTARGET loopt langer dan $HNET_LOCK_TIME minuten, daarom is dit proces getermineerd =*="
pkill -f "rsync -a /disk/ $BACKUPTARGET -r -t --delete"
else
echo "Script $0 draait op moment al " >&2
echo "Is dit niet het geval, verwijder $HNET_LOCK en draai het script opnieuw" >&2
exit
fi
fi
touch $HNET_LOCK
logger -p auth.notice "=*= backup2bas started on server userstore1 =*="
echo "`date +%F+%R` bezig met backupen van /disk naar backup-hobbynet.hobby.nl" >>"$LOGFILE"
date >>"$LOGFILE"
if [ ! -e $BACKUP_MOUNT_CHECK_FILE ]; then
echo "$MOUNTDIR wordt gemount"
mount $MOUNTDIR
fi
if [ -e $BACKUP_MOUNT_CHECK_FILE ]; then
echo "`date +%F+%R` bezig met backupen van /disk naar $BACKUPTARGET"
rsync -a /disk/ $BACKUPTARGET -r -t --delete
echo "`date +%F+%R` klaar met backup van /disk naar backup-hobbynet.hobby.nl" >>"$LOGFILE"
date >>"$LOGFILE"
echo "------------" >>"$LOGFILE"
echo "`date +%F+%R` klaar met backup van /disk naar $BACKUPTARGET"
logger -p auth.notice "=*= backup2bas finished on server userstore1 =*="
fi
if [ ! -e $BACKUP_MOUNT_CHECK_FILE ]; then
echo "`date +%F+%R` backup van /disk naar $BACKUPTARGET MISLUKT"
echo "backup van /disk naar $BACKUPTARGET MISLUKT" | mail -s backup2bas rootmail@hobby.nl
logger -p auth.notice "=*= backup2bas MISLUKT on server userstore1 =*="
fi
rm $HNET_LOCK
database backups
Elke dag worden op alle databases gebackupt van de servers waar mysql op draait.
Voor tijden zie Cron jobs
script op backup2bit
Backup2bit roept de scripts op de individuele servers aan /usr/local/hobbynet/bin/backup_servernaam
Dit script voert eerst database onderhoud uit wat ongebruikte ruimte terug claimed, en dan een back-up gemaakt
#!/bin/sh SERVER="db01-int" REMOTE_MAP="/backup" LOCAL_MAP="/databases" LOGFILE="/var/log/backup_all.log" logger -p auth.notice "=*= backup $SERVER started on server backup2bit =*=" echo "bezig met backupen van $SERVER$REMOTE_MAP" >>"$LOGFILE" date >>"$LOGFILE" echo "bezig met backupen van $SERVER$REMOTE_MAP" echo "maak mysql backups op $SERVER" echo "maak mysql backups op $SERVER" >>"$LOGFILE" ssh root@$SERVER /usr/local/hobbynet/bin/database-onderhoud $SERVER ssh root@$SERVER /usr/local/hobbynet/bin/backup_mysql $SERVER mkdir /disk/backup/$SERVER$LOCAL_MAP -p chmod o-x /disk/backup/$SERVER$LOCAL_MAP rsync root@$SERVER:$REMOTE_MAP/ /disk/backup/$SERVER$LOCAL_MAP/ -r -t --cvs-exclude --delete echo "klaar met backup van $SERVER$REMOTE_MAP" >>"$LOGFILE" date >>"$LOGFILE" echo "------------" >>"$LOGFILE" echo "klaar met backup van $SERVER$REMOTE_MAP" logger -p auth.notice "=*= backup $SERVER finished on server backup2bit =*=" root@backup2bit:~# cat /usr/local/hobbynet/bin/backup_domein #!/bin/sh SERVER="domein-int" REMOTE_MAP="/backup" LOCAL_MAP="/databases" LOGFILE="/var/log/backup_all.log" logger -p auth.notice "=*= backup $SERVER started on server backup2bit =*=" echo "bezig met backupen van $SERVER$REMOTE_MAP" >>"$LOGFILE" date >>"$LOGFILE" echo "bezig met backupen van $SERVER$REMOTE_MAP" echo "maak mysql backups op $SERVER" echo "maak mysql backups op $SERVER" >>"$LOGFILE" ssh root@$SERVER /usr/local/hobbynet/bin/database-onderhoud $SERVER ssh root@$SERVER /usr/local/hobbynet/bin/backup_mysql $SERVER mkdir /disk/backup/$SERVER$LOCAL_MAP -p chmod o-x /disk/backup/$SERVER$LOCAL_MAP rsync root@$SERVER:$REMOTE_MAP/ /disk/backup/$SERVER$LOCAL_MAP/ -r -t --cvs-exclude --delete echo "klaar met backup van $SERVER$REMOTE_MAP" >>"$LOGFILE" date >>"$LOGFILE" echo "------------" >>"$LOGFILE" echo "klaar met backup van $SERVER$REMOTE_MAP" logger -p auth.notice "=*= backup $SERVER finished on server backup2bit =*="
script database-onderhoud
#!/bin/bash HNET_BIN=/usr/local/hobbynet/bin HNET_LIB=/usr/local/hobbynet/lib HNET_TMP=/usr/local/hobbynet/tmp HNET_LOCK=$HNET_TMP/database-onderhoud.lock DB_LOG=/var/log/dbonderhoud if [ -e $HNET_LOCK ]; then echo "Script $0 is already running" echo "If not, remove $HNET_LOCK and run again" exit fi # Create the lockfile touch $HNET_LOCK logger -p auth.notice "=*= Database onderhoud gestart =*=" echo "=*= Database onderhoud gestart =*=" >>$DB_LOG date >>$DB_LOG mysqlcheck -a --auto-repair --all-databases >>$DB_LOG mysqlcheck --auto-repair --optimize --all-databases >>$DB_LOG mysqlcheck -a --auto-repair --all-databases >>$DB_LOG echo "=*= Klaar met Database onderhoud =*=" >>$DB_LOG date >>$DB_LOG logger -p auth.notice "=*= Klaar met Database onderhoud =*=" # Finally remove the file lock rm $HNET_LOCK
script /usr/local/hobbynet/bin/backup_mysql
#! /bin/bash
#
# aanroepen met "backup_mysql <servernaam>"
# voorbeeld: ""backup_mysql db01-int"
#
TIMESTAMP=$(date +"%F")
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
MYSQLUSER=root
MAXAGEDAYS=7
SERVER=$1
DAG=$(date +%a)
DATUMVOLLEDIGNL=$(LC_TIME="nl_NL.UTF-8" date "+%A %d %B %Y")
TIJD=$(date +%H:%M)
BACKUPS="/backup"
BACKUP_DIR="$BACKUPS/$TIMESTAMP"
BACKUP_DIR_DB=$BACKUP_DIR/mysql
HNET_LIB=/usr/local/hobbynet/lib
HNET_TMP=/usr/local/hobbynet/tmp
HNET_LOCK=$HNET_TMP/backup_mysql.lock
EMAIL=backup@hobby.nl
BACKUPRAPPORT=$HNET_TMP/backuprapport
DUMPFAILED=0
if [ $# -eq 0 ]; then
echo "Servernaam *moet* als parameter meegegeven worden. Script zal niet draaien voordat dit is aangepast!" >&2
exit 1
fi
if [ -e $HNET_LOCK ]; then
echo "Script $0 is already running"
echo "If not, remove $HNET_LOCK and run again"
echo "$0 is locked. Please remove $HNET_LOCK and run again on $SERVER" | mail rootmail@hobby.nl -s Lockfile
exit
fi
# Create the lockfile
touch $HNET_LOCK
echo "$SERVER MySQL database backup gestart op $DATUMVOLLEDIGNL om $(date +%H:%M)" >>$BACKUPRAPPORT
logger -p auth.notice "=*= MySQL database backup gestart op $DATUMVOLLEDIGNL om $(date +%H:%M) =*="
printf "\n\r" >>$BACKUPRAPPORT
mkdir -p "$BACKUP_DIR_DB"
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|sys)"`
for db in $databases; do
# Dump this database
$MYSQLDUMP -u$MYSQLUSER --force --opt --single_transaction --databases $db --events >$BACKUP_DIR_DB/$db
if [[ $(tail -1 $BACKUP_DIR_DB/$db) != *"Dump completed on"* ]]; then
echo "** LET OP** Onverwachte output uit dump. Controleer database backup $db. De laatste regel van DUMP was:" >>$BACKUPRAPPORT
DUMPFAILED=1
fi
printf "%-25s: " "$db" >>$BACKUPRAPPORT
tail -1 $BACKUP_DIR_DB/$db >>$BACKUPRAPPORT
if [ -e $BACKUP_DIR_DB/$db.bz2 ]; then
rm $BACKUP_DIR_DB/$db.bz2
fi
bzip2 "$BACKUP_DIR_DB/$db"
done
chmod 600 $BACKUP_DIR/* -R
chmod +X $BACKUP_DIR/* -R
printf "\n\r" >>$BACKUPRAPPORT
echo "========================================================================" >>$BACKUPRAPPORT
echo "De volgende backups zijn ouder dan $MAXAGEDAYS dagen en worden dan ook verwijderd:" >>$BACKUPRAPPORT
echo "========================================================================" >>$BACKUPRAPPORT
printf "\n\r" >>$BACKUPRAPPORT
(echo "Bestand,Grootte" ;(find $BACKUPS -maxdepth 1 -type d -mtime +$MAXAGEDAYS -exec sh -c 'du -h "{}"' \;| sed "s|$BACKUPS/||"| awk '{ t = $1; $1 = $2; $2 = t; print; }'| sed 's| |,|' |sort))|column -t -n -s, >>$BACKUPRAPPORT
printf "\n\r" >>$BACKUPRAPPORT
find $BACKUPS -maxdepth 1 -type d -mtime +$MAXAGEDAYS -exec rm -rf {} \;
# Haal (tijdelijk) ook bestanden in het oude formaat weg (staan op /backup/mysql)
# (echo "Bestand,Grootte" ;(find $BACKUPS/mysql -type f -mtime +$MAXAGEDAYS -exec sh -c 'du -h "{}"' \;| sed "s|$BACKUPS/||"| awk '{ t = $1; $1 = $2; $2 = t; print; }'| sed 's| |,|' |sort))|column -t -n -s, >>$BACKUPRAPPORT
# printf "\n\r" >>$BACKUPRAPPORT
# find $BACKUPS/mysql -type f -mtime +$MAXAGEDAYS -exec rm -f {} \;
printf "\n\r" >>$BACKUPRAPPORT
echo "===============================================================" >>$BACKUPRAPPORT
echo "Overzicht van de huidige volledige database backups en grootte:" >>$BACKUPRAPPORT
echo "===============================================================" >>$BACKUPRAPPORT
printf "\n\r" >>$BACKUPRAPPORT
(echo "Bestand,Grootte" ;(du -S -h $BACKUP_DIR_DB/*|awk '{ t = $1; $1 = $2; $2 = t; print; }'|sed "s|$BACKUP_DIR_DB/||"|sed 's| |,|'|sort))|column -t -n -s, >>$BACKUPRAPPORT
printf "\n\r" >>$BACKUPRAPPORT
echo "===============================" >>$BACKUPRAPPORT
echo "Totale omvang van de bestanden:" >>$BACKUPRAPPORT
echo "===============================" >>$BACKUPRAPPORT
(echo "Bestand,Grootte" ;(du -h --max-depth=1 $BACKUPS|awk '{ t = $1; $1 = $2; $2 = t; print; }'|sed 's| |,|') |sort)|column -t -n -s, >>$BACKUPRAPPORT
printf "\n\r" >>$BACKUPRAPPORT
echo "===============================================================" >>$BACKUPRAPPORT
if [ $DUMPFAILED == 0 ]; then
echo "MySQL database backup afgerond op $DATUMVOLLEDIGNL om $(date +%H:%M)" >>$BACKUPRAPPORT
logger -p auth.notice "=*= MySQL database backup afgerond op $DATUMVOLLEDIGNL om $(date +%H:%M) =*="
cat $BACKUPRAPPORT | mail $EMAIL -s "MySQL Database backup rapport van $SERVER op $DATUMVOLLEDIGNL"
else
echo "MySQL database backup MISLUKT op $DATUMVOLLEDIGNL om $(date +%H:%M)" >>$BACKUPRAPPORT
logger -p auth.notice "=*= MySQL database backup MISLUKT op $DATUMVOLLEDIGNL om $(date +%H:%M) =*="
cat $BACKUPRAPPORT | mail $EMAIL -s "MySQL Database backup MISLUKT!!!!!! rapport van $SERVER op $DATUMVOLLEDIGNL"
fi
#remove backup report
rm $BACKUPRAPPORT
#remove the lockfile
rm $HNET_LOCK
backup server configs van uit backup2bit
Elke dag worden van alle servers de /etc directory gekopieerd naar /disk/backup/servernaam/etc/.
Ook wordt van elke server een lijst gemaakt en in file gezet /disk/backup/servernaam/pakketten.lijst
van de volgende servers stellen we ook /usr/local/hobbynet directrory structuur veilig
- redirect-lb1-int
- redirect-lb2-int
- domein-int
- ns3
- ns4
- mail-lb1-int
- mail-lb2-int
script /usr/local/hobbynet/bin/backup_server_configs
#!/bin/sh LOGFILE="/var/log/backup_all.log" HNET_LIB=/usr/local/hobbynet/lib HNET_LOCK=$HNET_LIB/backup_server_configs.lock VMSUBN=$HNET_LIB/vms-ubuntu HWUBN=$HNET_LIB/hw-ubuntu HNET_LOCK_TIME=180 if [ -e $HNET_LOCK ]; then echo "lock file $HNET_LOCK gedetecteerd" >&2 if test "`find $HNET_LOCK -mmin +$HNET_LOCK_TIME`" then echo "Lock file $HNET_LOCK is ouder dan $HNET_LOCK_TIME minuten en is daarom verwijderd" >&2 rm $HNET_LOCK else echo "Script $0 draait op moment al " >&2 echo "Is dit niet het geval, verwijder $HNET_LOCK en draai het script opnieuw" >&2 exit fi fi # Create the lockfile touch $HNET_LOCK logger -p auth.notice "=*= backup_server_configs started on server backup2bit =*=" echo "Bezig met backuppen van de server configuraties" echo "Bezig met backuppen van de server configuraties" >>"$LOGFILE" date >>"$LOGFILE" for SERVER in `cat $VMSUBN` do echo "Bezig met het backuppen van $SERVER/etc" echo "Bezig met het backuppen van $SERVER/etc" >>"$LOGFILE" # Maak de directory structuur aan (mag ook als deze al bestaat) mkdir -p /disk/backup/$SERVER/etc # Haal de leesrechten weg voor de wereld chmod o-x /disk/backup/$SERVER # Copieer de gehele /etc structuur # - Negeer eventuele .svn mappen etc. (--cvs-exclude) # - Verwijder lokale bestanden die inmiddels op de server niet meer bestaan rsync -a root@$SERVER:/etc/ /disk/backup/$SERVER/etc/ -r -t --cvs-exclude --delete if [ $? -ne 0 ] then echo "!!! rsync van map /etc (server $SERVER) is fout gelopen!" fi echo "Verzamel alle geinstalleerde pakketten voor $SERVER" echo "Verzamel alle geinstalleerde pakketten voor $SERVER" >>"$LOGFILE" ssh root@$SERVER dpkg --get-selections | grep -v deinstall >/disk/backup/$SERVER/pakketten.lijst done for SERVER in `cat $VMSUSE` do echo "Bezig met het backuppen van $SERVER/etc" echo "Bezig met het backuppen van $SERVER/etc" >>"$LOGFILE" # Maak de directory structuur aan (mag ook als deze al bestaat) mkdir -p /disk/backup/$SERVER/etc # Haal de leesrechten weg voor de wereld chmod o-x /disk/backup/$SERVER # Copieer de gehele /etc structuur # - Negeer eventuele .svn mappen etc. (--cvs-exclude) # - Verwijder lokale bestanden die inmiddels op de server niet meer bestaan rsync -a root@$SERVER:/etc/ /disk/backup/$SERVER/etc/ -r -t --cvs-exclude --delete if [ $? -ne 0 ] then echo "!!! rsync van map /etc (server $SERVER) is fout gelopen!" fi done for SERVER in `cat $HWUBN` userstore1-int userstore2-int do echo "Bezig met het backuppen van $SERVER/etc" echo "Bezig met het backuppen van $SERVER/etc" >>"$LOGFILE" # Maak de directory structuur aan (mag ook als deze al bestaat) mkdir -p /disk/backup/$SERVER/etc # Haal de leesrechten weg voor de wereld chmod o-x /disk/backup/$SERVER # Copieer de gehele /etc structuur # - Negeer eventuele .svn mappen etc. (--cvs-exclude) # - Verwijder lokale bestanden die inmiddels op de server niet meer bestaan rsync -a root@$SERVER:/etc/ /disk/backup/$SERVER/etc/ -r -t --cvs-exclude --delete if [ $? -ne 0 ] then echo "!!! rsync van map /etc (server $SERVER) is fout gelopen!" fi # echo "Als er een locale directory /usr/local/hobbynet/local bestaat, maak daar dan ook een backup van" >>"$LOGFILE" # echo "Als er een locale directory /usr/local/hobbynet/local bestaat, maak daar dan ook een backup van" # rsync -a root@$SERVER:/usr/local/hobbynet/local /disk/backup/$SERVER/usr/local/hobbynet/local -r -t --cvs-exclude --delete echo "Verzamel alle geinstalleerde pakketten voor $SERVER" echo "Verzamel alle geinstalleerde pakketten voor $SERVER" >>"$LOGFILE" ssh root@$SERVER dpkg --get-selections | grep -v deinstall >/disk/backup/$SERVER/pakketten.lijst done SERVER="scripting-int" echo "Bezig met het backuppen van $SERVER/usr/local/hobbynet" echo "Bezig met het backuppen van $SERVER/usr/local/hobbynet" >>"$LOGFILE" mkdir -p /disk/backup/$SERVER/usr/local/hobbynet # Maak geen backup van enige directory met de naam "Old" rsync -a root@$SERVER:/usr/local/hobbynet/ /disk/backup/$SERVER/usr/local/hobbynet/ -r -t --cvs-exclude --exclude /home --exclude="Old" --delete if [ $? -ne 0 ] then echo "!!! rsync van map /usr/local/hobbynet (server $SERVER) is fout gelopen!" fi # Van deze servers moet de gehele /usr/local/hobbynet omgeving veilig worden gesteld for SERVER in redirect-lb1-int redirect-lb2-int domein-int ns3 ns4 mail-lb1-int mail-lb2-int do echo "Bezig met het backuppen van $SERVER/usr/local/hobbynet" echo "Bezig met het backuppen van $SERVER/usr/local/hobbynet" >>"$LOGFILE" mkdir -p /disk/backup/$SERVER/usr/local/hobbynet rsync -a root@$SERVER:/usr/local/hobbynet/ /disk/backup/$SERVER/usr/local/hobbynet -r -t --cvs-exclude --exclude /home --exclude /firewall --delete if [ $? -ne 0 ] then echo "!!! rsync van map /usr/local/hobbynet (server $SERVER) is fout gelopen!" fi done echo "klaar met backup van de server configuraties" >>"$LOGFILE" date >>"$LOGFILE" echo "------------" >>"$LOGFILE" echo "klaar met backup van de server configuraties" # Finally remove the file lock rm $HNET_LOCK logger -p auth.notice "=*= backup_server_configs finished on server backup2bit =*="