{"id":153,"date":"2016-02-09T16:28:34","date_gmt":"2016-02-09T14:28:34","guid":{"rendered":"http:\/\/wp.alexandre-mesle.com\/?p=153"},"modified":"2016-02-19T13:09:34","modified_gmt":"2016-02-19T11:09:34","slug":"sauvegardes-avec-rsync","status":"publish","type":"post","link":"https:\/\/www.alexandre-mesle.com\/index.php\/2016\/02\/09\/sauvegardes-avec-rsync\/","title":{"rendered":"Sauvegardes avec rsync"},"content":{"rendered":"<div id=\"art-description\">\n<p>rsync est un outil puissant permettant de synchroniser des arborescences, pas n\u00e9cessairement sur la m\u00eame machine. Il est g\u00e9n\u00e9ralement utilis\u00e9 pour faire des sauvegardes, mais on peut aussi par exemple s&rsquo;en servir pour mettre un site en ligne.<\/p>\n<p>Il fait l&rsquo;inventaire des fichiers dans les deux r\u00e9pertoires et ne recopie que les fichiers soit qui n&rsquo;existent pas dans le r\u00e9pertoire cible, soit qui ont \u00e9t\u00e9 modifi\u00e9s depuis la derni\u00e8re copie. Comme scp, rsync utilise un tunnel ssh lorsque l&rsquo;un des deux r\u00e9pertoires (ou les deux) \u00e0 synchroniser est distant.<\/p>\n<p>Nous allons voir les bases de rsync et la fa\u00e7on dont on peut s&rsquo;en servir pour faire des sauvegardes, nous allons voir ensuite comment il est possible d&rsquo;automatiser cette t\u00e2che et de r\u00e9gler le probl\u00e8me du mot de passe (<a href=\"http:\/\/www.puddingonline.com\/~dave\/publications\/SSH-with-Keys-HOWTO\/document\/html\/SSH-with-Keys-HOWTO.html#toc4\">documentation<\/a>)<\/p>\n<\/div>\n<div class=\"box\">\n<h3 class=\"art-page-title\">Commande et options<\/h3>\n<p>Lorsque l&rsquo;on souhaite sauvegarder une arborescence sur un r\u00e9pertoire distant, on proc\u00e8de de la sorte :<\/p>\n<pre>rsync --progress -avz repertoiresource\/* login@hote:repertoirecible\/<\/pre>\n<p>D\u00e9taillons les options et arguments de cette commande :<\/p>\n<ul>\n<li>repertoiresource est le r\u00e9pertoire de votre disque dur dans lequel se trouve l&rsquo;arborescence \u00e0 sauvegarder<\/li>\n<li>login est votre login sur la machine distante<\/li>\n<li>hote est le nom d&rsquo;h\u00f4te de la machine distante<\/li>\n<li>repertoirecible est sur la machine le chemin vers le r\u00e9pertoire dans lequel vous souhaitez stocker les fichiers sauvegard\u00e9s<\/li>\n<li>&#8211;progress sert \u00e0 afficher une jauge \u00e0 chaque fois qu&rsquo;un fichier est transf\u00e9r\u00e9<\/li>\n<li>-avz : le <strong>v<\/strong> sert \u00e0 activer la verbosit\u00e9, le <strong>a<\/strong> pr\u00e9cise que l&rsquo;on utilise le mode \u00ab\u00a0archive\u00a0\u00bb (pr\u00e9servation des liens symboliques, des droits, etc.), <strong>z<\/strong> compresse les fichiers pendant le transfert.<\/li>\n<\/ul>\n<p>Vous remarquerez que pour que tout cela fonctionne, vous devez saisir votre mot de passe&#8230;<\/p>\n<p>A chaque fois que cette commande sera invoqu\u00e9e, le r\u00e9pertoire distant sera synchronis\u00e9 avec le r\u00e9pertoire source. Comme seuls les fichiers nouveaux ou modifi\u00e9s sont transf\u00e9r\u00e9s, la synchronisation est tr\u00e8s rapide. Vous noterez que contrairement \u00e0 ce que le mot synchronisation laisse entendre, la sauvegarde ne se fait que depuis la source vers la cible. Si vous modifiez des fichiers dans le r\u00e9pertoire cible, ils ne seront jamais recopi\u00e9s dans le r\u00e9pertoire source par rsync.<\/p>\n<div id=\"art-pages-list\">\n<h3 class=\"art-page-title\">Le mot de passe<\/h3>\n<p>Le probl\u00e8me qui se pose lorsque vous lancez la sauvegarde est que syst\u00e9matiquement un mot de passe vous est demand\u00e9. Le caract\u00e8re fastidieux de cette saisie peut, \u00e0 la longue, s&rsquo;av\u00e9rer fort p\u00e9nible. La solution qui a mes yeux semble la plus \u00e9l\u00e9gante est d&rsquo;utiliser la cryptographie asym\u00e9trique.<\/p>\n<p>Avant de lire la suite, vous devez accepter l&rsquo;id\u00e9e qu&rsquo;il est impossible de passer le mot de passe en argument \u00e0 rsync, il vous enverra promener syst\u00e9matiquement et je vous avoue qu&rsquo;au niveau s\u00e9curit\u00e9 \u00e7a laisserait franchement \u00e0 d\u00e9sirer.<\/p>\n<p>Pour commencer vous devez cr\u00e9er un couple de cl\u00e9s RSA, l&rsquo;une des cl\u00e9s est la cl\u00e9 publique et l&rsquo;autre la cl\u00e9 priv\u00e9e. La cl\u00e9 priv\u00e9e va vous servir \u00e0 signer \u00e9lectroniquement un document, et la cl\u00e9 publique servira \u00e0 v\u00e9rifier que la signature est correcte. Vous devez donc mettre sur le serveur distant votre cl\u00e9 publique et conserver sur votre disque dur votre cl\u00e9 priv\u00e9e. A chaque tentative de connexion, le serveur va vous envoyer une donn\u00e9e qui sera automatiquement sign\u00e9e \u00e0 l&rsquo;aide de votre cl\u00e9 priv\u00e9e, puis retourn\u00e9e au serveur. Le serveur va ensuite utiliser votre cl\u00e9 publique pour s&rsquo;assurer que la signature est correcte. Si c&rsquo;est le cas, la demande de connexion sera accept\u00e9e, sinon elle sera refus\u00e9e.<\/p>\n<p>Cela signifie que vous n&rsquo;aurez plus jamais besoin de saisir de votre mot de passe lorsque, depuis une machine disposant de votre cl\u00e9 publique, vous vous connecterez en ssh (ou avec une commande utilisant ssh, par exemple scp et rsync).<\/p>\n<p>Vous devrez donc :<\/p>\n<ul>\n<li>G\u00e9n\u00e9rer un couple de cl\u00e9s RSA<\/li>\n<li>Recopier votre cl\u00e9 publique sur le serveur<\/li>\n<\/ul>\n<p>Je me suis librement inspir\u00e9 <a href=\"http:\/\/www.linuxhorizon.ro\/ssh-wo-passw.html\">cette page<\/A>.<\/p>\n<h4>G\u00e9n\u00e9ration d&rsquo;un couple de cl\u00e9s<\/h4>\n<p>On g\u00e9n\u00e8re un couple de cl\u00e9s avec la commande ssh-keygen :<\/p>\n<pre>ssh-keygen -t rsa<\/pre>\n<p>Vous pouvez conserver toutes les options par d\u00e9faut. Une fois l&rsquo;ex\u00e9cution de cette commande termin\u00e9e, deux fichiers id_rsa et id_rsa.pub sont cr\u00e9es dans le rep\u00e9rtoire $HOME\/.ssh\/. id_rsa.pub est votre cl\u00e9 publique et id_rsa est votre cl\u00e9 priv\u00e9e.<\/p>\n<h4>Envoi de la cl\u00e9 publique sur le serveur<\/h4>\n<p>Il suffit d&rsquo;utiliser la commande scp pour envoyer id_rsa.pub sur le serveur ssh. On proc\u00e8de de la fa\u00e7on suivante :<\/p>\n<pre>scp $HOME\/.ssh\/id_rsa.pub login@hote:.ssh\/authorized_keys<\/pre>\n<p>login est votre login sur la machine distante, et hote est le hostname de la machine distante. Et pour la derni\u00e8re fois, vous devrez saisir votre mot de passe !Il ne faudra pas oublier de g\u00e9rer les droits du fichier $HOME\/.ssh\/authorized_keys en le mettant en 700 :<\/p>\n<pre>ssh login@hote \"chmod 700 .ssh\/authorized_keys\"<\/pre>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>rsync est un outil puissant permettant de synchroniser des arborescences, pas n\u00e9cessairement sur la m\u00eame machine. Il est g\u00e9n\u00e9ralement utilis\u00e9 pour faire des sauvegardes, mais on peut aussi par exemple s&rsquo;en servir pour mettre un site en ligne. Il fait&#8230; <a class=\"more-link\" href=\"https:\/\/www.alexandre-mesle.com\/index.php\/2016\/02\/09\/sauvegardes-avec-rsync\/\">Continue Reading &rarr;<\/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":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[],"class_list":["post-153","post","type-post","status-publish","format-standard","hentry","category-kitdesurvie"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8i9jg-2t","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/posts\/153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/comments?post=153"}],"version-history":[{"count":4,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/posts\/153\/revisions"}],"predecessor-version":[{"id":251,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/posts\/153\/revisions\/251"}],"wp:attachment":[{"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/media?parent=153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/categories?post=153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alexandre-mesle.com\/index.php\/wp-json\/wp\/v2\/tags?post=153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}