#!/bin/sh # # Script evobackup client # $Id: evobackup_cron_daily_client,v 1.21 2010-08-22 10:15:42 gcolpart Exp $ # # port SSH SSH_PORT=2228 # systeme de la machine ("linux" ou "bsd") SYSTEME=linux # mail de remontee Evolix MAIL=jdoe@example.com NODE=$(expr `date +%d` % 2) # operations specifiques mkdir -p -m 700 /home/backup # Dump LDAP # slapcat -l /home/backup/ldap.bak # Dump MySQL # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf \ # --opt --all-databases | gzip --best > /home/backup/mysql.bak.gz # for i in $(echo SHOW DATABASES | mysql | grep -v ^Database); \ # do mkdir -p /home/mysqldump/$i ; chown -R mysql /home/mysqldump ; \ # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf -Q --opt -T \ # /home/mysqldump/$i $i; done # Dump par base # mkdir -p -m 700 /home/mysqldump/BASE # chown -R mysql /home/mysqldump/ # mysqldump --defaults-extra-file=/etc/mysql/debian.cnf -Q \ # --opt -T /home/mysqldump/BASE BASE # mkdir -p /home/mysqlhotcopy/ # mysqlhotcopy BASE /home/mysqlhotcopy/ # Dump instanceS MySQL #oldIFS=$IFS #IFS=$'\n' # ## Recherche du mot de passe mysqladmin #mysqladminpasswd=`cat /root/.my.cnf |grep -m1 'password = .*' |cut -d" " -f3` # ## Determination des instances MySQL disponibles sur le serveur (hors 3306) #for instance in `cat /etc/mysql/my.cnf |grep "port\s*=\s\d*"` #do # instance=${instance// /} # instance=${instance// /} # instance=${instance//port=/} # if [ "$instance" != "3306" ] # then # mysqldump -P $instance --opt --all-databases -u mysqladmin -p$mysqladminpasswd > /home/backup/mysql.$instance.bak # fi #done # #IFS=$old_IFS # Dump PostgreSQL # su - postgres -c "pg_dumpall > ~/pg.dump.bak" # mv ~postgres/pg.dump.bak /home/backup/ # Exemple de backups... # On sauvegarde les tables d'une base sauf des exceptions # pg_dump -p 5432 -h 127.0.0.1 -U USER --clean -F t --inserts -f /home/backup/pg-backup.tar -t 'TABLE1' -t 'TABLE2' BASE # On sauvegarde uniquement certaines tables d'une base # pg_dump -p 5432 -h 127.0.0.1 -U USER --clean -F t --inserts -f /home/backup/pg-backup.tar -T 'TABLE1' -T 'TABLE2' BASE # Dump MBR / table partitions # dd if=/dev/sda of=/home/backup/MBR bs=512 count=1 2>&1 | egrep -v "(records in|records out|512 bytes)" # sfdisk -d /dev/sda > /home/backup/partitions 2>&1 | egrep -v "(Warning: extended partition does not start at a cylinder boundary|DOS and Linux will interpret the contents differently)" # Dump routes # traceroute -n 8.8.8.8 > /home/backup/traceroute-8.8.8.8 # mtr -r 8.8.8.8 > /home/backup/mtr-8.8.8.8 # traceroute -n backup.evolix.net > /home/backup/traceroute-backup.evolix.net # mtr -r backup.evolix.net > /home/backup/mtr-backup.evolix.net # traceroute -n www.evolix.fr > /home/backup/traceroute-www.evolix.fr # mtr -r www.evolix.fr > /home/backup/mtr-www.evolix.fr # traceroute -n www.evolix.net > /home/backup/traceroute-www.evolix.net # mtr -r www.evolix.net > /home/backup/mtr-www.evolix.net HOSTNAME=$(hostname) DATE=$(/bin/date +"%d-%m-%Y") DEBUT=$(/bin/date +"%d-%m-%Y ; %H:%M") if [ $SYSTEME = "linux" ]; then rep="/bin /boot /lib /opt /sbin /usr" else rep="/bsd /bin /boot /sbin /usr" fi rsync -av --delete --ignore-errors \ --exclude "lost+found" \ --exclude ".nfs.*" \ --exclude "/var/log" \ --exclude "/var/log/evobackup*" \ --exclude "/var/lib/mysql" \ --exclude "/var/lib/postgres" \ --exclude "/var/lib/sympa" \ --exclude "/var/run" \ --exclude "/var/lock" \ --exclude "/var/state" \ --exclude "/var/apt" \ --exclude "/var/cache" \ --exclude "/usr/src" \ --exclude "/usr/doc" \ --exclude "/usr/share/doc" \ --exclude "/usr/obj" \ --exclude "dev" \ --exclude "/var/spool/postfix" \ --exclude "/var/lib/amavis/amavisd.sock" \ --exclude "/var/lib/munin/munin-update.stats.tmp" \ --exclude "/var/lib/php5" \ --exclude "/var/spool/squid" \ $rep \ /etc \ /root \ /var \ /home \ /srv \ /vmlinuz \ -e "ssh -p $SSH_PORT" \ root@node$NODE.backup.example.com:/var/backup/ \ | tail -20 >> /var/log/evobackup.log FIN=$(/bin/date +"%d-%m-%Y ; %H:%M") echo "EvoBackup - $HOSTNAME - START $DEBUT" \ >> /var/log/evobackup.log echo "EvoBackup - $HOSTNAME - STOP $FIN" \ >> /var/log/evobackup.log tail -10 /var/log/evobackup.log | \ mail -s "[info] EvoBackup - Client $HOSTNAME" \ $MAIL