Backup: Difference between revisions
Line 801: | Line 801: | ||
== sql back-up == | == sql back-up == | ||
Elke dag om 23:00 wordt een SQL backup gemaakt deze wordt op de NAS in 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 === | |||
<pre> | |||
@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 | |||
</pre> | |||
= back-up portal server (CRM) = | = back-up portal server (CRM) = | ||
== acronis back-up == | == acronis back-up == |
Revision as of 13:19, 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 =*="
synchronisatie van www.hcc.nl en www.hobby.nl naar ns3
Elke 6 uur syncroniseren 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 verwijderd en plaatst 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 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 plaats 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 full backup de rest van de week incementals die bewaren we maar 3 dagen
back-up naar NAS rack
Elke dag maken we een acronis backup naar de NAS in het rackwe hebben een speciale SQL plugin hier voor. Deze backup is encrypted aan de nas zijde
schedule
Elke zondag wordt er volledige backup gemaakt en alle overige dagen wordt een incrementel backup gemaakt met retentie van 7 dagen Elke zondag wordt ook een extra week backup gemaakt naar de nas in het rack me een retentie 30 dagen
back-up naar NAS bas
Elke dag maken we een acronis back-up naar de NAS in het Bas hebben een speciale SQL plugin hier voor. Deze back-up is encrypted aan de nas zijde
schedule
Elke zondag wordt er volledige back-up gemaakt en alle overige dagen wordt een incrementel backup gemaakt met retentie van 7 dagen Elke Zaterdag wordt ook een extra week back-up gemaakt naar de nas in bij bas me een retentie 30 dagen
sql back-up
Elke dag om 23:00 wordt een SQL backup gemaakt deze wordt op de NAS in 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