Accueil Rubriques Post-it Table des matières Me contacter Général (12) PHP (4) MySQL (1) XHTML & CSS (3) Debian (3) Ubuntu (7) Script de création de comptes Web print_rn() Script shell de sauvegarde automatique de comptes web Syndication RSS Atom Recherche Bookmarks Hop! Lectures UrukHai Perrick PENET Nicolas NUTTEN Tristan NITOT Olivier MEUNIER Thanh NGUYEN Maurice SVAY Frederic CAVAZZA Jean-Marc FONTAINE Laurent DENIS Nicolas PERRIAULT Denis BOUDREAU David LARLET Debuntu
Friends Beryl Pierre Guillaume Nico EV2I FR13 riders Marie ROUANET Stats ( 1 connecté) Recommandations 157456 visites 327838 pages vues 117pages vues today 30 articles 123 commentaires 12 trackbacks Accueil» Debian» Script shell de sauvegarde automatique de comptes web Windows Server 2008 Découvrez Windows Server 2008, le serveur sans limite, stable et sûr! www.microsoft.com CDP -Sauvegarde Continue Protégez les données PC & Portables en temps réel. Testez LiveBackup fr.atempo.com/ Sauvegarde Externalisée Sauvegarde Automatique Proactive Restauration immédiate de 5 à 500Go www.asp64.com Script shell de sauvegarde automatique de comptes web Tatane mardi 19 juillet 2005 à 13:38 Debian 5 RSS Cet article présente la réalisation d'un script shell permettant de sauvegarder tous les comptes web d'un serveur et de les transférer par FTP sur un serveur distant. Ce script a été initialement réalisé sur un serveur tournant sous GNU/Linux Debian Woody. Il permet de sauvegarder tous les sites d'un serveur mutualisé, sachant que chaque Virtual Host d'apache pointe sur un dossier situé dans /var/www. Aprés chaque sauvegarde on effacera l'ancienne sauvegarde de la semaine précédente. Paramétrage du script La première partie consiste à dénir les différentes variables du script: Conguration du FTP Conguration des noms de chiers de backup Conguration du FTP distant loginftp=votre_login passftp=votre_mdp hostftp=adresse_du_serveur_ftp Racine WWW www=/var/www Date du jour date=`date '+%d-%m-%y'`
Date d'il y a 7 jours date2=`date --date '7 days ago' "+%d-%m-%y"` Création des archives tar.gz Ensuite le script va boucler sur tous les répertoires (sites) contenus dans /var/www et compresser chaque site dans une archive unique qui sera placé dans le répertoire /home/administrateur/backup. Sous entendu vous avez un utilisateur nommé "Administrateur" qui a un répertoire "backup" dans son home, à adapter suivant vos besoins... tar -czf /home/administrateur/backup/backup_$rep\_$date.tar.gz $www/$rep/www Tar.gz de $rep OK Transfert des archives Maintenant que chaque site a été sauvegardé proprement dans une archive, il suft de transférer ces chiers sur un serveur FTP pour plus de sécurité. Après chaque transfert de chier le script va vérier, grace à la date contenue dans le nom du chier, si une version datant de 7 jours existe, si c'est le cas on l'efface an de ne pas surcharger le serveur de chiers plus ou moins volumineux. An d'effectuer le transfert FTP, j'utilise ici un client FTP en ligne de commande : NcFTP. letotransfert=/home/administrateur/backup/backup_$rep\_$date.tar.gz letodel=/home/administrateur/backup/backup_$rep\_$date2.tar.gz Transfert FTP ncftpput -u $loginftp -p $passftp $hostftp / $letotransfert Transfert FTP de backup_$rep\_$date.tar.gz OK Effacement du backup de la semaine d'avant if [ -f $letodel ]; then rm $letodel $letodel effac? Crontab Le script est maintenant terminé, il suft de paramétrer la crontab an de le lancer quotidiennement: crontab -e 00 05 * * * /home/blabla/backup.sh > backup_log.log Script complet!/bin/sh --------------------------------------------------------------- Script de backup des rã pertoires web de *** Author: Stà phane MUNOS Date: 20 octobre 2004 N?cessite le client FTP NCFTP apt-get install ncftp Crontab / tous les jours? 00h05 crontab -e 00 05 * * * /home/blabla/backup.sh --------------------------------------------------------------- ----- Paramà trage du script ----- Conguration du FTP distant loginftp=login passftp=pass hostftp=ip
Racine WWW www=/var/www Date du jour date=`date '+%d-%m-%y'` Date d'il y a 7 jours date2=`date --date '7 days ago' "+%d-%m-%y"` ---------- Lancement du script ---------- clear `date` ' Backup des rã pertoires web ' ---------- Crà ation des archives tar.gz ---------- tar -czf /home/administrateur/backup/backup_$rep\_$date.tar.gz $www/$rep/www Tar.gz de $rep terminã ' Backup terminã ' ' Transfert des backups par FTP ' ---------- Transfert des archives ---------- letotransfert=/home/administrateur/backup/backup_$rep\_$date.tar.gz letodel=/home/administrateur/backup/backup_$rep\_$date2.tar.gz Transfert FTP ncftpput -u $loginftp -p $passftp $hostftp / $letotransfert Transfert FTP de backup_$rep\_$date.tar.gz terminã Effacement du backup de la semaine derniã re if [ -f $letodel ]; then rm $letodel $letodel effacã ' Transferts terminã s ' Conclusion Ce script peut bien evidemment être adapté à votre guise, notamment en incluant dans le tar.gz un dump de votre SGBD. Vos commentaires sont les bienvenus! EDIT 04-08-2005 : j'ai rajouté la ligne pour le dump SQL avant de faire le tar.gz du Virtual Host : A rajouter en début de script : Password root mysql $passrootmysql=votrepassrootmysql A rajouter dans la boucle de création des archives : dump sql du compte ledumpsql=$www/$rep/dumpsql_$rep\_$date.sql /usr/bin/mysqldump $rep --user=root --password=passrootmysql -r "$ledumpsql" tar -czf /home/administrateur...
et voilà, avec ça vous un backup complet de votre site (chiers + bdd)! Trackbacks Aucun trackback pour le moment. Les trackbacks pour ce billet sont fermés. Commentaires 1. Le mardi 19 juillet 2005 à 17:59, par NiKo Mais c'est GENIAL ^^^ Bon ba ça fera un l RSS de plus dans mon agrégateur 2. Le mardi 19 juillet 2005 à 18:03, par Tatane je te rassure t'es ds le mien depuis un moment déjà! 3. Le mardi 19 juillet 2005 à 22:55, par NiKo Wow : flatted 4. Le mardi 18 octobre 2005 à 09:53, par Thanh Blogmarked aujourd'hui. Je sais je suis en retard... 5. Le mardi 31 janvier 2006 à 14:12, par chris 1 remarque sur le cyclage de l'archive : Si pour une raison ou une autre, une save n'est pas lancée via cron, le chier d'il y a une semaine ne sera jamais effacé, non? D'où ma proposition de cyclage des saves. Sinon, sympa, la boucle sur les répertoires Réf. : save et backup FTP. 6. Le mardi 31 janvier 2006 à 14:54, par Tatane exact, ça m'est déjà arrivé d'ailleurs aussi, parce que là ça grossit vite! nan ce qu'il faudrait ajouter c'est l'effacement des archives sur le FTP 7. Le mardi 31 janvier 2006 à 15:31, par chris Regarde ma soluce, elle fait l'effacement via FTP en écrasant (exemple de la save quotidienne) le chier save-x.tar.gz si on en est la rétention X. Le tout est de calculer X. Dans mon exemple : je lance une save quotidienne avec une rétention de 7 archives. Donc, X = NoJour modulo 7. 8. Le mercredi 6 septembre 2006 à 21:24, par Horde Il est pas mal du tout. Moi je proposerai, mais je ne sais pas le faire la création d'un chier log, puis l'envoi du log via un mail, ce qui permet de voir si le script à bien fait son travail. 9. Le lundi 16 avril 2007 à 10:04, par alex hi nice site. Ajouter un commentaire Les commentaires pour ce billet sont fermés. Tatane.com Stéphane MUNOS 2005 Rejoindre mon réseau de contacts sur Viaduc