Backup

From Hobbynet Admin Wiki
Revision as of 20:20, 10 February 2019 by Hans (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

backup naar Bit

Via backup2bit trekt Bit elke nacht rond 01:00 een back-up met snapshots van onze server.
In de nacht van zondag op maandag wordt een full back-up getrokken, de andere backups zijn incrementals.
Bit bewaart voor ons 5 full back-up's. De dagelijkse backup's worden elke week overschreven.

BIT kan met ssh inloggen op onze machine (backup2bit-int) en rsynct alleen /disk

Hiervoor is een interface aangemaakt die alleen routeert naar 213.136.12.153/32 (BIT IPv4 space), zie /etc/netplan/01-netcfg.yaml op backup2bit
Rsync wordt verder geregeld door BIT.

Sommige submappen van /disk laten we bewust niet meelopen in de backup naar Bit. De lijst met excludes staat iedere dag in de status-mail die Bit ons stuurt (BIT Network Backup Report). Deze status mail wordt gestuurd naar de Hobbynet root mailbox.

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 backup)

Elke dag wordt met rsync een volledige back-up naar de nas bij Bas getrokken zonder snapshots
Dit doen we omdat stel er gebeurt wat met BIT, dan hebben we nog alles achter de hand.
De backups 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 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, daarna wordt de 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 vanuit backup2bit

Elke dag wordt van alle servers de /etc directory gekopieerd naar /disk/backup/servernaam/etc/.
Ook wordt van elke server een lijst van door APT geïnstalleerde packages gemaakt en in een file gezet /disk/backup/servernaam/pakketten.lijst
Van de volgende servers stellen we ook de /usr/local/hobbynet directory 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 =*="

synchronisatie van www.hcc.nl en www.hobby.nl naar ns3

Elke 6 uur synchroniseren we bestanden en databases naar ns3

script /usr/local/hobbynet/bin/sync_ns3 op backup2bit

#!/bin/bash
echo "=== `date` ==="
echo "Start /usr/local/hobbynet/bin/sync_ns3"
echo "synchroniseer hobbynet site"
rsync -a /disk/site/hobbynet/www/ root@ns3:/disk/site/hobbynet/www/ -t --cvs-exclude --delete
scp /disk/site/hobbynet/www/.htaccess* root@ns3:/disk/site/hobbynet/www/
echo "synchroniseer hobbynet backups"
rsync -a /disk/site/hobbynet/backup/ root@ns3:/disk/site/hobbynet/backup/ -t --cvs-exclude --delete
echo "zet rechten goed op ns3"
ssh ns3 'chown www-hobby-nl:www-hobby-nl /disk/site/hobbynet/www -R'
ssh ns3 'chown www-hobby-nl:www-hobby-nl /disk/site/hobbynet/backup -R'
echo "synchroniseer hcc.nl site"
rsync -a /disk/site/hcc.nl/landelijk/www-hccnl-prod/www/ root@ns3:/disk/site/hcc.nl/landelijk/www-hccnl-prod/www/ -t --cvs-exclude --delete
scp /disk/site/hcc.nl/landelijk/www-hccnl-prod/www/.htaccess* root@ns3:/disk/site/hcc.nl/landelijk/www-hccnl-prod/www/
echo "synchroniseer hcc.nl backup"
rsync -a /disk/site/hcc.nl/landelijk/www-hccnl-prod/backup/ root@ns3:/disk/site/hcc.nl/landelijk/www-hccnl-prod/backup/ -t --cvs-exclude --delete
echo "ruim backup's op ouder dan 3 dagen op ns3"
ssh ns3 '/usr/local/hobbynet/bin/cleanupweb'
echo "maak database dump hobbynet site op db01"
ssh db01-int '/usr/local/hobbynet/local/dump-ns3'
echo "kopieer database dump hobbynet site van db01 naar backup2bit"
scp db01-int:/usr/local/hobbynet/data/ns3-db01.sql.bz2 /usr/local/hobbynet/tmp/ns3-db01.sql.bz2
echo "verwijder dump op db01"
ssh db01-int 'rm /usr/local/hobbynet/data/ns3-db01.sql.bz2'
echo "kopieer database dump naar ns3"
scp /usr/local/hobbynet/tmp/ns3-db01.sql.bz2 ns3:/usr/local/hobbynet/tmp/ns3-db01.sql.bz2
echo "verwijder databasedump van backup2bit"
rm /usr/local/hobbynet/tmp/ns3-db01.sql.bz2
echo "maak database dump hcc.nl site op db03"
ssh db03-int '/usr/local/hobbynet/local/dump-ns3'
echo "kopieer database dump hcc.nl site van db03 naar backup2bit"
scp db03-int:/usr/local/hobbynet/data/ns3-db03.sql.bz2 /usr/local/hobbynet/tmp/ns3-db03.sql.bz2
echo "verwijder dump op db03"
ssh db03-int 'rm /usr/local/hobbynet/data/ns3-db03.sql.bz2'
echo "kopieer database dump naar ns3"
scp /usr/local/hobbynet/tmp/ns3-db03.sql.bz2 ns3:/usr/local/hobbynet/tmp/ns3-db03.sql.bz2
echo "verwijder databasedump van backup2bit"
rm /usr/local/hobbynet/tmp/ns3-db03.sql.bz2
echo "lees database in op ns3"
ssh ns3 '/usr/local/hobbynet/bin/restore_dbs'
echo "kopieer apache config hobby.nl naar ns3"
scp /usr/local/hobbynet/apache2conf/hobby-nl/www.hobby.nl.conf ns3:/usr/local/hobbynet/tmp/www.hobby.nl.conf
echo "kopieer apache config hcc.nl naar ns3"
scp /usr/local/hobbynet/apache2conf/www-hccnl-prod/www.hcc.nl.conf ns3:/usr/local/hobbynet/tmp/www.hcc.nl.conf
echo "synchroniseer iplists"
rsync -a /usr/local/hobbynet/apache2conf/iplist/ root@ns3:/usr/local/hobbynet/iplists/ -t --cvs-exclude --delete
echo "kopieer php-fpm pool file naar ns3"
scp /usr/local/hobbynet/apache2conf/hobby-nl/php-fpm/www-hobby-nl.conf ns3:/etc/php/7.2/fpm/pool.d/
scp /usr/local/hobbynet/apache2conf/www-hccnl-prod/php-fpm/www-hccnl-prod.conf ns3:/etc/php/7.2/fpm/pool.d/
scp /usr/local/hobbynet/etc/hobbynet-adm* ns3:/usr/local/hobbynet/etc/
echo "kopieer certificaten"
scp -r /disk/site/etc/ssl/wildcard.hcc.nl/* ns3:/disk/site/etc/ssl/wildcard.hcc.nl/
scp -r /disk/site/etc/ssl/hobby.nl/* ns3:/disk/site/etc/ssl/hobby.nl/
echo "pas apache configs aan voor ns3"
ssh ns3 '/usr/local/hobbynet/bin/updateapache2conf'
echo "== klaar `date` =="

script /usr/local/hobbynet/local/dump-ns3 op db01

dit script dumpt de database voor www.hobby.nl

#!/bin/bash
HNET=/usr/local/hobbynet
HNETDATA=$HNET/data
HNETLOCAL=$HNET/local
DUMPFILE=$HNETDATA/ns3-db01.sql
HNET_LOCK=$HNETLOCAL/dump-ns3.lock
HNET_LOCK_TIME=180
SERVER=db01

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


logger -p auth.notice "=*= dump-ns3 gestart op server $SERVER =*="

touch $HNET_LOCK
if [  -f $DUMPFILE.bz2 ]; then
        echo "ruim oude dumpfile op"
        rm $DUMPFILE.bz2
fi
echo "dump databases www-hobby-nl* hobby-adm* naar $DUMPFILE"
mysqldump --databases www-hobby-nl www-hobby-nl-test hobby-adm hobby-adm-test >$DUMPFILE
echo "dump users www-hobby-nl-db en hobby-nl-db in $DUMPFILE"
pt-show-grants --only www-hobby-nl-db >>$DUMPFILE
pt-show-grants --only hobby-adm-db >>$DUMPFILE
echo "dump beheer users in $DUMPFILE"
pt-show-grants --only bas >>$DUMPFILE
pt-show-grants --only hans >>$DUMPFILE
pt-show-grants --only egbert >>$DUMPFILE
echo "comprimeer dump met bzip2"
bzip2 $DUMPFILE
rm  $HNET_LOCK
logger -p auth.notice "=*= dump-ns3 klaar op server $SERVER =*="

script /usr/local/hobbynet/local/dump-ns3 op db03

dit script dumpt de databases voor www.hcc.nl.

#!/bin/bash
SERVER=db03
HNET=/usr/local/hobbynet
HNETDATA=$HNET/data
HNETLOCAL=$HNET/local
DUMPFILE=$HNETDATA/ns3-$SERVER.sql
HNET_LOCK=$HNETLOCAL/dump-ns3.lock
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


logger -p auth.notice "=*= dump-ns3 gestart op server $SERVER =*="

touch $HNET_LOCK
if [ -f $DUMPFILE.bz2 ]; then
        echo "ruim oude dumpfile op"
        rm $DUMPFILE.bz2
fi
echo "dump databases www-hccnl-prod* naar $DUMPFILE"
mysqldump --databases www-hccnl-prod www-hccnl-prod-test >$DUMPFILE
echo "dump users www-hobby-nl-db en hobby-nl-db in $DUMPFILE"
pt-show-grants --only www-hccnl-prod-db >>$DUMPFILE
echo "comprimeer dump met bzip2"
bzip2 $DUMPFILE
rm  $HNET_LOCK
logger -p auth.notice "=*= dump-ns3 klaar op server $SERVER =*="
root@backup2bit:~# ssh db03-int cat /usr/local/hobbynet/local/dump-ns3
#!/bin/bash
SERVER=db03
HNET=/usr/local/hobbynet
HNETDATA=$HNET/data
HNETLOCAL=$HNET/local
DUMPFILE=$HNETDATA/ns3-$SERVER.sql
HNET_LOCK=$HNETLOCAL/dump-ns3.lock
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


logger -p auth.notice "=*= dump-ns3 gestart op server $SERVER =*="

touch $HNET_LOCK
if [ -f $DUMPFILE.bz2 ]; then
        echo "ruim oude dumpfile op"
        rm $DUMPFILE.bz2
fi
echo "dump databases www-hccnl-prod* naar $DUMPFILE"
mysqldump --databases www-hccnl-prod www-hccnl-prod-test >$DUMPFILE
echo "dump users www-hobby-nl-db en hobby-nl-db in $DUMPFILE"
pt-show-grants --only www-hccnl-prod-db >>$DUMPFILE
echo "comprimeer dump met bzip2"
bzip2 $DUMPFILE
rm  $HNET_LOCK
logger -p auth.notice "=*= dump-ns3 klaar op server $SERVER =*="

script /usr/local/hobbynet/bin/restore_dbs op ns3

Dit script verwijdert en plaatst de laatste versie van de database

script /usr/local/hobbynet/lib/dropdb.sql op ns3

dit sql script wordt door /usr/local/hobbynet/bin/restore_dbs aangeroepen om de databases op te ruimen

DROP DATABASE IF EXISTS `www-hccnl-prod`;
DROP DATABASE IF EXISTS `www-hccnl-prod-test`;
DROP DATABASE IF EXISTS `www-hobby-nl`;
DROP DATABASE IF EXISTS `www-hobby-nl-test`;

script /usr/local/hobbynet/lib/disableplugins.sql op ns3

Dit sql script zorgt dat login en cache plugin wordt uitgeschakeld, en plaatst een waarschuwing op de site

-- hobbynet site
use www-hobby-nl;
-- zet jch optimize uit
UPDATE `h0bb13_extensions` SET `enabled` = '0' WHERE `h0bb13_extensions`.`extension_id` = 10960;
UPDATE `h0bb13_extensions` SET `enabled` = '0' WHERE `h0bb13_extensions`.`extension_id` = 10958;
UPDATE `h0bb13_extensions` SET `enabled` = '0' WHERE `h0bb13_extensions`.`extension_id` = 10956;
-- set login modules uit
UPDATE `h0bb13_modules` SET `published` = '0' WHERE `h0bb13_modules`.`id` = 16;
UPDATE `h0bb13_modules` SET `published` = '0' WHERE `h0bb13_modules`.`id` = 2;
-- zet waarschuwing aan
UPDATE `h0bb13_modules` SET `published` = '1' WHERE `h0bb13_modules`.`id` = 146;
-- hcc.nl site
use www-hccnl-prod;
-- zet jch optimize uit
UPDATE `qd312_extensions` SET `enabled` = '0' WHERE `qd312_extensions`.`extension_id` = 11255;
UPDATE `qd312_extensions` SET `enabled` = '0' WHERE `qd312_extensions`.`extension_id` = 11257;
UPDATE `qd312_extensions` SET `enabled` = '0' WHERE `qd312_extensions`.`extension_id` = 11259;
-- set login menu entry's uit
UPDATE `qd312_menu` SET `published` = '0' WHERE `qd312_menu`.`id` = 681;
UPDATE `qd312_menu` SET `published` = '0' WHERE `qd312_menu`.`id` = 821;
UPDATE `qd312_menu` SET `published` = '0' WHERE `qd312_menu`.`id` = 823;
UPDATE `qd312_menu` SET `published` = '0' WHERE `qd312_menu`.`id` = 831;
UPDATE `qd312_menu` SET `published` = '0' WHERE `qd312_menu`.`id` = 923;
UPDATE `qd312_menu` SET `published` = '0' WHERE `qd312_menu`.`id` = 1629;
UPDATE `qd312_menu` SET `published` = '0' WHERE `qd312_menu`.`id` = 1631;
-- set login menu in balk uit
UPDATE `qd312_modules` SET `published` = '0' WHERE `qd312_modules`.`id` = 361;
UPDATE `qd312_modules` SET `published` = '0' WHERE `qd312_modules`.`id` = 363;
-- set menu balk zonder login aan
UPDATE `qd312_modules` SET `published` = '1' WHERE `qd312_modules`.`id` = 524;
-- zet waarschuwing aan
UPDATE `qd312_modules` SET `published` = '1' WHERE `qd312_modules`.`id` = 522;

script /usr/local/hobbynet/bin/updateapache2conf op ns3

Dit script update apache config op ns3

echo "== start /usr/local/hobbynet/bin/updateapache2conf =="
if [ -f /usr/local/hobbynet/tmp/www.hobby.nl.conf ]; then
        echo "verwijder -lb* uit www.hobby.nl.conf"
        sed 's/-lb\*/'/g /usr/local/hobbynet/tmp/www.hobby.nl.conf > /usr/local/hobbynet/tmp/www.hobby.nl.conf1
        sed 's/www.hobby.nl/www2.hobby.nl'/g /usr/local/hobbynet/tmp/www.hobby.nl.conf1 > /usr/local/hobbynet/tmp/www.hobby.nl.conf2
        sed 's/php7.2-fpm-www2.hobby.nl.sock/php7.2-fpm-www-hobby-nl.sock'/g /usr/local/hobbynet/tmp/www.hobby.nl.conf2 > /etc/apache2/sites-available/www.hobby.nl.conf
        cp /disk/site/hobbynet/www/configuration.php /usr/local/hobbynet/tmp/configurationhobbynl.php
        sed "s/https:\/\/www.hobby.nl/https:\/\/www2.hobby.nl"/g /usr/local/hobbynet/tmp/configurationhobbynl.php  >/disk/site/hobbynet/www/configuration.php
        if [ ! -f /etc/apache2/sites-enabled/www.hobby.nl.conf ]; then
                a2ensite www.hobby.nl.conf
        fi
else
        echo "apache configuratie bestand /usr/local/hobbynet/tmp/www.hobby.nl.conf niet gevonden "
fi

if [ -f /usr/local/hobbynet/tmp/www.hcc.nl.conf ]; then
        echo "verwijder -lb* uit www.hcc.nl.conf"
        sed 's/-lb\*/'/g /usr/local/hobbynet/tmp/www.hcc.nl.conf > /usr/local/hobbynet/tmp/www.hcc.nl.conf1
        sed 's/www.hcc.nl/www2.hcc.nl'/g /usr/local/hobbynet/tmp/www.hcc.nl.conf1 > /etc/apache2/sites-available/www.hcc.nl.conf
        echo "pas configuration.php aan naar www2.hcc.nl"
        cp /disk/site/hcc.nl/landelijk/www-hccnl-prod/www/configuration.php /usr/local/hobbynet/tmp/configurationhccnl.php
        sed 's/www.hcc.nl/www2.hcc.nl'/g /usr/local/hobbynet/tmp/configurationhccnl.php  >/disk/site/hcc.nl/landelijk/www-hccnl-prod/www/configuration.php
        if [ ! -f /etc/apache2/sites-enabled/www.hcc.nl.conf ]; then
                a2ensite www.hcc.nl.conf
        fi
else
        echo "apache configuratie bestand /usr/local/hobbynet/tmp/www.hcc.nl.conf niet gevonden "
fi
echo "herstart php7.2-fpm"
systemctl restart php7.2-fpm.service
echo "herstart apache2"
systemctl restart apache2
echo "flush memcached"
systemctl restart memcached.service
echo "== end /usr/local/hobbynet/bin/updateapache2conf =="

backup /usr/local/hobbynet/bin

Elke dag wordt /usr/local/hobbynet/bin gebackupd naar /disk/backup/hobbynet/ zodat deze in de externe backup mee gaat

script /usr/local/hobbynet/bin/backup_usrlocalhobbynet op backup2bit

#!/bin/bash

DATUMVOLLEDIGNL=$(LC_TIME="nl_NL.UTF-8" date "+%A %d %B %Y")
DATUM=$(date "+%Y%m%d")
HNET=/usr/local/hobbynet/
TO_BACKUP=$HNET
BACKUP_DIR=/disk/backup/hobbynet/
LOGFILE="/var/log/backup_all.log"
EXCLUDES="home"

logger -p auth.notice "=*= Backup gestart van $TO_BACKUP op server backup2bit op $DATUMVOLLEDIGNL om $(date +%H:%M) =*="
echo "Backup gestart van $TO_BACKUP op server backup2bit op $DATUMVOLLEDIGNL om $(date +%H:%M)" >>"$LOGFILE"

if [ ! -e $BACKUP_DIR ]; then
        mkdir $BACKUP_DIR
        chmod o-x $BACKUP_DIR
fi

rsync $TO_BACKUP $BACKUP_DIR -r -t --cvs-exclude --delete --exclude $EXCLUDES



logger -p auth.notice "=*= Backup afgerond van $TO_BACKUP op server backup2bit op $DATUMVOLLEDIGNL om $(date +%H:%M) =*="
echo "Backup afgerond van $TO_BACKUP op server backup2bit op $DATUMVOLLEDIGNL om $(date +%H:%M)" >>"$LOGFILE"

back-up apps server (CRM)

acronis back-up

back-up naar bit

Elke dag maken we een acronis backup naar BIT. We hebben een speciale SQL plugin hier voor.

schedule

Elke maandag draaien we een full backup. De rest van de week incrementals, die bewaren we maar 3 dagen.

back-up naar NAS rack

Elke dag maken we een acronis backup naar de NAS in het eigen rack. We hebben een speciale SQL plugin hier voor. Deze backup is encrypted aan de NAS zijde.

schedule

Elke zondag wordt er een volledige backup gemaakt en alle overige dagen wordt een incremental backup gemaakt met retentie van 7 dagen.
Elke donderdag wordt ook een extra week backup gemaakt naar de NAS in het rack met een retentie 30 dagen.

back-up naar NAS Bas (externe backup)

Elke dag maken we een acronis back-up naar de NAS bij Bas. We hebben een speciale SQL plugin hier voor. Deze back-up is encrypted aan de NAS zijde.

schedule

Elke Woensdag wordt er volledige back-up gemaakt en alle overige dagen wordt een incremental backup gemaakt met retentie van 7 dagen.
Elke Vrijdag wordt ook een extra week back-up gemaakt naar de NAS bij Bas met een retentie 30 dagen.

sql back-up

Elke dag om 23:00 wordt een SQL backup gemaakt. Deze wordt op de NAS in het rack geplaatst en vervolgens gekopieerd naar de NAS bij Bas, dit is volledige back-up met retentie van 7 dagen.
Beide nassen zijn encrypted aan de NAS zijde

script c:\scripts\backupssql.cmd

@echo off
SET LocalFolder=c:\sql backups
SET RenmoteFolder=\\172.31.1.33\backup-sql
SET RenmoteFolderbas=\\192.168.200.33\backup-sql
SET ShareUsr=backup-sql
SET SharePwd=******
net use \\172.31.1.33 /delete /y
net use %RenmoteFolder% /delete /y 
net use \\192.167.200.33 /delete /y
net use %RenmoteFolder% /delete /y
net use b: %RenmoteFolderbas% /user:%ShareUsr% %SharePwd%
net use t: %RenmoteFolder% /user:%ShareUsr% %SharePwd%
::: Begin set date

for /f "tokens=1-4 delims=/-. " %%i in ('date /t') do (call :set_date %%i %%j %%k %%l)
goto :end_set_date

:set_date
if "%1:~0,1%" gtr "9" shift
for /f "skip=1 tokens=2-4 delims=(-)" %%m in ('echo,^|date') do (set %%m=%1&set %%n=%2&set %%o=%3)
goto :eof




:end_set_date
::: End set date
set prefix=%yy%_%mm%_%dd%_


FOR %%G IN (HCC_MSCRM, HCCACC_MSCRM, HCC_SSIS_error_log ,HCCIntegration ,HCCmigration ,Indexatie_bckp ,MSCRM_CONFIG ,ReportServer ,ReportServerTempDB ,STAGING ,STAGING_HCC ,STAGING_HCCACC ) DO (
echo start backup van database %%G
SqlCmd -E -Q "Backup Database %%G To Disk='%LocalFolder%\%prefix%%%G.bak'"
echo comprimeer %%G database backup
"C:\Program Files\7-Zip\7z.exe" a -t7z -mx9 "%LocalFolder%\%prefix%%%G.7z" "%LocalFolder%\%prefix%%%G.bak"
)
echo verwijder ongecomprimeerde backups
del "%LocalFolder%\*.bak"
echo schrink databases
SQLCMD -E -w 166 -e -i c:\scripts\shrink.sql -o "%LocalFolder%\ShrinkDB.log"
cd %LocalFolder%

move * t:\

forfiles /p t:\  /S /M *.7z /D -7 /C "cmd /c del @path"
echo kopieer backups naar offsite backup
robocopy t:\ b:\  /mir
net use b: /delete /y
net use t: /delete /y

back-up portal server (CRM)

acronis back-up

back-up naar bit

Elke dag maken we een acronis backup naar BIT.

schedule

Elke maandag draaien we een full backup. De rest van de week incementals, die bewaren we maar 7 dagen.

back-up naar NAS rack

Elke dag maken we een acronis backup naar de NAS in het rack. We hebben een speciale SQL plugin hier voor. Deze backup is encrypted aan de NAS zijde

schedule

Elke donderdag wordt er een volledige backup gemaakt en alle overige dagen wordt een incremental backup gemaakt met retentie van 7 dagen.

back-up naar NAS bas

Elke dag maken we een acronis backup naar de NAS bij Bas. Deze backup is encrypted aan de NAS zijde.

schedule

Elke zondag wordt er een volledige backup gemaakt en alle overige dagen wordt een incremental backup gemaakt met retentie van 7 dagen.

encrypted backup ldap-lb1/lb2

Elke dag wordt een encrypted backup gemaakt van ldap-lb1 en ldap lb2. Deze encrypted backup wordt gekopieerd naar backup2bit zodat het mee gaat in de externe backup.
Het volgende wordt gebackupt:

  • sql backup alle database
  • slapcat van ldap
  • etc directory
  • /usr/local/hobbynet/*


script /usr/local/hobbynet/local/backup-encrypted.bash

#!/bin/bash
# Maak LDAP dump, zet deze encrypted weg op de backup omgeving
#
# backup_ldap
#
# Create full backup of
# - ldap database (slapcat output)
# - /usr/local/hobbynet tree
# - /etc tree
#

export PASSPHRASE="heel geheim"
export SIGN_PASSPHRASE=$PASSPHRASE
ENCRYPT_KEY="het key id"
HNET=/usr/local/hobbynet
HNET_BIN=$HNET/bin
HNET_LIB=$HNET/lib
HNET_DATA=$HNET/data
HNET_TMP=$HNET/tmp
HNET_BACKUPFILE=usr-local-hobbynet-backup.$(date +%a).tgz
HNET_BACKUP=$HNET_TMP/$HNET_BACKUPFILE
HNET_BACKUPSQLFILE=sql-backup.$(date +%a).sql
HNET_SQLBACKUP=$HNET_TMP/$HNET_BACKUPSQLFILE
HNET_LOCK=$HNET_TMP/backup_ldap-lb1.lock
LDAP_DUMP=hcc-dump.ldif
LDAP_BACKUPFILE=ldap-data-backup.$(date +%a).tgz
LDAP_BACKUP=$HNET_TMP/$LDAP_BACKUPFILE
ETC=/etc
ETC_BACKUPFILE=etc-backup.$(date +%a).tgz
ETC_BACKUP=$HNET_TMP/$ETC_BACKUPFILE
REMOTE_BACKUPUSER=ldap-lb1
REMOTE_BACKUP_DIR=/disk/backup/ldap-lb1-int

# zet de datum in het logbestand
echo "======================= /usr/local/hobbynet/local/backup-encrypted ============="
date

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 "=*= backup_ldap_lb1 started =*="

# maak dump
/usr/sbin/slapcat \
 -l $HNET_DATA/$LDAP_DUMP \
 -b "dc=hcc,dc=nl"

# Om foutmeldingen weg te draaien, stuur tar eerst naar de juiste map (-C)
# maak hier een tar.gz bestand van
tar -czf $LDAP_BACKUP -C $HNET_DATA $LDAP_DUMP

# - /usr/local/hobbynet/lib/*
# - /usr/local/hobbynet/bin/*
tar -czf $HNET_BACKUP -C $HNET lib bin

# Maak een tar.gz van de /etc tree
tar -czf $ETC_BACKUP -C / etc

# Maak mysqldump
rm $HNET_SQLBACKUP $HNET_SQLBACKUP.tgz $HNET_SQLBACKUP.tgz.gpg -f
mysqldump --all-databases >$HNET_SQLBACKUP
# Om foutmeldingen weg te draaien, stuur tar eerst naar de juiste map (-C)
tar -czf $HNET_SQLBACKUP.tgz -C $HNET_TMP $HNET_BACKUPSQLFILE

# - versleutel de bestanden $LDAP_BACKUP, $HNET_BACKUP, $ETC_BACKUP en $HNET_SQLBACKUP.tgz
rm /usr/local/hobbynet/tmp/*.$(date +%a).tgz.gpg
gpg --batch --default-key $ENCRYPT_KEY --default-recipient-self --encrypt $HNET_BACKUP        2>&1
gpg --batch --default-key $ENCRYPT_KEY --default-recipient-self --encrypt $LDAP_BACKUP        2>&1
gpg --batch --default-key $ENCRYPT_KEY --default-recipient-self --encrypt $ETC_BACKUP         2>&1
gpg --batch --default-key $ENCRYPT_KEY --default-recipient-self --encrypt $HNET_SQLBACKUP.tgz 2>&1

# - bewaar deze versleutelde bestanden op backup2bit
scp $HNET_BACKUP.gpg        $REMOTE_BACKUPUSER@backup2bit-int:$REMOTE_BACKUP_DIR/$HNET_BACKUPFILE.gpg
scp $LDAP_BACKUP.gpg        $REMOTE_BACKUPUSER@backup2bit-int:$REMOTE_BACKUP_DIR/$LDAP_BACKUPFILE.gpg
scp $ETC_BACKUP.gpg         $REMOTE_BACKUPUSER@backup2bit-int:$REMOTE_BACKUP_DIR/$ETC_BACKUPFILE.gpg
scp $HNET_SQLBACKUP.tgz.gpg $REMOTE_BACKUPUSER@backup2bit-int:$REMOTE_BACKUP_DIR/$HNET_BACKUPSQLFILE.tgz.gpg
ssh $REMOTE_BACKUPUSER@backup2bit-int "chmod 600 $REMOTE_BACKUP_DIR/*"

ls -lt $HNET_BACKUP* $LDAP_BACKUP* $ETC_BACKUP* $HNET_SQLBACKUP*
logger -p auth.notice "=*= backup_ldap_lb1 ended =*="

# remove the dump to preserve space
rm $HNET_DATA/$LDAP_DUMP
# Finally remove the file lock
rm $HNET_LOCK
#echo wis passphrase
export PASSPHRASE
export SIGN_PASSPHRASE

echo "======================= /usr/local/hobbynet/local/backup-encrypted ended ============="

encrypted backup xml-lb1/lb2

Elke dag wordt een encrypted backup gemaakt van xml-lb1 en xml-lb2. Deze wordt na encrypted gekopieerd naar backup2bit zodat het mee gaat in de externe backup. Het volgende wordt gebackupt: * etc directory * /usr/local/hobbynet/* * /disk

script /usr/local/hobbynet/local/backup-encrypted.bash

#!/bin/bash
# Maak LDAP dump, zet deze encrypted weg op de backup omgeving
#
# backup_ldap
#
# Create full backup of
# - ldap database (slapcat output)
# - /usr/local/hobbynet tree
# - /etc tree
#

export PASSPHRASE="heel geheim"
export SIGN_PASSPHRASE=$PASSPHRASE
ENCRYPT_KEY="key id"
HNET=/usr/local/hobbynet
HNET_BIN=$HNET/bin
HNET_LIB=$HNET/lib
HNET_TMP=$HNET/tmp
HNET_BACKUPFILE=usr-local-hobbynet-backup.$(date +%a).tgz
HNET_BACKUP=$HNET_TMP/$HNET_BACKUPFILE
DISK=/disk
DISK_BACKUPFILE=disk-backup.$(date +%a).tgz
DISK_BACKUP=$HNET_TMP/$DISK_BACKUPFILE
HNET_LOCK=$HNET_TMP/backup_xml-lb1.lock
ETC=/etc
ETC_BACKUPFILE=etc-backup.$(date +%a).tgz
ETC_BACKUP=$HNET_TMP/$ETC_BACKUPFILE
REMOTE_BACKUPUSER=xml-lb1
REMOTE_BACKUP_DIR=/disk/backup/xml-lb1-int

# zet de datum in het logbestand
echo "======================= /usr/local/hobbynet/bin/backup-encrypted ============="
date

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 "=*= backup_xml_lb1 started =*="



# - /usr/local/hobbynet/lib/*
# - /usr/local/hobbynet/bin/*
# - /usr/local/hobbynet/etc/*
# - /usr/local/hobbynet/local/*
tar -czf $HNET_BACKUP -C $HNET lib bin etc local

# Maak een tar.gz van de /etc tree
tar -czf $ETC_BACKUP -C / etc


# Maak een tar.gz van de /disk tree
tar -czf $DISK_BACKUP -C / disk




# - versleutel de bestanden $HNET_BACKUP, $DISK_BACKUP  en $ETC_BACKUP
rm /usr/local/hobbynet/tmp/*.$(date +%a).tgz.gpg
gpg --batch --default-key $ENCRYPT_KEY --default-recipient-self --encrypt $HNET_BACKUP 2>&1
gpg --batch --default-key $ENCRYPT_KEY --default-recipient-self --encrypt $ETC_BACKUP 2>&1
gpg --batch --default-key $ENCRYPT_KEY --default-recipient-self --encrypt $DISK_BACKUP 2>&1

# - bewaar deze 3 versleutelde bestanden op backup2bit
scp $HNET_BACKUP.gpg $REMOTE_BACKUPUSER@backup2bit-int:/$REMOTE_BACKUP_DIR/$HNET_BACKUPFILE.gpg
scp $ETC_BACKUP.gpg  $REMOTE_BACKUPUSER@backup2bit-int:/$REMOTE_BACKUP_DIR/$ETC_BACKUPFILE.gpg
scp $DISK_BACKUP.gpg  $REMOTE_BACKUPUSER@backup2bit-int:/$REMOTE_BACKUP_DIR/$DISK_BACKUPFILE.gpg
ssh $REMOTE_BACKUPUSER@backup2bit-int "chmod 600 $REMOTE_BACKUP_DIR/*"

ls -lt $HNET_BACKUP* $DISK_BACKUP* $ETC_BACKUP*
logger -p auth.notice "=*= backup_xml_lb1 ended =*="

# Finally remove the file lock
rm $HNET_LOCK
#echo wis passphrase
export PASSPHRASE
export SIGN_PASSPHRASE

echo "======================= /usr/local/hobbynet/bin/backup-encrypted ended ============="