Backups MySQL
Mise en place d’un script et d’une tâche planifiée pour sauvegarder les bases de données.
Dans le répertoire /usr/local/sbin, créez d’abord le fichier de configuration contenant les accès à MySQL.
touch backup_mysql_config.cnf
Contenu du fichier backup_mysql_config.cnf :
[client] user = 'MYSQL_USER' password = 'MYSQL_PASSWORD' host = 'localhost'
Créer ensuite le fichier backup_mysql.sh
touch backup_mysql.sh
Placez y le code suivant en spécifiant le dossier de sauvegarde ainsi que le user/mdp pour manipuler MySQL.
#!/bin/bash # Date de la sauvegarde au format YYYYMMDD DATE=$(date +"%Y%m%d") # Dossier où sauvegarder les backups # Dossier non créé par le script, veillez à le faire avant BACKUP_DIR="/backup/mysql" # Commandes MySQL MYSQL=/usr/bin/mysql MYSQLDUMP=/usr/bin/mysqldump # Bases de données MySQL à ignorer SKIPDATABASES="Database|information_schema|performance_schema|mysql|phpmyadmin" # Durée de vie des archives LIFETIME=7 # Création du répertoire pour les sauvegardes mkdir -p $BACKUP_DIR/$DATE # Select des databases databases=`$MYSQL --defaults-extra-file=/usr/local/sbin/backup_mysql_config.cnf -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"` # Dump des bases de données, gzip for db in $databases; do echo $db $MYSQLDUMP --defaults-extra-file=/usr/local/sbin/backup_mysql_config.cnf --force --opt --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz" done # Suppression des archives au delà de LIFETIME find $BACKUP_DIR/* -mtime +$LIFETIME -delete
Important, il faut que l’option –defaults-extra-file=backup_mysql_config.cnf soit placée en premier dans la liste des options.
Donnez les bons droits au fichier.
chmod 755 backup_mysql.sh
Modifiez le crontab du serveur pour executer le script tous les jours à 3h du matin. Ouvrez la crontab :
vi /etc/crontab
0 3 * * * root /usr/local/sbin/backup_mysql.sh
Sauvegardez la crontab et terminez par :
service cron restart
Backup des fichiers
Suivant le même principe, nous allons procéder à la sauvegarde des dossiers des sites Internet hébergés.
Toujours dans /usr/local/sbin, créer le fichier backup_www.sh
touch backup_www.sh
Coller le contenu suivant :
#!/bin/bash # Date de la sauvegarde au format YYYYMMDD DATE=$(date +"%Y%m%d") # Dossier où sauvegarder les backups # Dossier non créé par le script, veillez à le faire avant BACKUP_DIR="/var/backups" # Dossiers à ignorer IGNORED="html" # Durée de vie des archives LIFETIME=3 FOLDERS=`ls -d /var/www/*/ | grep -Ev "($IGNORED)"` for folder in $FOLDERS; do archive=$BACKUP_DIR/$DATE/$(basename $folder)".tar.gz" mkdir -p $BACKUP_DIR/$DATE tar zcvfP $archive $folder echo Archive : $archive du dossier $folder done # Suppression des archives au delà de LIFETIME find $BACKUP_DIR/* -mtime +$RETENTION -delete
Modifiez le crontab du serveur pour executer le script tous les mardis à 1h du matin. Ouvrez la crontab :
vi /etc/crontab
# Tous les mardis à 1h du matin * 1 * * 2 root /usr/local/sbin/backup_www.sh >/dev/null 2>&1
Sauvegardez la crontab et terminez par :
service cron restart
Lien utiles :
- https://crontab-generator.org/
Une réponse