{"id":1793,"date":"2010-09-04T07:45:28","date_gmt":"2010-09-04T05:45:28","guid":{"rendered":"http:\/\/www.collet-matrat.com\/?p=1793"},"modified":"2010-09-04T08:31:02","modified_gmt":"2010-09-04T06:31:02","slug":"howto-automatisez-la-sauvegarde-de-vos-serveurs-avec-rdiff-backup","status":"publish","type":"post","link":"https:\/\/www.collet-matrat.com\/?p=1793","title":{"rendered":"[HOWTO] Automatisez la sauvegarde de vos serveurs avec \u00ab\u00a0Rdiff-Backup\u00a0\u00bb"},"content":{"rendered":"<p style=\"text-align: center;\"><a href=\"http:\/\/rdiff-backup.nongnu.org\/\" target=\"_blank\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1824\" title=\"rdiff_logo\" src=\"https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/rdiff_logo.jpg?resize=500%2C182\" alt=\"\" width=\"500\" height=\"182\" srcset=\"https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/rdiff_logo.jpg?w=500&amp;ssl=1 500w, https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/rdiff_logo.jpg?resize=300%2C109&amp;ssl=1 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Si vous administrez des serveurs Linux vous vous \u00eates d\u00e9j\u00e0 probablement interrog\u00e9 sur la meilleure fa\u00e7on de sauvegarder vos syst\u00e8mes et donn\u00e9es. La t\u00e9l\u00e9-sauvegarde est une option particuli\u00e8rement int\u00e9ressante. Bien que <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Rsync\" target=\"_blank\"><em>Rsync<\/em><\/a> para\u00eesse naturellement le dispositif le mieux adapt\u00e9 \u00e0 cette t\u00e2che une autre solution existe : <em><a href=\"http:\/\/rdiff-backup.nongnu.org\/\" target=\"_blank\">Rdiff-backup<\/a><\/em>.<\/p>\n<p style=\"text-align: justify;\">Moins connu, ce dernier pr\u00e9sente de nombreux avantages : une gestion optimis\u00e9e des incr\u00e9ments, la cr\u00e9ation d'un miroir de fichiers ou de r\u00e9pertoires, la gestion automatis\u00e9e de l'effacement des anciens incr\u00e9ments, la compression des donn\u00e9es transf\u00e9r\u00e9es ... <em>Rdiff-Backup<\/em> est utilisable en \"local\" mais \u00e9galement dans le cadre d'un syst\u00e8me de t\u00e9l\u00e9-sauvegarde. Dans ce cas les \u00e9changes sont crypt\u00e9s en utilisant (de mani\u00e8re transparente) le protocole <em>SSH<\/em>.<\/p>\n<p style=\"text-align: justify;\">L'objectif de ce how-to est de pr\u00e9senter une m\u00e9thode permettant de r\u00e9aliser une sauvegarde \u00e0 distance, s\u00e9curis\u00e9e, automatis\u00e9e, sans aucune intervention de la part de l'administrateur (les proc\u00e9dures d'authentification reposant sur un syst\u00e8me de cl\u00e9s asym\u00e9triques).<\/p>\n<p style=\"text-align: justify;\">La distribution utilis\u00e9e pour la cr\u00e9ation de ce how-to est une \"<em>Ubuntu 10.04 LTS server<\/em>\", mais il ne devrait pas y avoir beaucoup de diff\u00e9rences si vous utilisez un autre Linux. Un serveur <em>SSH <\/em>doit \u00e9galement \u00eatre pr\u00e9sent sur les 2 machines.<\/p>\n<p style=\"text-align: justify;\">Derni\u00e8re pr\u00e9cision : afin de simplifier cette proc\u00e9dure j'utilise volontairement l'utilisateur \"<em>root<\/em>\" pour r\u00e9aliser la sauvegarde. Pour optimiser la s\u00e9curit\u00e9, les \"puristes\" pourront bien entendu adapter cette\u00a0 m\u00e9thode\u00a0 avec un autre compte utilisateur ...<\/p>\n<p>Dans le cadre de ce tutoriel nous allons utiliser deux serveurs :<\/p>\n<ul>\n<li style=\"text-align: justify;\">\"<em>srv-prod<\/em> \": qui correspond au serveur \"\u00e0 sauvegarder\" (IP dans ce how-to : 192.168.0.157)<\/li>\n<\/ul>\n<ul>\n<li style=\"text-align: justify;\">\"<em>srv-backup<\/em>\" : qui correspond au serveur destin\u00e9 \u00e0 h\u00e9berger la sauvegarde de <em>srv-prod<\/em><\/li>\n<\/ul>\n<p style=\"text-align: justify;\">On proc\u00e8de tout d'abord \u00e0 l'installation de \"<em>Rdiff-Backup<\/em>\" en lan\u00e7ant (sur les 2 serveurs) la commande<\/p>\n<blockquote><p>apt-get install rdiff-backup<\/p><\/blockquote>\n<p style=\"text-align: justify;\">On va ensuite g\u00e9n\u00e9rer les cl\u00e9s SSH n\u00e9cessaires \u00e0 l'authentification de \"<em>srv-backup<\/em>\" aupr\u00e8s de \"<em>srv-prod\"<\/em>. Cr\u00e9ez (si ce n'est pas d\u00e9j\u00e0 fait) sur \"<em>srv-backup<\/em>\" un r\u00e9pertoire nomm\u00e9 \"<em>\/root\/.ssh\/<\/em>\". On lance ensuite (sur ce m\u00eame serveur)\u00a0 la commande suivante :<\/p>\n<blockquote><p>ssh-keygen -t rsa -b 4096<\/p><\/blockquote>\n<p style=\"text-align: justify;\">R\u00e9pondez de la mani\u00e8re suivante aux questions pos\u00e9es par l'application :<\/p>\n<blockquote><p>Enter file in which to save the key (\/root\/.ssh\/id_rsa): <span style=\"text-decoration: underline;\"><span style=\"color: #ff0000;\"><strong>\/root\/.ssh\/rdiff_id_rsa<\/strong><\/span><\/span><\/p><\/blockquote>\n<p style=\"text-align: justify;\">Ne rien mentionner en r\u00e9ponse \u00e0 la question \"<em>Enter passphrase (empty for no passphrase):\". Idem pour \"Enter same passphrase again:<\/em>\"<\/p>\n<p style=\"text-align: justify;\">Suite \u00e0 cette op\u00e9ration, vous trouverez 2 fichiers au sein du r\u00e9pertoire \"<em>\/root\/.ssh<\/em>\" :<\/p>\n<ul>\n<li><em>rdiff_id_rsa<\/em> : qui correspond \u00e0 votre cl\u00e9 priv\u00e9e<\/li>\n<\/ul>\n<ul>\n<li><em>rdiff_id_rsa.pub<\/em> : votre cl\u00e9 publique (qui devra, par la suite, \u00eatre positionn\u00e9e sur le serveur de production ...<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Pour ce faire il est n\u00e9cessaire d'\u00e9diter le fichier <em>\"rdiff_id_rsa.pub\"<\/em> (avec un petit \"<em>cat \/root\/.ssh\/rdiff_id_rsa.pub<\/em>\" par exemple). Vous devriez obtenir une cha\u00eene de la forme :<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/cat_cle_pub1.jpg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1810 aligncenter\" title=\"cat_cle_pub\" src=\"https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/cat_cle_pub1.jpg?resize=500%2C157\" alt=\"\" width=\"500\" height=\"157\" srcset=\"https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/cat_cle_pub1.jpg?w=500&amp;ssl=1 500w, https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/cat_cle_pub1.jpg?resize=300%2C94&amp;ssl=1 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Bien entendu le contenu de votre fichier sera diff\u00e9rent car il s'agit de cl\u00e9s g\u00e9n\u00e9r\u00e9es al\u00e9atoirement (heureusement ... \ud83d\ude09 )<\/p>\n<p style=\"text-align: justify;\">Copiez ensuite cette cha\u00eene de caract\u00e8res afin de pouvoir la coller dans le fichier \"<em>\/root\/.ssh\/authorized_keys2<\/em>\" du serveur de production (\"<em>srv-prod\"<\/em>). Dans l'hypoth\u00e8se o\u00f9 ce r\u00e9pertoire (\"<em>.ssh\"<\/em>) et ce fichier (\"<em>authorized_keys2\"<\/em>) n'existent pas il sera n\u00e9cessaire de les cr\u00e9er manuellement. Attention aux droits \u00e0 appliquer sur le fichier \"<em>authorized_keys2<\/em>\" qui doivent \u00eatre positionn\u00e9s \u00e0 644 (\"<em>chmod 644 \/root\/.ssh\/authorized_keys2<\/em>\"). Il faut \u00e9galement s'assurer de copier la cha\u00eene de caract\u00e8res tel-quel sans y ajouter aucun caract\u00e8re n'y retour chariot.<\/p>\n<p style=\"text-align: justify;\">Une fois la cl\u00e9 copi\u00e9e, il est n\u00e9cessaire d'y ajouter (sur \"<em>srv-prod<\/em>\") certaines options comme illustr\u00e9 dans l'exemple ci-dessous :<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/authorized_keys2.jpg\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1813 aligncenter\" title=\"authorized_keys2\" src=\"https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/authorized_keys2.jpg?resize=496%2C171\" alt=\"\" width=\"496\" height=\"171\" srcset=\"https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/authorized_keys2.jpg?w=533&amp;ssl=1 533w, https:\/\/i0.wp.com\/www.collet-matrat.com\/wp-content\/uploads\/2010\/09\/authorized_keys2.jpg?resize=300%2C103&amp;ssl=1 300w\" sizes=\"auto, (max-width: 496px) 100vw, 496px\" \/><\/a>Les directives \u00e0 placer devant la cl\u00e9 sont les suivantes (il ne vous reste plus qu'\u00e0 copier \/ coller ...) : \"<em>command=\"rdiff-backup --server --restrict-read-only \/\",no-port-forwarding,no-X11-forwarding,no-pty<\/em> \". Il s'agit de mesures de s\u00e9curit\u00e9s compl\u00e9mentaires. En effet le serveur de backup s'authentifiant de mani\u00e8re automatis\u00e9e, il est int\u00e9ressant de limiter les op\u00e9rations r\u00e9alisables avec ce compte (pas de terminal, op\u00e9ration en lecture seule uniquement, pas de forward de ports ...).<\/p>\n<p style=\"text-align: justify;\">Sur le serveur \"<em>srv-backup<\/em>\" cr\u00e9ez le fichier \"<em>\/root\/.ssh\/config<\/em>\". Ce dernier va int\u00e9grer les \u00e9l\u00e9ments n\u00e9cessaires \u00e0 la connexion automatique au serveur de production. Le contenu de ce fichier est le suivant :<\/p>\n<blockquote>\n<p style=\"text-align: left;\">host 192.168.0.157<br \/>\nhostname 192.168.0.157<br \/>\nuser root<br \/>\nidentityfile \/root\/.ssh\/rdiff_id_rsa<br \/>\ncompression yes<br \/>\nprotocol 2<\/p>\n<\/blockquote>\n<p style=\"text-align: justify;\">Bien entendu vous devez remplacer l'IP (192.168.0.157) par l'adresse de votre serveur de prod (ou bien par son nom pleinement qualifi\u00e9). Vous pouvez \u00e9galement modifier le param\u00e8tre \"<em>compression<\/em>\" en le passant \u00e0 \"<em>no<\/em>\" si vous ne souhaitez pas compresser les donn\u00e9es \u00e9chang\u00e9es entre les deux serveurs.<\/p>\n<p style=\"text-align: justify;\">Cr\u00e9ez ensuite, sur \"<em>srv-backup<\/em>\" un r\u00e9pertoire au sein duquel seront stock\u00e9es les donn\u00e9es sauvegard\u00e9es. Par exemple \"<em>mkdir \/backup<\/em>\"<\/p>\n<p style=\"text-align: justify;\">Il ne reste plus qu'\u00e0 essayer de g\u00e9n\u00e9rer une sauvegarde d'un des r\u00e9pertoires du serveur de production (\"<em>\/etc<\/em>\" par exemple) en utilisant une commande du style :<\/p>\n<blockquote>\n<p style=\"text-align: left;\">rdiff-backup -v 5 root@192.168.0.157::\/etc \/backup\/etc<\/p>\n<\/blockquote>\n<p style=\"text-align: left;\">Vous allez voir appara\u00eetre un message du type :<\/p>\n<blockquote>\n<p style=\"text-align: left;\">The authenticity of host '192.168.0.157 (192.168.0.157)' can't be established.<br \/>\nRSA key fingerprint is 60:6b:12:0a:6f:bf:98:da:83:5c:43:16:f2:72:3c:29.<br \/>\nAre you sure you want to continue connecting (yes\/no)?<\/p>\n<\/blockquote>\n<p style=\"text-align: justify;\">r\u00e9pondez \"yes\" (cette question ne sera plus pos\u00e9e par la suite). Vous devriez voir la sauvegarde se r\u00e9aliser. Un petit contr\u00f4le du r\u00e9pertoire \"<em>\/backup\/etc<\/em>\" confirme la pr\u00e9sence des fichiers.<\/p>\n<p style=\"text-align: justify;\">Vous pouvez automatiser (via le <em>crontab<\/em>) cette t\u00e2che de sauvegarde en vous inspirant, apr\u00e8s adaptation, de ce script (merci \u00e0\u00a0 <a href=\"http:\/\/twitter.com\/ledeuns\" target=\"_blank\"><em>@ledeuns<\/em><\/a> pour sa contribution ) :<\/p>\n<blockquote>\n<p style=\"text-align: left;\">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n#!\/bin\/bash&lt;\/p&gt;\r\nRETCODE=&quot;&quot;\r\n\r\n### Sauvegarde ###\r\n\r\n\/usr\/bin\/rdiff-backup\u00a0 root@192.168.0.157::\/var \/backup\/var\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;VAR;&quot;; fi\r\n\/usr\/bin\/rdiff-backup\u00a0 root@192.168.0.157::\/etc \/backup\/etc\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;ETC;$RETCODE&quot;; fi\r\n\/usr\/bin\/rdiff-backup root@192.168.0.157::\/home \/backup\/home\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;HOME;$RETCODE&quot;; fi\r\n\/usr\/bin\/rdiff-backup root@192.168.0.157::\/root \/backup\/root\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;ROOT;$RETCODE&quot;; fi\r\n\/usr\/bin\/rdiff-backup root@192.168.0.157::\/usr \/backup\/usr\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;USR;$RETCODE&quot;; fi\r\n\r\n### Effacement des increments datant de plus de 2 semaines (2W) ###\r\n\r\n\/usr\/bin\/rdiff-backup --force --remove-older-than 2W \/backup\/var\/\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;DELVAR;$RETCODE&quot;; fi\r\n\/usr\/bin\/rdiff-backup --force --remove-older-than 2W \/backup\/etc\/\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;DELETC;$RETCODE&quot;; fi\r\n\/usr\/bin\/rdiff-backup --force --remove-older-than 2W \/backup\/home\/\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;DELHOME;$RETCODE&quot;; fi\r\n\/usr\/bin\/rdiff-backup --force --remove-older-than 2W \/backup\/root\/\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;DELROOT;$RETCODE&quot;; fi\r\n\/usr\/bin\/rdiff-backup --force --remove-older-than 2W \/backup\/usr\/\r\nif &#x5B; $? -ne 0 ]; then RETCODE=&quot;DELUSR;$RETCODE&quot;; fi\r\n\r\n### Envoi du rapport par mail ###\r\n\r\nif &#x5B; -z $RETCODE ]; then\r\necho &quot;&quot; | mail -s &quot;Sauvegarde effectuee&quot; votre@adresse.fr\r\nelse\r\necho &quot;$RETCODE&quot; | mail -s &quot;Sauvegarde en erreur&quot; votre@adresse.fr\r\nfi\r\n<\/pre>\n<\/blockquote>\n<p style=\"text-align: justify;\">Ce how-to n'ayant pas vocation \u00e0 d\u00e9crire d'une mani\u00e8re exhaustive le fonctionnement de <em>Rdiff-Backup<\/em>, je vous invite \u00e0 consulter le manuel d\u00e9taill\u00e9 disponible \u00e0 <a href=\"http:\/\/rdiff-backup.nongnu.org\/rdiff-backup.1.html\" target=\"_blank\">cette adresse<\/a> (vous pourrez y d\u00e9couvrir l'ensemble des commandes et options disponibles) !<\/p>\n<ul>\n<li>Le site officiel est disponible <a href=\"http:\/\/rdiff-backup.nongnu.org\/\" target=\"_blank\">ICI<\/a><\/li>\n<\/ul>\n<p style=\"text-align: left;\">\n<p style=\"text-align: left;\">\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">\n","protected":false},"excerpt":{"rendered":"<p>Si vous administrez des serveurs Linux vous vous \u00eates d\u00e9j\u00e0 probablement interrog\u00e9 sur la meilleure fa\u00e7on de sauvegarder vos syst\u00e8mes et donn\u00e9es. La t\u00e9l\u00e9-sauvegarde est une option particuli\u00e8rement int\u00e9ressante. Bien que Rsync para\u00eesse naturellement le dispositif le mieux adapt\u00e9 \u00e0 &hellip; <a href=\"https:\/\/www.collet-matrat.com\/?p=1793\">Lire la suite <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[91,7,86,100],"tags":[],"class_list":["post-1793","post","type-post","status-publish","format-standard","hentry","category-howto","category-linux","category-securite","category-stockage"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=\/wp\/v2\/posts\/1793","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1793"}],"version-history":[{"count":49,"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=\/wp\/v2\/posts\/1793\/revisions"}],"predecessor-version":[{"id":1846,"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=\/wp\/v2\/posts\/1793\/revisions\/1846"}],"wp:attachment":[{"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1793"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1793"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.collet-matrat.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1793"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}