Skip to content

Instantly share code, notes, and snippets.

@youknowriad
Forked from bobey/dist_backup_script.sh
Last active August 29, 2015 14:05
Show Gist options
  • Save youknowriad/72eb376233400ecd940c to your computer and use it in GitHub Desktop.
Save youknowriad/72eb376233400ecd940c to your computer and use it in GitHub Desktop.
#!/bin/bash
# ----
#
# Script de backup serveur perso vers serveur distant
# Fonctionnemenent :
# 1. Targz de /var/www
# 2. Dump de toutes les bases de données MySql
# 3. Zip du backup courant avec protection par mot de passe
# 4. Envoi sur serveur distant
# 5. Suppression anciens backups
#
# ----
# Génération date de début
date_start=`date +'%d/%m/%Y @ %H:%M:%S'`;
# Récupération timestamp pour génération des noms de dossiers / fichiers de backup
timestamp=`date +%s`;
# Le nombre de jour que vous souhaitez archiver
keep='+15';
# Le répertoire de création du backup
build_dir=/tmp/backup/${timestamp}/;
# Génération du nom du fichier de backup (ZIP)
backup_file=${build_dir}/backup-server-${timestamp}.zip;
# Le chemin du rapport (celui-ci sera gardé, et envoyé par mail)
rapport=/tmp/backup/rapport.log;
sql_password='password';
backup_host='hostname.com';
# Mot de passe de cryptage gpg
backup_pwd='password';
# Username serveur distant
backup_user='username';
# Répertoire de backup distant
backup_path='/home/username/backup/';
# L'adresse mail qui recevra le rapport
mail='[email protected]';
# Création du repertoire de backup + Initialisation du rapport
mkdir -p ${build_dir};
echo -e 'Début du backup : '${date_start}'\n' > ${rapport};
# Sauvegarde de /var/www
echo '- Sauvegarde de /var/www/' >> ${rapport};
tar -zcf ${build_dir}www.tar.gz /var/www/ --exclude=app/cache/* --exclude=app/logs/* --exclude-vcs
# Création du dump de toutes les bases de données avec mysqldump
echo '- Dump de toutes les bases de données' >> ${rapport};
mysqldump -u root --password=${sql_password} --all-databases | gzip -9 > ${build_dir}/databases_dump.sql.gz;
# Zip du dossier de backup avec password
echo '- Création et protection par mot de passe du ZIP' >> ${rapport};
zip -P ${backup_pwd} -r ${backup_file} ${build_dir}
# Envoi du fichier de backup vers le serveur distant
fileinfo=`du -h ${backup_file}`;
echo "- Envoi du fichier de backup vers serveur distant (${fileinfo})" >> ${rapport};
scp ${backup_file} ${backup_user}@${backup_host}:${backup_path}
## Suppresion du dossier en local
echo '- Suppression des fichiers temporaires en local' >> ${rapport};
rm -rf ${build_dir};
echo -e "- Suppression des fichiers de backup de ${keep} jours\n" >> ${rapport};
ssh ${backup_user}@${backup_host} bash -c "'
find ${backup_path}*.zip -mtime ${keep};
find ${backup_path}*.zip -mtime ${keep} -exec rm {} \;
'" >> ${rapport}
# Génération date de fin
date_end=`date +'%d/%m/%Y @ %H:%M:%S'`;
# Finalisation du rapport + envoi par mail
echo -e 'Fin du backup : '${date_end} >> ${rapport};
mail -s "Backup serveur ${date_start}" ${mail} < ${rapport};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment