{"id":30,"date":"2020-06-17T03:32:57","date_gmt":"2020-06-17T01:32:57","guid":{"rendered":"https:\/\/www.olivierlange.com\/?p=30"},"modified":"2020-06-17T03:37:20","modified_gmt":"2020-06-17T01:37:20","slug":"backup-journalier-serveur-script","status":"publish","type":"post","link":"https:\/\/olivierlange.com\/index.php\/2020\/06\/17\/backup-journalier-serveur-script\/","title":{"rendered":"Backup journalier serveur \u2013 script"},"content":{"rendered":"\n<p class=\"has-text-align-center\"><em>Attention&#8230; Cet article a \u00e9t\u00e9 \u00e9crit en f\u00e9vrier 2009 &#8211; Je ne l&rsquo;ai aps encore r\u00e9actualis\u00e9, juste transf\u00e9r\u00e9 !<\/em><\/p>\n\n\n\n<p>Quand on a un serveur d\u00e9di\u00e9, ou m\u00eame un poste sous Linux, on d\u00e9sire effectuer des sauvegardes, de mani\u00e8re r\u00e9guli\u00e8re.<\/p>\n\n\n\n<p>Je vous propose ici le script que j\u2019utilise se mes serveurs d\u00e9di\u00e9s, afin d\u2019effectuer une sauvegarde journali\u00e8re de mes sites, ainsi que de la base de donn\u00e9e concern\u00e9e. Le script permets de garder un historique de 7 jours des fichiers et des bases de donn\u00e9es. Il ne s\u2019agit pas d\u2019un backup incr\u00e9mentiel, mais bien total. Pourquoi? Par simplicit\u00e9, pour \u00e9viter d\u2019\u00e9ventuels probl\u00e8mes de perte de donn\u00e9es interm\u00e9diaires, et parce que le backup que j\u2019utilise (backup fournis avec mon d\u00e9di\u00e9 chez OVH) ne me permets que de faire du ftp =&gt; pas de rsync.<\/p>\n\n\n\n<p>Le script effectue 2 sauvegardes. Tout d\u2019abords il r\u00e9cup\u00e8re un dump de la base de donn\u00e9e (dump compl\u00e8te), puis il compresse chaque r\u00e9pertoire s\u00e9par\u00e9ment. Finalement, il effectue un backup complet directement sur le ftp. Il faut pr\u00e9voir suffisament de place sur le disque. D\u2019autant que le script garde en local une copie des backups des 7 jours. Il est possible de les supprimer, pour cela, il suffit de faire un rm -rf du r\u00e9pertoire du jour (1-7) et de le recr\u00e9er.<\/p>\n\n\n\n<p>N\u00e9anmoins, je vous proposerais prochainement un script plus perfectionner, permettant de faire \u00e0 la fois du rsync sur un serveur distant, et du ftp. Il s\u2019agit d\u2019un script sans grandes pr\u00e9tentions, mais qui permets d\u2019avoir un backup fiable et simple \u00e0 mettre en place!<\/p>\n\n\n\n<p>N\u2019oubliez pas d\u2019adapter les informations de configuration en haut du script, de lui donner les droits d\u2019ex\u00e9cution, et de le placer dans le crontab! Parmis les outils n\u00e9cessaires au fonctionnement du script, pensez \u00e0 installer ncftp (aptitude install ncftp), afin de disposer du programme ncftput.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n\n\n\n# Les constantes\nftp_login=\u201d\u2019\nftp_pwd=\u201d\nftp_host=\u201d\nbdd_login=\u201d\nbdd_pwd=\u201d\npath_site=\u201d\npath_bkp=\u201d\npath_ftp=\u201d\nemail_log=\u201d\ndate=`date`\n\n# erreurs de ncftput\ndeclare -a CDERR\nCDERR&#91;1]=\u201dCould not connect to remote host.\u201d\nCDERR&#91;2]=\u201dCould not connect to remote host \u2013 timed out.\u201d\nCDERR&#91;3]=\u201dTransfer failed.\u201d\nCDERR&#91;4]=\u201dTransfer failed \u2013 timed out.\u201d\nCDERR&#91;5]=\u201dDirectory change failed.\u201d\nCDERR&#91;6]=\u201dDirectory change failed \u2013 timed out.\u201d\nCDERR&#91;7]=\u201dMalformed URL.\u201d\nCDERR&#91;8]=\u201dUsage error.\u201d\nCDERR&#91;9]=\u201dError in login configuration file.\u201d\nCDERR&#91;10]=\u201dLibrary initialization failed.\u201d\nCDERR&#91;11]=\u201dSession initialization failed.\u201d\nCDERR&#91;142]=\u201dDelai depasse pour la connexion.\u201d\n\nstart=\u201dfile debut : $date \u2014 \u201d\nid=`date +%u`\n\n`mysqldump -u $bdd_login -p$bdd_pwd \u2013all-database > $path_bkp\/$id\/mysqldump_$id.sql`\nfor site in `ls $path_site`\ndo\n`rm -Rf $path_bkp\/$id\/$site\u201d_\u201d$id.tgz`\n`tar czf $path_bkp\/$id\/$site\u201d_\u201d$id.tgz $path_site\/$site`\ndone\n\n`tar \u2013create \u2013gzip \u2013file \u2013 $id | ncftpput -v -u $ftp_login -p $ftp_pwd -c $ftp_host $path_ftp\/$id.tgz`\n\nres_ftp=$?\nif &#91; $res_ftp != \"0\" ]; then\n`echo ${CDERR&#91;$res_ftp]} | mailx -s \u201cERREUR LORS DU BACKUP DES FICHIERS !!!\u201d $email_log`\nfi\n\ndate=`date`\necho $start \u201cfin: $date\u201d\n\n`ls -la $path_bkp\/$id\/ | mailx -s \u201cBackup du $date\u201d $email_log`<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Attention&#8230; Cet article a \u00e9t\u00e9 \u00e9crit en f\u00e9vrier 2009 &#8211; Je ne l&rsquo;ai aps encore r\u00e9actualis\u00e9, juste transf\u00e9r\u00e9 ! Quand on a un serveur d\u00e9di\u00e9,&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/olivierlange.com\/index.php\/2020\/06\/17\/backup-journalier-serveur-script\/\">Continuer la lecture<span class=\"screen-reader-text\">Backup journalier serveur \u2013 script<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8,4],"tags":[],"_links":{"self":[{"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/posts\/30"}],"collection":[{"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/comments?post=30"}],"version-history":[{"count":1,"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/posts\/30\/revisions"}],"predecessor-version":[{"id":31,"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/posts\/30\/revisions\/31"}],"wp:attachment":[{"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/media?parent=30"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/categories?post=30"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/olivierlange.com\/index.php\/wp-json\/wp\/v2\/tags?post=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}