Browse Source

Add backup scripts

test
Julien Toscano 3 years ago
parent
commit
90c76c9c96
7 changed files with 159 additions and 0 deletions
  1. +17
    -0
      backup/backup_files
  2. +26
    -0
      backup/backup_ldap
  3. +27
    -0
      backup/backup_mail
  4. +31
    -0
      backup/backup_mysql
  5. +26
    -0
      backup/backup_websites
  6. +14
    -0
      backup/certbot_deploy_hook
  7. +18
    -0
      backup/push_backup

+ 17
- 0
backup/backup_files View File

@@ -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 {} \;

+ 26
- 0
backup/backup_ldap View File

@@ -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 {} \;

+ 27
- 0
backup/backup_mail View File

@@ -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 {} \;

+ 31
- 0
backup/backup_mysql View File

@@ -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 {} \;

+ 26
- 0
backup/backup_websites View File

@@ -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 {} \;

+ 14
- 0
backup/certbot_deploy_hook View File

@@ -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"

+ 18
- 0
backup/push_backup View File

@@ -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'

Loading…
Cancel
Save