Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.

Pourquoi ?

Si vous vous posez la question, il y'a déjà un soucis. On fait des sauvegardes pour éviter de se retrouver face à un joli repertoire vide où à une config qu'on avait faîtes aux petits oignons et qui nous a pris une soirée. Bref, c'est juste indispensable.

Comment ?

Il y'a plein de méthodes qui existent. Des logiciels, on peut faire une image complète de son système afin de tout réinstaller. Je trouve ça long et trop volumineux à transporter. De plus ça n'exclus pas des corruptions du fichiers, des soucis de compatibilités, etc..

Il y'a également l'emploi de Backup Manager qui permet de créer des fichiers .tar.gz et de les pousser sur un serveur, de les graver sur un CD, bref ça semblait la solution la plus adaptée. Seulement, le temps que cela m'aurait pris à configurer ce logiciel, j'avais aussi vite fait de me faire un script maison et c'est ce que j'ai fait. En plus, je suis sûr de ce qui se passe et puis…c'est fun :).

OK. On le fait?

Bah… ouais ? Allez on y va, je vais copier/coller mon script ici et ajoutez quelque commentaire (les commandes étant plutôt évidentes, ça vous donnera une idée pour faire le votre, sachez que ça ne m'a pris qu'une heure pour faire tout cela)

#!/bin/sh
 
DATE=$(date +%d-%m-%Y-%H-%M)
DATEJ=$(date +%d-%m-%Y)
num_month=$(date +%e)
num_weekday=$(date +%u)
num_week=$(date +%W)
 
mkdir /var/www/geekboy.fr/www/stuff/backup/data/config/
mkdir /var/www/geekboy.fr/www/stuff/backup/data/config/apache
mkdir /var/www/geekboy.fr/www/stuff/backup/data/config/irssi
 
# Ce script doit être executer avec les droits de superutilisateur
test -w /root; 
if [ ! "$?" -eq "0" ]; then 
	echo "Vous devez executer ce script en tant que superutilisateur."
	exit 0
fi 
 
echo -en "Backup $HOSTNAME : \E[47;31m\033[1mSTART\033[0m \n"
J'aime bien sauvegarder mes configs, ça m'évite beaucoup de boulot par la suite et ça me force à faire des configs aux petits oignons ! Ici je sauvegarde toutes mes confs Apache, mes VHost et même mon fancy listing.

echo -en "--> Saving Apache config files : \E[47;31m\033[1mstart\033[0m \n"
cp -R /etc/apache2/conf.d/ /var/www/geekboy.fr/www/stuff/backup/data/config/apache/
cp -R /etc/apache2/apache2.conf /var/www/geekboy.fr/www/stuff/backup/data/config/apache/
cp -R /usr/share/apache2/icons/ /var/www/geekboy.fr/www/stuff/backup/data/config/apache/
cp -R /etc/apache2/mods-available/autoindex.conf /var/www/geekboy.fr/www/stuff/backup/data/config/apache/
cp -R /etc/apache2/sites-available/ /var/www/geekboy.fr/www/stuff/backup/data/config/apache/
echo -en "--> Saving Apache config files : \E[47;32m\033[1mdone\033[0m \n"

Les motd et banniere sshd sont embêtantes à remettre en places, alors autant tout automatiser !

echo -en "--> Saving sshd config files : \E[47;31m\033[1mstart\033[0m \n"
cp -R /etc/ssh/sshd_config /var/www/geekboy.fr/www/stuff/backup/data/config/
cp -R /etc/ssh/banniere /var/www/geekboy.fr/www/stuff/backup/data/config/
cp -R /var/run/motd /var/www/geekboy.fr/www/stuff/backup/data/config/
echo -en "--> Saving sshd config files : \E[47;32m\033[1mdone\033[0m \n"

echo -en "--> Saving MySQL config files : \E[47;31m\033[1mstart\033[0m \n"
cp -R /etc/mysql/my.cnf /var/www/geekboy.fr/www/stuff/backup/data/config/
echo -en "--> Saving MySQL config files : \E[47;32m\033[1mdone\033[0m \n"
 
echo -en "--> Saving PHP config files : \E[47;31m\033[1mstart\033[0m \n"
cp -R /etc/php5/apache2/php.ini /var/www/geekboy.fr/www/stuff/backup/data/config
echo -en "--> Saving PHP config files : \E[47;32m\033[1mdone\033[0m \n"
Mes configs à moi, elles sont adaptés à mon usage quotidien.

echo -en "--> Saving config files : \E[47;31m\033[1mstart\033[0m \n"
cp -R /home/kinji/.vimrc /var/www/geekboy.fr/www/stuff/backup/data/config/
cp -R /home/kinji/.bashrc /var/www/geekboy.fr/www/stuff/backup/data/config/
cp -R /home/kinji/.irssi/config /var/www/geekboy.fr/www/stuff/backup/data/config/irssi/
echo -en "--> Saving config files : \E[47;32m\033[1mdone\033[0m \n"

J'optimise mes bases de données SQL avant de les dumper.

echo -en "--> Opti MySQL : \E[47;31m\033[1mstart\033[0m \n"
mysqlcheck --auto-repair -a -o -s -h localhost -B geekboy -pPASSWORD -ugeekboy 
mysqlcheck --auto-repair -a -o -s -h localhost -B restinpieces -pPASSWORD -uroot
echo -en "--> Opti MySQL : \E[47;32m\033[1mdone\033[0m \n"

echo -en "--> Dump SQL : \E[47;31m\033[1mstart\033[0m \n"
cd /var/www/geekboy.fr/www/stuff/backup/data/
mysqldump --opt -h localhost -B geekboy -pPASSWORD -ugeekboy | gzip -9 > backup-geekboy-${DATE}.sql.gz
mysqldump --opt -h localhost -B restinpieces -pPASSWORD -uroot | gzip -9 > backup-rip-${DATE}.sql.gz
echo -en "--> Dump SQL : \E[47;32m\033[1mdone\033[0m \n"
Je dump ici le trac actuellement présent sur mon serveur, si il y'en a d'autre, il suffit de copier/coller ce bloc et de l'adapter.

echo -en "--> Dump Trac VI51 : \E[47;31m\033[1mstart\033[0m \n"
trac-admin /var/trac/VI51 hotcopy /var/www/geekboy.fr/www/stuff/backup/data/trac/VI51 > /dev/null 2>&1
tar -cjf /var/www/trac_vi51.tar.bz2 /var/www/geekboy.fr/www/stuff/backup/data/trac/VI51 > /dev/null 2>&1
rm -Rf /var/www/geekboy.fr/www/stuff/backup/data/trac/VI51/ 
mv /var/www/trac_vi51.tar.bz2 /var/www/geekboy.fr/www/stuff/backup/data/
echo -en "--> Dump Trac VI51 : \E[47;32m\033[1mdone\033[0m \n"

Si je sauvegarde mon trac, je vais pas laisser mon svn en plan…

echo -en "--> Dump Subversion VI51 : \E[47;31m\033[1mstart\033[0m \n"
svnadmin dump /var/svn/VI51 > /var/www/geekboy.fr/www/stuff/backup/data/VI51.svndump
echo -en "--> Dump Subversion VI51 : \E[47;32m\033[1mdone\033[0m \n"

Toute la partie qui suit consiste à sauvegarder mes différents sites et applications disponibles sur mon serveur.

echo -en "--> TAR f00.fr : \E[47;31m\033[1mstart\033[0m \n"
cd /var/www/
tar -cjf /var/www/f00.tar.bz2 f00.fr/
echo -en "--> TAR f00.fr : \E[47;32m\033[1mdone\033[0m \n"

echo -en "--> TAR geekb*y : \E[47;31m\033[1mstart\033[0m \n"
cd /var/www/
tar --exclude=www/stuff/backup/intermediates --exclude=www/stuff/backup/weekly --exclude=www/stuff/backup/month -cjf /var/www/geekboy.tar.bz2 geekboy.fr/
echo -en "--> TAR geekb*y : \E[47;32m\033[1mdone\033[0m \n"
 
#echo -en "--> TAR RestInPieces : \E[47;31m\033[1mSTART\033[0m \n"
#cd /var/www/
#tar -cjf /var/www/rip.tar.bz2 restinpieces/
#echo -en "--> TAR RestInPieces : \E[47;32m\033[1mdone\033[0m \n"
 
mv /var/www/f00.tar.bz2 /var/www/geekboy.fr/www/stuff/backup/data/
#mv /var/www/rip.tar.bz2 /var/www/geekboy.fr/www/stuff/backup/data/
mv /var/www/geekboy.tar.bz2 /var/www/geekboy.fr/www/stuff/backup/data/
echo -en "--> Moving tar ball archives to final destination"
 
rm /var/www/geekboy.fr/www/stuff/backup/data/backup-geekboy-*.sql.gz
rm /var/www/geekboy.fr/www/stuff/backup/data/backup-rip-*.sql.gz
echo "Removing SQL dump"
 
mkdir /var/www/geekboy.fr/www/stuff/backup/data/${DATEJ}
mv /var/www/geekboy.fr/www/stuff/backup/data/* /var/www/geekboy.fr/www/stuff/backup/data/${DATEJ}
Ici, on va gérer les “dates”. Un peu à la OVH avec les screenshots qu'ils proposent. Tout les jours, je fais un backup à minuit. Ce backup va dans backup/intermediates/DD-MM-YYYY, tout les lundis, je mets le backup dans backup/weekly/DD-MM-YYYY et j'efface le contenu de intermediates. Et enfin, le dernier lundi du mois, je mets le backup dans backup/month, supprime le contenu de weekly. Je vais sûrement rajouter quelque lignes afin de déplacer mon backup mensuel sur un autre disque dur. Il faudra juste penser, une fois par an à aller vider un peu backup/month pour éviter le surplus des données.

if [ "$num_weekday" == 1 ] && [ "$num_week%4" == 0 ]; then
        mv /var/www/geekboy.fr/www/stuff/backup/data/* /var/www/geekboy.fr/www/stuff/backup/month
        rm -Rf /var/www/geekboy.fr/www/stuff/backup/weekly/*
        echo -en "--> Moving tar ball archives to final destination"
else
        if [ "$num_weekday" == 1 ] && [ "$num_week%4" != 0 ]; then
                mv /var/www/geekboy.fr/www/stuff/backup/data/* /var/www/geekboy.fr/www/stuff/backup/weekly
                rm -Rf /var/www/geekboy.fr/www/stuff/backup/intermediates/*
                echo -en "--> Moving tar ball archives to final destination"
        else
                mv /var/www/geekboy.fr/www/stuff/backup/data/* /var/www/geekboy.fr/www/stuff/backup/intermediates
                echo -en "--> Moving tar ball archives to final destination"
        fi
fi

echo -en "Backup : \E[47;32m\033[1mDONE\033[0m \n"

Comment je restaure ?

Il vous suffit très logiquement de faire l'inverse de votre sauvegarde. Extraire vos fichiers aux endroits kivonbien, remplacer les configs par défaut avec les votres, etc.. Bien évidemment, ne faîtes pas ça stupidemment, adaptez vous un minimum et vous pourrez réinstaller un serveur tout entier en un rien de temps !

tutorial/ubuntu/tutorial_sauvegarder_votre_serveur.txt · Dernière modification: 2009/06/21 19:58 (édition externe)
Piste: tutorial_garder_son_serveur_a_jour tutorial_installer_wii_media_center tutorial_installer_et_configurer_apache_php tutorial_installer_subversion_trac_et_module_apache post-it_screenshot_console tutorial_installer_htop post-it_tips_ubuntu post-it_gnu_privacy_guard post-it_firewall_pour_un_dedie tutorial_sauvegarder_votre_serveur
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0