diff --git a/backup/backup_files b/backup/backup_files new file mode 100755 index 0000000..c94578b --- /dev/null +++ b/backup/backup_files @@ -0,0 +1,17 @@ +#!/bin/bash + +# Variables +BACKUP_ROOT_FILES="/backup/files" +BACKUP_FILES_RETENTION=10 + +# Starting backup +echo "Starting files backup process ..." + +# Backup server configuration +mkdir -p ${BACKUP_ROOT_FILES} +HOUR=`date +%Y%m%d%H%M` +tar czf ${BACKUP_ROOT_FILES}/files_${HOUR}.tar.gz /etc + +# Purge old backup +echo "Starting files purge process for backup older than ${BACKUP_PRODUCTS_RETENTION} ..." +find ${BACKUP_ROOT_FILES} -type f -mtime +${BACKUP_FILES_RETENTION} -exec rm -f {} \; diff --git a/backup/backup_ldap b/backup/backup_ldap new file mode 100755 index 0000000..a22ea8c --- /dev/null +++ b/backup/backup_ldap @@ -0,0 +1,26 @@ +#!/bin/bash + +TIMESTAMP=$(date +%Y%m%d-%H%M%S) +BACKUP_ROOT_LDAP=/backup/ldap +BACKUP_PATH_LDAP=${BACKUP_ROOT_LDAP}/${TIMESTAMP} +BACKUP_LDAP_RETENTION=10 + +# Let's go ! +echo "Starting ldap backup process ..." + +# Backup server configuration +mkdir -p ${BACKUP_PATH_LDAP} + +/usr/bin/nice /usr/sbin/slapcat -n 0 > ${BACKUP_PATH_LDAP}/config.ldif +/usr/bin/nice /usr/sbin/slapcat -n 1 > ${BACKUP_PATH_LDAP}/domain.ldif +chmod 640 ${BACKUP_PATH_LDAP}/*.ldif + +tar cpzf ${BACKUP_PATH_LDAP}/etc_ldap.tgz /etc/ldap >/dev/null 2>&1 +tar cpzf ${BACKUP_PATH_LDAP}/var_lib_ldap.tgz /var/lib/ldap >/dev/null 2>&1 + +HOUR=`date +%Y%m%d%H%M` +tar czf ${BACKUP_ROOT_LDAP}/ldap_${HOUR}.tar.gz ${BACKUP_PATH_LDAP} && rm -rf ${BACKUP_PATH_LDAP} + +# Purge old backup +echo "Starting ldap purge process for backup older than ${BACKUP_PRODUCTS_RETENTION} ..." +find ${BACKUP_ROOT_LDAP} -type f -mtime +${BACKUP_LDAP_RETENTION} -exec rm -f {} \; diff --git a/backup/backup_mail b/backup/backup_mail new file mode 100755 index 0000000..c819f63 --- /dev/null +++ b/backup/backup_mail @@ -0,0 +1,27 @@ +#!/bin/bash + +# Variables +MAIL_ROOT="/var/mail" +BACKUP_ROOT_MAIL="/backup/mail" +BACKUP_MAIL_RETENTION=31 + +# Starting mail backup +echo "Starting mail backup process ..." + +# Create directories if not exists +mkdir -p ${BACKUP_ROOT_MAIL} +HOUR=`date +%Y%m%d%H%M` + +# Create archive +for domain in `ls ${MAIL_ROOT}`; +do + mkdir -p ${BACKUP_ROOT_MAIL}/${domain} + for account in `ls ${MAIL_ROOT}/${domain}`; + do + tar czf ${BACKUP_ROOT_MAIL}/${domain}/${account}\_${HOUR}.tar.gz ${MAIL_ROOT}/${domain}/${account} + done +done + +# Purge old backup +echo "Starting mail purge process for backup older than ${BACKUP_MAIL_RETENTION} ..." +find ${BACKUP_ROOT_MAIL} -type f -mtime +${BACKUP_MAIL_RETENTION} -exec rm -f {} \; diff --git a/backup/backup_mysql b/backup/backup_mysql new file mode 100755 index 0000000..53a70be --- /dev/null +++ b/backup/backup_mysql @@ -0,0 +1,31 @@ +#!/bin/bash + +# Variables +BACKUP_ROOT_MYSQL="/backup/mysql" +MYSQL_BIN=/usr/bin/mysql +MYSQLDUMP_BIN=/usr/bin/mysqldump +MYSQL_USER=backupuser +MYSQL_PASSWORD=backuppwd +GZIP_BIN=/bin/gzip +BACKUP_ROOT_MYSQL_RETENTION=10 + +# Starting backup +echo "Starting MariaDB backup database process ..." + +# Create directories if not exists +mkdir -p ${BACKUP_ROOT_MYSQL} +HOUR=`date +%Y%m%d%H%M` + +# Backup with dump the structure +DATABASES=`${MYSQL_BIN} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e 'SHOW DATABASES' | grep -v - | grep -v Database | grep -v information_schema | grep -v performance_schema | grep -v \|` +for DB in $DATABASES; +do + ${MYSQLDUMP_BIN} -u ${MYSQL_USER} -p${MYSQL_PASSWORD} ${DB} | ${GZIP_BIN} > ${BACKUP_ROOT_MYSQL}/${DB}_${HOUR}.sql.gz + if [ $? -ne 0 ]; then + echo "ERROR - Dump for ${DB}" + fi +done + +# Purge old backup +echo "Starting MariaDB purge database process ..." +find ${BACKUP_ROOT_MYSQL} -type f -mtime +${BACKUP_ROOT_MYSQL_RETENTION} -exec rm -f {} \; diff --git a/backup/backup_websites b/backup/backup_websites new file mode 100755 index 0000000..2d8d698 --- /dev/null +++ b/backup/backup_websites @@ -0,0 +1,26 @@ +#!/bin/bash + +# Variables +WEBSITES="/var/www" +BACKUP_ROOT_WEBSITES="/backup/websites" +BACKUP_WEBSITES_RETENTION=10 + +# Starting websites backup +echo "Starting websites backup process ..." + +# Create directories if not exists +mkdir -p ${BACKUP_ROOT_WEBSITES} +HOUR=`date +%Y%m%d%H%M` + +# Create archive +for website in `ls ${WEBSITES}`; +do + tar czf ${BACKUP_ROOT_WEBSITES}/${website}\_${HOUR}.tar.gz ${WEBSITES}/${website} + if [ $? -ne 0 ]; then + echo "ERROR - Archiving website \"${website}\"" + fi +done + +# Purge old backup +echo "Starting websites purge process for backup older than ${BACKUP_WEBSITES_RETENTION} ..." +find ${BACKUP_ROOT_WEBSITES} -type f -mtime +${BACKUP_WEBSITES_RETENTION} -exec rm -f {} \; diff --git a/backup/certbot_deploy_hook b/backup/certbot_deploy_hook new file mode 100755 index 0000000..367c6ad --- /dev/null +++ b/backup/certbot_deploy_hook @@ -0,0 +1,14 @@ +#!/bin/bash + +# Starting certbot deploy_hook +echo "Starting certbot deploy_hook ..." + +# Reload nginx +nginx -t && service nginx reload +# Reload postfix +service postfix reload +# Reload dovecot +service dovecot reload + +# End deploy_hook +echo "End certbot deploy_hook process" diff --git a/backup/push_backup b/backup/push_backup new file mode 100755 index 0000000..50350b8 --- /dev/null +++ b/backup/push_backup @@ -0,0 +1,18 @@ +#!/bin/bash + +BACKUP_TARGET=W.X.Y.Z +BACKUP_PORT=XXX +BACKUP_MAC=AA:BB:CC:DD:EE:FF +BACKUP_TARGET_ROOT=/data/allella/ +TRANSFERT_USER=backupuser + +# First wake up ${BACKUP_TARGET} and wait ... +wakeonlan -i ${BACKUP_TARGET} ${BACKUP_MAC} +sleep 180 + +# Then +echo "Starting to push backup using ${BACKUP_TARGET}:${BACKUP_TARGET_ROOT}" +rsync -azp -e 'ssh -p ${BACKUP_PORT}' /backup /data ${TRANSFERT_USER}@${BACKUP_TARGET}:${BACKUP_TARGET_ROOT} + +# Stop +ssh -p ${BACKUP_PORT} ${TRANSFERT_USER}@${BACKUP_TARGET} 'sudo shutdown -h'