ToutSurTout.biz
[Backup UNIX] Faire le backup automatique d'une table et d'un ftp


Un des gros problème des sites pour le moment est que quand leur serveur plante ou que leur méchant hébergeur bloque leur compte, leur dernier backup remonte à 2-3 semaine voir plus !
Résultats, membres mécontent, et données perdues !

Mais voilà la solution :

Description

Je vais faire 2 scripts en bash qui après avoir récupéré les données, vont les compresser et ensuite les envoyer par email, mais vous pouvez modifier les scripts selon vos besoins

PS: Il faut au préalable avoir configurer l'envoie de mail sur votre serveur
Pour les débutants: ssmtp
Pour les experts: Postfix

Et créez le dossier backup dans /root
# mkdir /root/backup

Les paquets nécessaires et mise à jour

# apt-get update # Mise à jour des paquets
# apt-get install bzip2 # Programme de compression/décompression
# apt-get install mutt # Programme d'envoie de mail

Le backup du FTP

# nano backupftp.sh

Code :

#!/bin/bash NOW="$(date +"%d-%m-%Y_%Hh%M")" # Récupère la date et l'heure tar -cf VotreNomDeFichier.$NOW.tar /var/www/ 2>/dev/null # Fait une archive du dossier bzip2 -9 VotreNomDeFichier.$NOW.tar.bz2 # Compresse echo "Backup du FTP Date: $NOW Serveur: NomDeVotreServeur" | mutt -s "[Backup du FTP] $NOW" -a "VotreNomDeFichier.$NOW.tar.bz2" votrenom@email.com # Envoie l'email avec le fichier mv VotreNomDeFichier.$NOW.tar.bz2 /root/backup/ # Déplace le fichier dans un répertoire prévu à cette effet

Faites CTRL+X pour quitter
Cliquez ensuite sur O pour accepter ou Y si vous êtes sur une machine en anglais
Terminez par Entrer
# chmod +x backupftp.sh # Pour rendre votre fichier exécutable
# ./backupftp.sh # Pour executer le fichier

Le backup de MySQL

# nano backupsql.sh

Code :

#!/bin/bash NOW="$(date +"%d-%m-%Y_%Hh%M")" # Récupère la date et l'heure mysqldump -uNomUtilisateur -pMotDePasse --opt NomDeLaBase > VotreNomDeFichier.$NOW.sql # Récupère la base bzip2 -9 VotreNomDeFichier.$NOW.sql # Compresse echo "Backup de MySQL Date: $NOW Site: NomDeVotreServeur" | mutt -s "[Backup de MySQL] $NOW" -a "VotreNomDeFichier.$NOW.sql.bz2" votrenom@email.com # Envoie l'email avec le fichier mv VotreNomDeFichier.$NOW.sql.bz2 /root/backup/ # Déplace le fichier dans un répertoire prévu à cette effet

Faites CTRL+X pour quitter
Cliquez ensuite sur O pour accepter ou Y si vous êtes sur une machine en anglais
Terminez par Entrer
# chmod +x backupsql.sh # Pour rendre votre fichier exécutable
# ./backupsql.sh # Pour exécuter le fichier

Dès que tous fonctionnent vous pouvez utiliser crontab pour que les scripts s'exécutent tous seuls.

# nano /etc/crontab

Ajoutez à la suite du fichier :

00 2 * * * root /etc/cron.d/backupftp.sh
00 1 * * * root /etc/cron.d/backupsql.sh

Ceci exécutera en tant que root le script backupftp.sh à 2h du matin chaque jour et à 1h du matin le script backupsql.sh