Petit script de sauvegarde d’un serveur Web avec Shell restreint

Hop, c’est cadeau, voici un script tout simple pour sauvegarder automatiquement et périodiquement son site web :

  • sauvegarde périodique (les fichiers sont conservés 15 jours)
  • sauvegarde des bases de données (variables à changer)
  • sauvegarde des fichiers du site (chemins à changer)

Ce n’est qu’un squelette, et vous êtes libres d’y ajouter votre grain de sel, n’hésitez pas à l’améliorer et à le partager ici !

 

?Download backup.sh
#!/bin/sh
 
#définitions des variables :
datedujour=$(date +%Y%m%d)
fichierdujour=$(date +%Y%m%d)-SqlBackup.tar.gz
datequinze=$(date -d '15 days ago' +%Y%m%d)
 
# On afficher les infos date du jour et autre pour le log.
echo "Date du jour : $datedujour"
echo "Fichier du jour : $fichierdujour"
echo "Date il y a 15 jours : $datequinze"
 
#On supprime  toutes les sauvegardes existantes dans le dossier d'exécution
rm -f *.sql
 
# La commande dump :
mysqldump -h localhost -u LOGIN_BDD -pPASSWORD NOM_BDD > BDD.sql
 
#on archive tous les backups dans un zip a la date du jour
# tar czf $fichierdujour *.sql
 
#on sauvegarde les fichiers du repertoire web
tar -cvzf www.tgz /public_html/
 
#on cree le répertoire du jour et y place les backups
mkdir ~/backup/auto/$datedujour
mv *.sql  ~/backup/auto/$datedujour/
mv www* ~/backup/auto/$datedujour/
 
#on supprime le répertoire d il y a 15 jours s'il existe
if test -d ~/backup/auto/$datequinze; then
echo 'suppression des anciens backups vieux de 15 jours ou plus'
rm -rf ~/backup/auto/$datequinze
fi
 
#on supprime le tar.gz du jour
rm -f $fichierdujour

Puis exécuter :

crontab -e

Pour y ajouter la cron suivante :

0 0 * * * /root/scripts/backup.sh

 

Je peux maintenant dormir tranquille, cron s’occupe de tout…

 

  • http://sciunto.wordpress.com François

    Plutot que mv, j’utiliserais rsync ou rdiff-backup. Les deux font de l’incrémental + miroir de l’état actuel. Les performances sont bien meilleures car seuls les delta sont envoyés.

  • Emilien

    rdiff-backup n’est pas installé sur le serveur (j’ai un shell restreint avec Cpanel fournis par mon prestataire). Je vais me pencher sur une utilisation de rsync et je modifierai l’article. Merci :-)

  • http://blog.junegros.fr djiock

    N’oublions pas l’excellent backuppc qui fait ça vraiment bien ! ;)

  • Emilien

    Oui, excellent outil, mais cependant il faut avoir l’accès root au serveur, ce qui n’est pas mon cas !

  • killman

    je suis justement en train de faire un script de backup ou j’utilise rsync pour l’incrémental. Il download les fichiers qui diffèrent et fait une archive .tar.gz à la date du jour. Dès qu’il est fini je posterai un lien en reprenant quelque une de tes idées! :)

    merci

  • killman

    il n’y a pas une petite erreur ?

    mysqldump -h localhost -u LOGIN_BDDD -pPASSWORD NOM_BDD > BDD.sql > BDD.sql le “>” est manquant il me semble.

  • Emilien

    Petit soucis HTML résolu, merci :-)

  • http://sciunto.wordpress.com François

    Voilà une implémentation de rsync avec miroir + delta : http://pastebin.com/fcctqSaH
    Tu as mon courriel si besoin.

  • Emilien

    Super, merci !

  • Pingback: Liens en vrac – 13 | Jérémy Verda's blog!