<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Association Kelio &#187; backup</title>
	<atom:link href="http://blog.kelio.asso.fr/tag/backup/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kelio.asso.fr</link>
	<description>le blog de l&#039;asso</description>
	<lastBuildDate>Mon, 03 Jan 2011 20:38:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Mise en place d&#8217;un backup incrémental sur Kelio</title>
		<link>http://blog.kelio.asso.fr/2009/09/30/mise-en-place-dun-backup-incremental-sur-kelio/</link>
		<comments>http://blog.kelio.asso.fr/2009/09/30/mise-en-place-dun-backup-incremental-sur-kelio/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 01:48:19 +0000</pubDate>
		<dc:creator>Mogui</dc:creator>
				<category><![CDATA[Evolution]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[espace]]></category>
		<category><![CDATA[hebergement]]></category>
		<category><![CDATA[incremental]]></category>
		<category><![CDATA[Maintenance]]></category>
		<category><![CDATA[sauvegarde]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://blog.kelio.asso.fr/?p=9</guid>
		<description><![CDATA[Depuis quelques temps, nous cherchions une solution de sauvegarde incrémentale des données de nos hébergés. Après avoir testé de nombreux scripts basiques, des sauvegardes &#171;&#160;brutes&#160;&#187; directement sur ftp, nous avons conclu que cela s&#8217;avérait relativement peu fiable, et souple. Mais depuis le 28 septembre, un nouveau script est en place et répond parfaitement à la [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis quelques temps, nous cherchions une solution de sauvegarde incrémentale des données de nos hébergés.<br />
Après avoir testé de nombreux scripts basiques, des sauvegardes &laquo;&nbsp;brutes&nbsp;&raquo; directement sur ftp, nous avons conclu que cela s&#8217;avérait relativement peu fiable, et souple.</p>
<p>Mais depuis le 28 septembre, un nouveau script est en place et répond parfaitement à la tâche !</p>
<p>Dans nos recherches, nous sommes tombé <a href="http://www.skreo.net/article-2906-335207-faire-un-backup-incremental-avec-un-simple-bash.html">sur ce site</a> qui proposait un petit script écrit en BASH permettant de créer une ou plusieurs sauvegardes par jour, le tout en minimisant l&#8217;espace grâce à l&#8217;utilisation des inodes, plutôt que de copier bêtement les fichiers.<br />
Pour simplifier, plutôt que de copier simplement le fichier, il fait un &laquo;&nbsp;lien&nbsp;&raquo; hard vers celui-ci. Si le fichier venait à être supprimé depuis la première sauvegarde, il ne le serait pas réellement car un autre lien l&#8217;utilise.<br />
Ainsi, on se retrouve avec plusieurs liens pour le même fichier.</p>
<p>Nous avons adapté celui-ci afin qu&#8217;il ne puisse fonctionner une seule fois simultanément par l&#8217;ajout d&#8217;un .lock.<br />
Ce .lock est créé au début de l&#8217;exécution du script et supprimé à la fin.<br />
Si une autre instance tombe dessus, cela veut dire que le premier script n&#8217;a pas terminé son exécution.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
<span style="color: #666666; font-style: italic;"># Source du backup</span>
<span style="color: #666666; font-style: italic;"># Notez ici, qu'il est possible de faire un backup distant, il suffit simplement de faire de la manière suivante :</span>
<span style="color: #666666; font-style: italic;"># SRV=utilisateur@serveur:/dossier/a/copier</span>
<span style="color: #007800;">SRC</span>=<span style="color: #000000; font-weight: bold;">/</span>vz<span style="color: #000000; font-weight: bold;">/</span>private<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">103</span><span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>web
<span style="color: #666666; font-style: italic;"># Destination du backup</span>
<span style="color: #007800;">DST</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>backups<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">103</span><span style="color: #000000; font-weight: bold;">/</span>web
<span style="color: #666666; font-style: italic;"># Date de la forme année-mois-jour-timestamp</span>
<span style="color: #666666; font-style: italic;"># (le timestamp %s sert si on veut faire plusieurs sauvegardes dans la même journée)</span>
<span style="color: #007800;">DATE</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y-<span style="color: #000000; font-weight: bold;">%</span>m-<span style="color: #000000; font-weight: bold;">%</span>d_<span style="color: #000000; font-weight: bold;">%</span>H-<span style="color: #000000; font-weight: bold;">%</span>M-<span style="color: #000000; font-weight: bold;">%</span>S_<span style="color: #000000; font-weight: bold;">%</span>s<span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>web.lock <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
	<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Sauvegarde deja lancée&quot;</span>
	<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>;
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">touch</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>web.lock
&nbsp;
<span style="color: #666666; font-style: italic;"># Création du répertoire temporaire</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>tmp
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Backup commencé le &quot;</span><span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #ff0000;">&quot;+%d/%m/%Y à %T&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Starting : &quot;</span><span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #ff0000;">&quot;+%Y-%m-%d %T&quot;</span><span style="color: #000000; font-weight: bold;">`</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>log
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Copie de la dernière sauvegarde...&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Si une sauvegarde a déjà été faite précédemment</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-d</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>today ; <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #666666; font-style: italic;"># Et si le fichier contenant la date de la dernière sauvegarde existe</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>last_date ; <span style="color: #000000; font-weight: bold;">then</span>
&nbsp;
        <span style="color: #007800;">LASTDATE</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>last_date<span style="color: #000000; font-weight: bold;">`</span>
        <span style="color: #666666; font-style: italic;"># Alors on fait un copie en hardlinks de la sauvegarde d'hier</span>
        <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-al</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>today <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>
        <span style="color: #666666; font-style: italic;"># Puis on renomme la copie pour qu'elle devienne la sauvegarde d'hier</span>
        <span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>today <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$LASTDATE</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Sinon, on crée le premier dossier</span>
<span style="color: #000000; font-weight: bold;">else</span>
    <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>today
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>tmp
<span style="color: #666666; font-style: italic;"># On sauvegarde la date actuelle pour le prochain backup</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$DATE</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>last_date
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Synchronisation de la sauvegarde du jour...&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Synchronisation de la source avec le dossier du jour</span>
rsync <span style="color: #660033;">-az</span> <span style="color: #660033;">--delete</span> <span style="color: #660033;">--size-only</span> <span style="color: #007800;">$SRC</span><span style="color: #000000; font-weight: bold;">/</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>today<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>web.lock
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Backup terminé le &quot;</span><span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #ff0000;">&quot;+%d/%m/%Y à %T&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Done : &quot;</span><span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #ff0000;">&quot;+%Y-%m-%d %T&quot;</span><span style="color: #000000; font-weight: bold;">`</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">$DST</span><span style="color: #000000; font-weight: bold;">/</span>log</pre></td></tr></table></div>

<p>Le script ci-dessus génère le résultat suivant :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">lisa:<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>backups<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">103</span><span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #666666; font-style: italic;"># l</span>
total <span style="color: #000000;">752</span>
drwxr-xr-x <span style="color: #000000;">2794</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">94208</span> sep <span style="color: #000000;">17</span> <span style="color: #000000;">12</span>:05 <span style="color: #000000;">2009</span>-09-<span style="color: #000000;">28</span>_20-<span style="color: #000000;">52</span>-<span style="color: #000000;">59</span>_1254163979
drwxr-xr-x <span style="color: #000000;">2794</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">94208</span> sep <span style="color: #000000;">17</span> <span style="color: #000000;">12</span>:05 <span style="color: #000000;">2009</span>-09-<span style="color: #000000;">28</span>_22-<span style="color: #000000;">12</span>-<span style="color: #000000;">40</span>_1254168760
drwxr-xr-x <span style="color: #000000;">2794</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">94208</span> sep <span style="color: #000000;">17</span> <span style="color: #000000;">12</span>:05 <span style="color: #000000;">2009</span>-09-<span style="color: #000000;">28</span>_23-<span style="color: #000000;">30</span>-02_1254173402
drwxr-xr-x <span style="color: #000000;">2794</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">94208</span> sep <span style="color: #000000;">17</span> <span style="color: #000000;">12</span>:05 <span style="color: #000000;">2009</span>-09-<span style="color: #000000;">29</span>_00-01-01_1254175261
drwxr-xr-x <span style="color: #000000;">2794</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">94208</span> sep <span style="color: #000000;">17</span> <span style="color: #000000;">12</span>:05 <span style="color: #000000;">2009</span>-09-<span style="color: #000000;">29</span>_06-01-01_1254196861
drwxr-xr-x <span style="color: #000000;">2794</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">94208</span> sep <span style="color: #000000;">17</span> <span style="color: #000000;">12</span>:05 <span style="color: #000000;">2009</span>-09-<span style="color: #000000;">29</span>_12-01-01_1254218461
drwxr-xr-x <span style="color: #000000;">2794</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">94208</span> sep <span style="color: #000000;">17</span> <span style="color: #000000;">12</span>:05 <span style="color: #000000;">2009</span>-09-<span style="color: #000000;">29</span>_18-01-01_1254240061
-rw-r--r--    <span style="color: #000000;">1</span> root root    <span style="color: #000000;">31</span> sep <span style="color: #000000;">30</span> 00:<span style="color: #000000;">17</span> last_date
-rw-r--r--    <span style="color: #000000;">1</span> root root   <span style="color: #000000;">464</span> sep <span style="color: #000000;">30</span> 00:<span style="color: #000000;">24</span> log
drwxr-xr-x <span style="color: #000000;">2794</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">9500</span> <span style="color: #000000;">69632</span> sep <span style="color: #000000;">17</span> <span style="color: #000000;">12</span>:05 today</pre></div></div>

<p>Vous pouvez voir le dossier &laquo;&nbsp;today&nbsp;&raquo;, qui contient la dernière sauvegarde ainsi que la date exacte et le timestamp pour les sauvegardes précédentes.</p>
<p>Attention, toutefois ce script ne supprime pas les anciennes sauvegardes, il faut le faire à la main (ou coder la fonction, ce que je ferai prochainement <img src='http://blog.kelio.asso.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> )<br />
Cependant, le fait de faire des liens hard vous économisera au final une place non négligeable.<br />
Exemple : Actuellement, nos données web pèsent 70Go, et pour 8 sauvegardes nous utilisons 75Go d&#8217;espace.</p>
<p>Au niveau du temps de copie, la première sauvegarde est longue, mais les suivantes sont plus rapide. Nous avons besoin de 14 minutes (pour les 70Go), le temps de créer l&#8217;ensemble des liens hard, et de rapatrier les nouvelles données.</p>
<p>En espérant que ce script puisse vous servir à vous aussi <img src='http://blog.kelio.asso.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Merci à Skreo pour le script original.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kelio.asso.fr/2009/09/30/mise-en-place-dun-backup-incremental-sur-kelio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

