evobackup/zzz_evobackup

199 lines
7.1 KiB
Plaintext
Raw Normal View History

2010-09-09 01:05:15 +02:00
#!/bin/sh
#
# Script evobackup client
# $Id: evobackup_cron_daily_client,v 1.21 2010-08-22 10:15:42 gcolpart Exp $
#
2015-02-03 01:06:09 +01:00
# lang = C pour gerer les outputs en anglais
LANGUAGE=C
LANG=C
# Verification qu'un autre evobackup n'est pas deja lance
PIDFILE=/var/run/evobackup.pid
if [ -e $PIDFILE ]; then
# Killing the childs of evobackup.
for pid in $(ps h --ppid $(cat $PIDFILE) -o pid | tr -s '\n' ' '); do
kill -9 $pid;
done
# Then kill the main PID.
kill -9 $(cat $PIDFILE)
echo "$0 tourne encore (PID `cat $PIDFILE`). Processus killé" >&2
fi
echo "$$" > $PIDFILE
trap "rm -f $PIDFILE" EXIT
2010-09-09 01:05:15 +02:00
# port SSH
SSH_PORT=2228
# systeme de la machine ("linux" ou "bsd")
SYSTEME=linux
2015-02-03 01:06:09 +01:00
# mail de remontee
2010-09-09 01:05:15 +02:00
MAIL=jdoe@example.com
NODE=$(expr `date +%d` % 2)
# operations specifiques
mkdir -p -m 700 /home/backup
# Dump LDAP
2012-02-27 15:12:27 +01:00
# slapcat -l /home/backup/ldap.bak
2010-09-09 01:05:15 +02:00
# Dump MySQL
# mysqldump --defaults-extra-file=/etc/mysql/debian.cnf \
2014-12-30 10:08:08 +01:00
# --opt --all-databases --force --events --hex-blob | gzip --best > /home/backup/mysql.bak.gz
2010-09-09 01:05:15 +02:00
# Dump des BDD en .sql.gz
# mkdir -p /home/mysqldump/
# for i in $(mysql -e 'show databases' -s --skip-column-names | egrep -v "^(Database|information_schema|performance_schema)"); do
2014-12-30 10:08:08 +01:00
# mysqldump --force --events --hex-blob $i | gzip --best > /home/mysqldump/${i}.sql.gz
# done
# for i in $(echo SHOW DATABASES | mysql | egrep -v "^(Database|information_schema|performance_schema)" ); \
2014-06-17 19:17:31 +02:00
# do mkdir -p /home/mysqldump/$i ; chown -RL mysql /home/mysqldump ; \
2014-12-30 10:08:08 +01:00
# mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -Q --opt --events --hex-blob --skip-comments -T \
2010-09-09 01:05:15 +02:00
# /home/mysqldump/$i $i; done
# Dump par base
# mkdir -p -m 700 /home/mysqldump/BASE
2014-06-17 19:17:31 +02:00
# chown -RL mysql /home/mysqldump/
# mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --force -Q \
2014-12-30 10:08:08 +01:00
# --opt --events --hex-blob --skip-comments -T /home/mysqldump/BASE BASE
2010-09-09 01:05:15 +02:00
# mkdir -p /home/mysqlhotcopy/
# mysqlhotcopy BASE /home/mysqlhotcopy/
# Dump instanceS MySQL
#
## 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)
#grep -E "^port\s*=\s*\d*" /etc/mysql/my.cnf |while read instance; do
# instance=$(echo $instance |tr -d '\t')
2010-09-09 01:05:15 +02:00
# instance=${instance// /}
# instance=${instance//port=/}
# if [ "$instance" != "3306" ]
# then
2014-12-30 10:08:08 +01:00
# mysqldump -P $instance --opt --all-databases --hex-blob -u mysqladmin -p$mysqladminpasswd > /home/backup/mysql.$instance.bak
2010-09-09 01:05:15 +02:00
# fi
#done
2010-09-09 01:05:15 +02:00
# 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
2011-08-17 11:02:39 +02:00
# Dump MongoDB
# Creation d'un utilisateur en lecture seule :
# > use admin
# > db.addUser("mongobackup", "PASS", true);
#mongodump -u mongobackup -pPASS -o /home/backup/mongodump/ >/dev/null 2>&1 |grep -v "^connected to:"
2011-08-17 11:02:39 +02:00
2012-10-27 18:27:18 +02:00
# Dump Redis
# cp /var/lib/redis/dump.rdb /home/backup/
## Dump ElasticSearch
## Disable ES translog flush
#curl -s -XPUT 'localhost:9200/_settings' -d '{"index.translog.disable_flush": true}' >/dev/null
## Flushes translog
#curl -s 'localhost:9200/_flush' | grep -qe '"ok":true'
## If it succeed, do an rsync of the datadir
#if [ $? -eq 0 ]; then
# rsync -a /var/lib/elasticsearch /home/backup/
#else
# echo "Error when flushing ES translog indexes."
#fi
## In any case re-enable translog flush
#curl -s -XPUT 'localhost:9200/_settings' -d '{"index.translog.disable_flush": false}' > /dev/null
2013-11-15 12:16:50 +01:00
2010-09-09 01:05:15 +02:00
# 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
2013-09-03 15:01:55 +02:00
for addr in 8.8.8.8 backup.evolix.net www.evolix.fr www.evolix.net; do
mtr -r $addr > /home/backup/mtr-${addr}
traceroute -n $addr > /home/backup/traceroute-${addr}
done
2010-09-09 01:05:15 +02:00
# Dump des processus
ps aux >/home/backup/ps.out
2010-09-09 01:05:15 +02:00
2013-06-30 13:18:54 +02:00
# Dump des connexions reseaux en cours
netstat -taupen >/home/backup/netstat.out
2012-03-14 17:52:41 +01:00
# Liste des paquets installes
dpkg -l >/home/backup/packages
2010-09-09 01:05:15 +02:00
HOSTNAME=$(hostname)
DATE=$(/bin/date +"%d-%m-%Y")
DEBUT=$(/bin/date +"%d-%m-%Y ; %H:%M")
if [ $SYSTEME = "linux" ]; then
2010-09-30 20:55:14 +02:00
rep="/bin /boot /lib /opt /sbin /usr"
2010-09-09 01:05:15 +02:00
else
2010-09-30 20:55:14 +02:00
rep="/bsd /bin /boot /sbin /usr"
2010-09-09 01:05:15 +02:00
fi
rsync -avzh --stats --delete --delete-excluded --force --ignore-errors --partial \
2010-09-30 20:55:14 +02:00
--exclude "lost+found" \
--exclude ".nfs.*" \
--exclude "/var/log" \
--exclude "/var/log/evobackup*" \
--exclude "/var/lib/mysql" \
--exclude "/var/lib/postgres" \
2011-07-01 17:28:43 +02:00
--exclude "/var/lib/postgresql" \
2010-09-30 20:55:14 +02:00
--exclude "/var/lib/sympa" \
--exclude "/var/lib/metche" \
--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" \
2010-10-26 01:18:17 +02:00
--exclude "dev" \
2010-09-30 20:55:14 +02:00
--exclude "/var/spool/postfix" \
--exclude "/var/lib/amavis/amavisd.sock" \
2014-12-29 18:25:45 +01:00
--exclude "/var/lib/munin/*.tmp" \
2010-09-30 20:55:14 +02:00
--exclude "/var/lib/php5" \
--exclude "/var/spool/squid" \
2013-11-15 12:16:50 +01:00
--exclude "/var/lib/elasticsearch" \
2014-12-22 18:35:35 +01:00
--exclude "/var/lib/amavis/tmp" \
2015-02-06 11:39:27 +01:00
--exclude "/var/lib/clamav/*.tmp" \
2015-01-16 11:38:48 +01:00
--exclude "/home/mysqltmp" \
2010-09-30 20:55:14 +02:00
$rep \
/etc \
/root \
/var \
/home \
/srv \
-e "ssh -p $SSH_PORT" \
root@node$NODE.backup.example.com:/var/backup/ \
| tail -30 >> /var/log/evobackup.log
2010-09-09 01:05:15 +02:00
FIN=$(/bin/date +"%d-%m-%Y ; %H:%M")
2010-09-30 20:55:14 +02:00
echo "EvoBackup - $HOSTNAME - START $DEBUT" \
>> /var/log/evobackup.log
2010-09-09 01:05:15 +02:00
2010-09-30 20:55:14 +02:00
echo "EvoBackup - $HOSTNAME - STOP $FIN" \
>> /var/log/evobackup.log
2010-09-09 01:05:15 +02:00
2010-09-30 20:55:14 +02:00
tail -10 /var/log/evobackup.log | \
mail -s "[info] EvoBackup - Client $HOSTNAME" \
$MAIL