<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oudoubah+%28phorum%29</id>
	<title>Lea Linux - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oudoubah+%28phorum%29"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/Oudoubah_(phorum)"/>
	<updated>2026-04-22T05:20:50Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=/proc&amp;diff=15068</id>
		<title>/proc</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=/proc&amp;diff=15068"/>
		<updated>2007-11-20T11:01:28Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{En construction}}&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
/proc est un pseudo système de fichiers. Il est montable, démontable et apparait dans la fstab.&lt;br /&gt;
Pour monter un psudo système de fichiers /proc, il suffit de monter un type de système de fichier proc (option -t de mount).&lt;br /&gt;
Exemple : mount -t proc nom /repertoire&lt;br /&gt;
&lt;br /&gt;
La visualisation des fichiers de /proc permettent à tout instant de connaître la configuration de son système. La modification des fichiers permettent de tuner à chaud son système (via la commande /bin/echo ou cat)&lt;br /&gt;
&lt;br /&gt;
Attention : La commande &amp;quot;echo&amp;quot; de certains shells ne renvoie pas de message d&#039;erreur en cas d&#039;incident. Il est donc préférable d&#039;utiliser /bin/echo.&lt;br /&gt;
&lt;br /&gt;
/proc continue d&#039;évoluer avec le noyau, et certains fichiers décrits ci-dessous n&#039;existent pas dans certaines versions. La branche du noyau qui a servi de référence est la 2.6&lt;br /&gt;
&lt;br /&gt;
== Les processus ==&lt;br /&gt;
&lt;br /&gt;
Les processus sont identifiés par leur identifiant de tâche (TID). Pour simplifier, on peut assumer que le TID et le PID sont équivalent. (La notion de TID est apparue dans les noyaux 2.6, avec l&#039;utilisation de la librairie NPTL).&lt;br /&gt;
&lt;br /&gt;
Il y a deux types de processus : les processus système (ou noyau) et les processus utilisateur. Ils sont tous deux basés sur la même hiérarchie. Nous verrons au cours de la description du contenu de /proc/TID les différences d&#039;un pocessus système et d&#039;un processus utilisateur&lt;br /&gt;
&lt;br /&gt;
=== Contenu du répertoire d&#039;un processus ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;attr&#039;&#039;&#039; : répertoire contenant les attributs de sécurité&lt;br /&gt;
&#039;&#039;&#039;auxv&#039;&#039;&#039; : fichier binaire. Informations passées par le noyau lors de l&#039;édition de liens dynamiques &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;cmdline&#039;&#039;&#039; : Fichier texte contenant la ligne de commande :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-decoration:underline;&amp;quot;&amp;gt;Exemple : &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;nowiki&amp;gt;# tr &#039;\0&#039; &#039; &#039;&amp;lt;  cmdline &amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;dhcpcd -t 30 -h Tuxtop ath0&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;cwd&#039;&#039;&#039; : lien vers le répertoire courant&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;environ&#039;&#039;&#039; : Variables d&#039;environnement. Pour les afficher clairement, faire un &#039;&#039;tr &#039;\0&#039; &#039;\n&#039; &amp;lt; environ&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;exe&#039;&#039;&#039; : lien vers l&#039;exécutable&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;fd&#039;&#039;&#039; : répertoire contenant les descripteurs des fichiers ouverts. Les fichiers 0, 1 et 2 correspondent à l&#039;entrée standard, la sortie standard et la sortie d&#039;erreur. Les autres descripteurs correspondent aux autres &amp;quot;fichiers&amp;quot; ouverts (un fichier peut être un fichier, une socket, un tube). Dans certains cas, on peut utiliser ces descripteurs de fichiers pour récupérer un fichier ouvert supprimé : il suffit de copier /proc/pid/fd/X vers un autre répertoire.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;maps&#039;&#039;&#039; : carte des composants de l&#039;espace d&#039;adresses&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;mem&#039;&#039;&#039; : fichier d&#039;accès à la mémoire&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;mounts&#039;&#039;&#039; : systèmes de fichiers montés visibles&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;oom_adj&#039;&#039;&#039; : ajustement du score OOM (Out Of Memory). Ce score permet au système de choisir quelle tâche sera supprimée en cas d&#039;OOM. La valeur peut être située entre -16(tâche prioritaire) à 15 (tâche à supprimer en priorité). Il y a de plus la valeur particulière -17 qui empêche la suppression de la tâche en cas d&#039;OOM. Ce fichier est modifiable et on peut donc modifier le score avec une simple commande /bin/echo&amp;lt;br/&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;oom_score&#039;&#039;&#039; : score actuel de la tâche. Plus le score est élevée, plus la tâche risque d&#039;être supprimée en cas d&#039;OOM.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;root&#039;&#039;&#039; : lien vers le répertoire racine &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;smaps&#039;&#039;&#039; : donne des informations plus précises que le fichier maps. La partie résidente en mémoire de chaque composant est indiqué.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;stat&#039;&#039;&#039; : état détaillé &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;statm&#039;&#039;&#039; : information sur la mémoire &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;status&#039;&#039;&#039; : description de la tâche (reprend les informations de stat et statm, et les affiche dans un format plus lisible&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;tasks&#039;&#039;&#039; : fichier contenant des liens vers le différents threads de la tâche. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les informations système ==&lt;br /&gt;
&lt;br /&gt;
== Les informations réseau ==&lt;br /&gt;
&lt;br /&gt;
Ces informations se trouvent dans /proc/net. Les adresses IP sont écrites en hexa. On retrouve toutes les informations des commandes usuelles (ifconfig, route, iptables, netstat,...)&lt;br /&gt;
&lt;br /&gt;
/proc/net/route correspond à la table de routage&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=/proc&amp;diff=15051</id>
		<title>/proc</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=/proc&amp;diff=15051"/>
		<updated>2007-11-13T12:01:41Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : /* Les processus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{En construction}}&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
/proc est un pseudo système de fichiers. Il est montable, démontable et apparait dans la fstab.&lt;br /&gt;
Pour monter un psudo système de fichiers /proc, il suffit de monter un type de système de fichier proc (option -t de mount).&lt;br /&gt;
Exemple : mount -t proc nom /repertoire&lt;br /&gt;
&lt;br /&gt;
La visualisation des fichiers de /proc permettent à tout instant de connaître la configuration de son système. La modification des fichiers permettent de tuner à chaud son système (via la commande /bin/echo ou cat)&lt;br /&gt;
&lt;br /&gt;
Attention : La commande &amp;quot;echo&amp;quot; de certains shells ne renvoie pas de message d&#039;erreur en cas d&#039;incident. Il est donc préférable d&#039;utiliser /bin/echo.&lt;br /&gt;
&lt;br /&gt;
Cette documentation est basée sur un noyau 2.6&lt;br /&gt;
&lt;br /&gt;
== Les processus ==&lt;br /&gt;
&lt;br /&gt;
Les processus sont identifiés par leur identifiant de tâche (TID). Pour simplifier, on peut assumer que le TID et le PID sont équivalent. (La notion de TID est apparue dans les noyaux 2.6, avec l&#039;utilisation de la librairie NPTL).&lt;br /&gt;
&lt;br /&gt;
Il y a deux types de processus : les processus système (ou noyau) et les processus utilisateur. Ils sont tous deux basés sur la même hiérarchie. Nous verrons au cours de la description du contenu de /proc/TID les différences d&#039;un pocessus système et d&#039;un processus utilisateur&lt;br /&gt;
&lt;br /&gt;
=== Contenu du répertoire d&#039;un processus ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;attr&#039;&#039;&#039; : répertoire contenant les attributs de sécurité&lt;br /&gt;
&#039;&#039;&#039;auxv&#039;&#039;&#039; : fichier binaire. Informations passées par le noyau lors de l&#039;édition de liens dynamiques &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;cmdline&#039;&#039;&#039; : Fichier texte contenant la ligne de commande :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-decoration:underline;&amp;quot;&amp;gt;Exemple : &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;nowiki&amp;gt;# tr &#039;\0&#039; &#039; &#039;&amp;lt;  cmdline &amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;dhcpcd -t 30 -h Tuxtop ath0&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;cwd&#039;&#039;&#039; : lien vers le répertoire courant&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;environ&#039;&#039;&#039; : Variables d&#039;environnement. Pour les afficher clairement, faire un &#039;&#039;tr &#039;\0&#039; &#039;\n&#039; &amp;lt; environ&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;exe&#039;&#039;&#039; : lien vers l&#039;exécutable&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;fd&#039;&#039;&#039; : répertoire contenant les descripteurs des fichiers ouverts.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;maps&#039;&#039;&#039; : carte des composants de l&#039;espace d&#039;adresses&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;mem&#039;&#039;&#039; : fichier d&#039;accès à la mémoire&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;mounts&#039;&#039;&#039; : systèmes de fichiers montés visibles&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;oom_adj&#039;&#039;&#039; : ajustement du score OOM (Out Of Memory). Ce score permet au système de choisir quelle tâche sera supprimée en cas d&#039;OOM. La valeur peut être située entre -16(tâche prioritaire) à 15 (tâche à supprimer en priorité). Il y a de plus la valeur particulière -17 qui empêche la suppression de la tâche en cas d&#039;OOM. Ce fichier est modifiable et on peut donc modifier le score avec une simple commande /bin/echo&amp;lt;br/&amp;gt; &lt;br /&gt;
&#039;&#039;&#039;oom_score&#039;&#039;&#039; : score actuel de la tâche. Plus le score est élevée, plus la tâche risque d&#039;être supprimée en cas d&#039;OOM.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;root&#039;&#039;&#039; : lien vers le répertoire racine &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;smaps&#039;&#039;&#039; : donne des informations plus précises que le fichier maps. La partie résidente en mémoire de chaque composant est indiqué.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;stat&#039;&#039;&#039; : état détaillé &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;statm&#039;&#039;&#039; : information sur la mémoire &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;status&#039;&#039;&#039; : description de la tâche (reprend les informations de stat et statm, et les affiche dans un format plus lisible&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;tasks&#039;&#039;&#039; : fichier contenant des liens vers le différents threads de la tâche. &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les informations système ==&lt;br /&gt;
&lt;br /&gt;
== Modifier le système ==&lt;br /&gt;
&lt;br /&gt;
== Les informations réseau ==&lt;br /&gt;
&lt;br /&gt;
== Modifier le réseau ==&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=/proc&amp;diff=15050</id>
		<title>/proc</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=/proc&amp;diff=15050"/>
		<updated>2007-11-13T11:26:33Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : Début d&amp;#039;article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{En construction}}&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
/proc est un pseudo système de fichiers. Il est montable, démontable et apparait dans la fstab.&lt;br /&gt;
Pour monter un psudo système de fichiers /proc, il suffit de monter un type de système de fichier proc (option -t de mount).&lt;br /&gt;
Exemple : mount -t proc nom /repertoire&lt;br /&gt;
&lt;br /&gt;
La visualisation des fichiers de /proc permettent à tout instant de connaître la configuration de son système. La modification des fichiers permettent de tuner à chaud son système (via la commande /bin/echo ou cat)&lt;br /&gt;
&lt;br /&gt;
Attention : La commande &amp;quot;echo&amp;quot; de certains shells ne renvoie pas de message d&#039;erreur en cas d&#039;incident. Il est donc préférable d&#039;utiliser /bin/echo.&lt;br /&gt;
&lt;br /&gt;
Cette documentation est basée sur un noyau 2.6&lt;br /&gt;
&lt;br /&gt;
== Les processus ==&lt;br /&gt;
&lt;br /&gt;
Les processus sont identifiés par leur identifiant de tâche (TID). Pour simplifier, on peut assumer que le TID et le PID sont équivalent. (La notion de TID est apparue dans les noyaux 2.6, avec l&#039;utilisation de la librairie NPTL).&lt;br /&gt;
&lt;br /&gt;
Il y a deux types de processus : les processus système (ou noyau) et les processus utilisateur. Ils sont tous deux basés sur la même hiérarchie. Nous verrons au cours de la description du contenu de /proc/TID les différences d&#039;un pocessus système et d&#039;un processus utilisateur&lt;br /&gt;
&lt;br /&gt;
=== Contenu du répertoire d&#039;un processus ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;attr&#039;&#039;&#039; : répertoire contenant les attributs de sécurité&lt;br /&gt;
&#039;&#039;&#039;auxv&#039;&#039;&#039; : fichier binaire. Informations passées par le noyau lors de l&#039;édition de liens dynamiques &amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;cmdline&#039;&#039;&#039; : Fichier texte contenant la ligne de commande :&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;text-decoration:underline;&amp;quot;&amp;gt;Exemple : &amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&amp;lt;nowiki&amp;gt;# tr &#039;\0&#039; &#039; &#039;&amp;lt;  cmdline &amp;lt;/nowiki&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;dhcpcd -t 30 -h Tuxtop ath0&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;cwd&#039;&#039;&#039; : lien vers le répertoire courant&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;environ&#039;&#039;&#039; : Variables d&#039;environnement. Pour les afficher clairement, faire un &#039;&#039;tr &#039;\0&#039; &#039;\n&#039; &amp;lt; environ&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;exe&#039;&#039;&#039; : lien vers l&#039;exécutable&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;fd&#039;&#039;&#039; : répertoire contenant les descripteurs des fichiers ouverts.&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;maps&#039;&#039;&#039; : carte des composants de l&#039;espace d&#039;adresses&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;mem&#039;&#039;&#039; : fichier d&#039;accès à la mémoire&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;mounts&#039;&#039;&#039; : systèmes de fichiers montés visibles&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;oom_adj&#039;&#039;&#039; : ajustement du score OOM (Out Of Memory). Ce score permet au système de choisir quelle tâche sera supprimée en cas d&#039;OOM. La valeur peut être située entre -16(tâche prioritaire) à 15 (tâche à supprimer en priorité). Il y a de plus la valeur particulière -17 qui empêche la suppression de la tâche en cas d&#039;OOM&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les informations système ==&lt;br /&gt;
&lt;br /&gt;
== Modifier le système ==&lt;br /&gt;
&lt;br /&gt;
== Les informations réseau ==&lt;br /&gt;
&lt;br /&gt;
== Modifier le réseau ==&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Proposition_d%27article&amp;diff=15049</id>
		<title>Proposition d&#039;article</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Proposition_d%27article&amp;diff=15049"/>
		<updated>2007-11-13T10:33:41Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : /* Rubrique : Léavancé */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Proposition d&#039;article =&lt;br /&gt;
Indiquer ici les articles qui manquent et que vous vous proposez de créer, puis créez les ! Si vous avez besoin de mettre des images dans votre article, n&#039;hésitez pas à demander à Léa les [[Lea_Linux:Groupe_Editeur|droit d&#039;éditeurs]]. &#039;&#039;&#039;Ne mettez pas&#039;&#039;&#039; des articles que vous désireriez voir écrits par quelqu&#039;un d&#039;autre que vous ! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=alert&amp;gt;&#039;&#039;&#039;Note :&#039;&#039;&#039; pour proposer un nouveau truc ou une nouvelle astuce, utiliser [[Trucs:Proposition_d&#039;un_truc|cette page]].&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit d&#039;insérer dans la section qui correspond à votre article, quelque chose du genre : &lt;br /&gt;
* exemple : &amp;lt;nowiki&amp;gt;[[Nom de l&#039;article]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
qui donnera : &lt;br /&gt;
* exemple : [[Nom de l&#039;article]] (SVP ne créez pas l&#039;article &#039;&#039;&#039;Nom de l&#039;article&#039;&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=alert&amp;gt;&#039;&#039;&#039;Publication :&#039;&#039;&#039; Léa étant un wiki, c&#039;est à vous de modifier la page principale de la rubrique dans laquelle vous voulez voir votre article publié, lorsque vous jugez que celui-ci est suffissament complet. Nous pouvons également ajouter votre article sur la page principale de Léa, pour ce faire, contactez-nous à admin &amp;lt;chez&amp;gt; lea-linux.org (en remplaçant &amp;lt;chez&amp;gt; par @). Si nous jugeons cet article de qualité, il sera publié.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Installation ==&lt;br /&gt;
* en construction :&lt;br /&gt;
** [[UBUNTU et eagle-usb]] [[Utilisateur: mujma|Marc UJMA]]&lt;br /&gt;
** [[Guide d&#039;installation Linux SuSE 10.0 pas à pas]] leibowitz 29 janvier 2006&lt;br /&gt;
** [[Guide d&#039;installation et de configuration de Fluxbox,Conky, Idesk, Fbpager]] pingadaroça 31/01/06&lt;br /&gt;
** [[Installation et (surtout) configuration post-installation de Slackware 11.0]]&lt;br /&gt;
** [[Configuration messagerie sur Debian]]&lt;br /&gt;
** [[MANDRIVA 2007 - installation d&#039;un système complet]] Zorglub 18/12/2006&lt;br /&gt;
&lt;br /&gt;
* ébauche :&lt;br /&gt;
** [[Installation serveur LAMP uniquement en mode texte]]&lt;br /&gt;
&lt;br /&gt;
* contesté :&lt;br /&gt;
** [[L&#039;erreur est humaine, ou bienvenue dans le monde de l&#039;informatique libre]] (à caser dans philo et histoire je pense, ou dans découvrir Linux... bref on verra ça après) --[[Utilisateur:Linux.tar.gz|Linux.tar.gz]] 7 sep 2006 à 17:01 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : X Window ==&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Logiciels ==&lt;br /&gt;
[[codecs_encodage|Installer les codecs nécessaires à l&#039;encodage audio et vidéo]]&lt;br /&gt;
* plans :&lt;br /&gt;
** [[Java et linux]]&lt;br /&gt;
** [[Netbeans|Environnements de développement Java]]&lt;br /&gt;
** [[J2EE|La version java entreprise edition]]&lt;br /&gt;
&lt;br /&gt;
* todo :&lt;br /&gt;
** [[GlassFish|La version Open Source du Serveur d&#039;application d&#039;entreprise de SUN]]&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Matériel ==&lt;br /&gt;
* [[Installation d&#039;une ATI Radeon X1600 sur Mandriva]]&lt;br /&gt;
* [[Clavier Logitech G15]]&lt;br /&gt;
&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
&lt;br /&gt;
* [[Souris Logitech MediaPlay]]&lt;br /&gt;
* [[Le X10 et Linux]]&lt;br /&gt;
* [[Hardware-hard_plus-matos_bis]]&lt;br /&gt;
* [[AC775|Carte PCMCIA GPRS/EDGE Sierra Wireless AC775]]&lt;br /&gt;
* [[Numériser vos anciennes cassettes VHS sous Linux]]&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Le réseau ==&lt;br /&gt;
* [[Streaming mp3 avec Icecast2 et ices]]. --[[Utilisateur:CoKe|CoKe]] 4 avr 2006 à 16:04 (CEST)&lt;br /&gt;
* [[Debian GNU/Linux et IPv6]]. [[Utilisateur: Thomas Carlu|Thomas Carlu]] 25 oct 2005 à 1:15 (CEST)&lt;br /&gt;
* [[Sécurité des réseaux WIFI]]. --[[Utilisateur:Maston28|Maston28]] 13 nov 2005 à 16:30 (CET)&lt;br /&gt;
* [[Configurer le wifi avec une livebox, freebox etc...]] par Samiche, avril 2006&lt;br /&gt;
* [[Nagios]] par [[Utilisateur:Jiel|Jiel]] 4 avr 2007 à 15:10 (CEST)&lt;br /&gt;
*[[SASL sous Debian]] par [[Utilisateur:Zebu|Zebu]] 16 mai 2007 à 20:55 (CET)&lt;br /&gt;
*[[Mldonkey : créer un client/serveur P2P]] par [[Utilisateur:Jeannedarc|Jeannedarc]] 17 mai 2007 à 10:59 (CEST)&lt;br /&gt;
*[[Actualiser une adresse DNS dynamique (dyndns, ...)]]--[[Utilisateur:Jeannedarc|Jeannedarc]] 18 mai 2007 à 12:59 (CEST)&lt;br /&gt;
*[[Configurer postfix derrière une LiveBox (et une FreeBox)]]&lt;br /&gt;
*[[reseau-partfic-sfs|Installation d&#039;un serveur SFS]] --[[Utilisateur:Richard|Richard]] 16 aou 2006 13:46 (CEST)&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
* [[Tunnels ethernet avec openssh]]. --[[Utilisateur:Misc|Misc]] 12 fév 2006 à 13:30 (CET)&lt;br /&gt;
* [[SFTP &amp;amp; RSSH : Créer un serveur de fichiers sécurisé]] par [[Utilisateur:Jeannedarc|Jeannedarc]] 17 mai 2007 à 10:55 (CEST)&lt;br /&gt;
* [[Créer un point d&#039;accès sécurisé avec hostAPd]] --[[Utilisateur:Glandos|Glandos]] 26 avr 2006 à 23:16 (CEST)&lt;br /&gt;
*[[postfix-courier-mysql-quota-spamassassin-amavis|Serveur de mail multi-domaines postfix - mysql (quota, antivirus, spamassasin) sous Debian]] --[[Utilisateur:Space2d|Space2d]] 29 nov 2006 à 12:25 (CET)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Administrer ==&lt;br /&gt;
* [[Arrêter Windows et son routeur Linux]], [[Utilisateur:Vivecom|Vivecom]] 26 nov 2005 à 16:40 (CET)&lt;br /&gt;
* [[Les sauvegardes]], [[Utilisateur:oudoubah|oudoubah]] 05 sep 2006&lt;br /&gt;
* [[Utilisation de webmin administration a distance]] --[[Utilisateur:Pascalfares|Pascalfares]] 10 jan 2007 à 00:42 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
* [[S&#039;identifier par une clé USB]], [[Utilisateur:thomas debay]] 28 fév 2006&lt;br /&gt;
* [[Gestion des ACL]] (ou [[ACL]] pour le titre). [[Utilisateur:Vincent Ramos|Vincent Ramos]] 24 oct 2005 à 23:00 (CEST)&lt;br /&gt;
::Fait. Bien qu&#039;améliorable, l&#039;article me semble complet. [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 00:22 (CEST) ;&lt;br /&gt;
* [[Attributs étendus]] (&#039;&#039;chattr&#039;&#039; sur ext2 et ext3, outils efs2progs) [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 17:40 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Noyau et modules ==&lt;br /&gt;
&lt;br /&gt;
* [[RT2500]] : compilation et installation du modules RT2500 Pour les cartes wifi , essai avec la carte &#039;&#039;&#039;PCI PC54G2&#039;&#039;&#039; , Auteur: Laplaine Freddy, Alias mr_pupu[corbeille]&lt;br /&gt;
&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
* [[HOWTO Dkms]] : Utiliser dkms pour gérer ses drivers dynamiquement et facilement&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Développer ==&lt;br /&gt;
&lt;br /&gt;
* [[Ocaml]] : une présentation du langage ocaml&lt;br /&gt;
*[[FreePascal]] : Un langage familier pour nombre de développeurs [[Utilisateur: mujma|Marc UJMA]]&lt;br /&gt;
*[[Trucs:Obtenir le code HTML d&#039;un glyphe]] [[Utilisateur:Nicola|Nicola]] 2 jan 2006 à 19:10 (CET)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Léavancé ==&lt;br /&gt;
&lt;br /&gt;
* [[Virtualisation avec Xen]]&lt;br /&gt;
* [[OpenMosix]] axé Slackware mais applicable à d&#039;autres distributions&lt;br /&gt;
* [[Compilation Distribuée]] ou comment accélérer ses compilations&lt;br /&gt;
* [[L&#039;arborescence /proc]], [[Utilisateur:oudoubah|oudoubah]] (13/11/2007)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Trucs:Proposition_d%27un_truc&amp;diff=15048</id>
		<title>Trucs:Proposition d&#039;un truc</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Trucs:Proposition_d%27un_truc&amp;diff=15048"/>
		<updated>2007-11-09T14:53:08Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : /* Proposition d&amp;#039;un truc ou d&amp;#039;une astuce */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Proposition d&#039;un truc ou d&#039;une astuce =&lt;br /&gt;
Indiquer ici les trucs ou astuces qui manquent et que vous désirez créer. &#039;&#039;&#039;Ne mettez pas&#039;&#039;&#039; des articles que vous désireriez voir écrits ! &lt;br /&gt;
* exemple : &amp;lt;nowiki&amp;gt;[[Trucs:Nom du truc]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Trucs:Résoudre les problèmes de clé dans Debian]]&lt;br /&gt;
&lt;br /&gt;
[[Trucs:Formater un baladeur mp3 type CREATIVE MuVo N200]]&lt;br /&gt;
&lt;br /&gt;
[[Trucs:Utiliser les boutons de son scanneur]]&lt;br /&gt;
&lt;br /&gt;
[[Trucs: Se connecter à WindowsUpdate via un serveur Squid authentifiant]]&lt;br /&gt;
&lt;br /&gt;
[[Trucs: Résoudre le problème de l&#039;écran qui s&#039;éteint automatiquement sous KDE3.5 même si dans la configuration, l&#039;économie d&#039;energie est désactivé, mais qu&#039;on a activé Compiz]]&lt;br /&gt;
&lt;br /&gt;
[[Trucs: Spécifier le format A4 dans quelques fichiers où c&#039;est oublié]]&lt;br /&gt;
&lt;br /&gt;
[[Trucs: Rajouter un fichier de mémoire swap temporaire]]&lt;br /&gt;
&lt;br /&gt;
== tarball des sources du driver de conexant pour modem hcf pci ==&lt;br /&gt;
&lt;br /&gt;
Bonjour,&lt;br /&gt;
&lt;br /&gt;
Je ne sais pas si c&#039;est ici qu&#039;il faut que je le fasse, mais aprés avoir googlelisé la terre entière, j&#039;ai réussis à trouver les sources (assez anciennes, mais libres) pour les modems hcf pci de Conexant.&lt;br /&gt;
&lt;br /&gt;
Si je peux les déposer sur le site et ainsi faire profiter la communauté d&#039;un bien retiré de la toile, veuillez me laissez un message.&lt;br /&gt;
&lt;br /&gt;
Le tarball en question est le suivant et il fonctionne. Le seul impératif est qu&#039;il ne tourne que sur noyau 2.4 + ACPI, donc recompilation du noyau. Pour la compilation proprement dite du driver, il est besoin des sources et/ou des headers du noyau. pour les autre noyaux, 2.2 et 2.6, je n&#039;ai rien essayé.&lt;br /&gt;
&lt;br /&gt;
hcfpcimodem-0.99lnxtbeta03042700.tar.gz&lt;br /&gt;
&lt;br /&gt;
Bien à vous.&lt;br /&gt;
&lt;br /&gt;
°¿° Skippy the Kangoo °¿°&lt;br /&gt;
&lt;br /&gt;
== écouter ses messages téléphoniques Free ==&lt;br /&gt;
&lt;br /&gt;
Dans son offre de téléphonie, Free propose un répondeur : les messages enregistrés peuvent alors être reçus par mail ou bien téléchargés depuis une interface Web.&lt;br /&gt;
&lt;br /&gt;
Le problème est de réussir à les écouter depuis Linux : &#039;a marche pô.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution :&#039;&#039;&#039; il suffit d&#039;enregistrer le fichier, et de changer son extension en &amp;quot;.snd&amp;quot;. Il est alors parfaitement reconnu par votre lecteur audio favori.&lt;br /&gt;
&lt;br /&gt;
Remarque : ceci étant établi, reste à voir comment faire pour éviter cette étape d&#039;enregistrement et de renommage, mais en attendant...&lt;br /&gt;
&lt;br /&gt;
== restriction horaires de connexion sur KDE via Pam ==&lt;br /&gt;
&lt;br /&gt;
Voilà quelque chose qui peut-être utile si vous avez des enfants et que vous ne voulez pas qu&#039;ils passent leur vie sur le PC contrairement à leur père ;-).&lt;br /&gt;
&lt;br /&gt;
Pour commencer il faut modifier le module de pam qui sert à la connexion de KDE, ce module se trouve dans le répertoire:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;ls -all /etc/pam.d/kde*&lt;br /&gt;
-rw-r--r--  1 root root 333 mar 14 11:56 /etc/pam.d/kde3&lt;br /&gt;
-rw-r--r--  1 root root 368 mar 14 11:29 /etc/pam.d/kde3~&lt;br /&gt;
-rw-r--r--  1 root root 326 mai 14  2005 /etc/pam.d/kde3-np&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le module qui nous intéresse est kde3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;cat /etc/pam.d/kde3&lt;br /&gt;
#%PAM-1.0&lt;br /&gt;
account    required     pam_time.so&lt;br /&gt;
&lt;br /&gt;
auth       required     pam_stack.so service=system-auth&lt;br /&gt;
auth       required     pam_nologin.so&lt;br /&gt;
account    required     pam_stack.so service=system-auth&lt;br /&gt;
password   required     pam_stack.so service=system-auth&lt;br /&gt;
session    required     pam_stack.so service=system-auth&lt;br /&gt;
session    optional     pam_console.so&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
nous insérons comme indiqué plus haut la ligne&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;account    required     pam_time.so&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
en s&#039;assurant que la lib  pam_time.so est bien dans /usr/lib/security&lt;br /&gt;
&lt;br /&gt;
une fois cette étape réalisée, il nous faut configurer le fichier /etc/security/time.conf&lt;br /&gt;
&lt;br /&gt;
l&#039;explication de la syntaxe est jointe dans le fichier, pour notre exemple nous prendrons (extrait du fichier)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;# times&lt;br /&gt;
#       the format here is a logic list of day/time-range&lt;br /&gt;
#       entries the days are specified by a sequence of two character&lt;br /&gt;
#       entries, MoTuSa for example is Monday Tuesday and Saturday. Note&lt;br /&gt;
#       that repeated days are unset MoMo = no day, and MoWk = all weekdays&lt;br /&gt;
#       bar Monday. The two character combinations accepted are&lt;br /&gt;
#&lt;br /&gt;
#               Mo Tu We Th Fr Sa Su Wk Wd Al&lt;br /&gt;
#&lt;br /&gt;
#       the last two being week-end days and all 7 days of the week&lt;br /&gt;
#       respectively. As a final example, AlFr means all days except Friday.&lt;br /&gt;
#&lt;br /&gt;
#       each day/time-range can be prefixed with a &#039;!&#039; to indicate &amp;quot;anything&lt;br /&gt;
#       but&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
#       The time-range part is two 24-hour times HHMM separated by a hyphen&lt;br /&gt;
#       indicating the start and finish time (if the finish time is smaller&lt;br /&gt;
#       than the start time it is deemed to apply on the following day).&lt;br /&gt;
#&lt;br /&gt;
# for a rule to be active, ALL of service+ttys+users must be satisfied&lt;br /&gt;
# by the applying process.&lt;br /&gt;
&lt;br /&gt;
kde3;*;anne;Wd0800-0900&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
cette ligne signifie que nous autorisons le service kde3 sur tous les tty (*) pour le user anne les jours de la semaine de 8h00 à 9h00&lt;br /&gt;
&lt;br /&gt;
Ce système peut être complèté via squid et squidguard qui gère les accès internet et les sites autorisés, c&#039;est ce que j&#039;ai fait chez moi.&lt;br /&gt;
&lt;br /&gt;
mali44&lt;br /&gt;
&lt;br /&gt;
== restriction horaires de connexion sur KDE via Pam ==&lt;br /&gt;
&lt;br /&gt;
Voilà quelque chose qui peut-être utile si vous avez des enfants et que vous ne voulez pas qu&#039;ils passent leur vie sur le PC contrairement à leur père ;-).&lt;br /&gt;
&lt;br /&gt;
pour commencer il faut modifier le module de pam qui sert à la connexion de KDE, ce module se trouve dans le répertoire:&lt;br /&gt;
&lt;br /&gt;
ls -all /etc/pam.d/kde*&lt;br /&gt;
&lt;br /&gt;
-rw-r--r--  1 root root 333 mar 14 11:56 /etc/pam.d/kde3&lt;br /&gt;
&lt;br /&gt;
-rw-r--r--  1 root root 368 mar 14 11:29 /etc/pam.d/kde3~&lt;br /&gt;
&lt;br /&gt;
-rw-r--r--  1 root root 326 mai 14  2005 /etc/pam.d/kde3-np&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
le module qui nous intéresse est kde3.&lt;br /&gt;
&lt;br /&gt;
cat /etc/pam.d/kde3&lt;br /&gt;
&lt;br /&gt;
#%PAM-1.0&lt;br /&gt;
&lt;br /&gt;
account    required     pam_time.so&lt;br /&gt;
&lt;br /&gt;
auth       required     pam_stack.so service=system-auth&lt;br /&gt;
&lt;br /&gt;
auth       required     pam_nologin.so&lt;br /&gt;
&lt;br /&gt;
account    required     pam_stack.so service=system-auth&lt;br /&gt;
&lt;br /&gt;
password   required     pam_stack.so service=system-auth&lt;br /&gt;
&lt;br /&gt;
session    required     pam_stack.so service=system-auth&lt;br /&gt;
&lt;br /&gt;
session    optional     pam_console.so&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
nous insérons comme indiqué plus haut la ligne&lt;br /&gt;
account    required     pam_time.so&lt;br /&gt;
&lt;br /&gt;
en s&#039;arrurant que la lib  pam_time.so est bien dans /usr/lib/security&lt;br /&gt;
&lt;br /&gt;
une fois cette étape réalisée, il nous faut configurer le fichier /etc/security/time.conf&lt;br /&gt;
&lt;br /&gt;
l&#039;explication de la syntaxe est jointe dans le fichier, pour notre exemple nous prendrons (extrait du fichier)&lt;br /&gt;
&lt;br /&gt;
# times&lt;br /&gt;
#       the format here is a logic list of day/time-range&lt;br /&gt;
#       entries the days are specified by a sequence of two character&lt;br /&gt;
#       entries, MoTuSa for example is Monday Tuesday and Saturday. Note&lt;br /&gt;
#       that repeated days are unset MoMo = no day, and MoWk = all weekdays&lt;br /&gt;
#       bar Monday. The two character combinations accepted are&lt;br /&gt;
#&lt;br /&gt;
#               Mo Tu We Th Fr Sa Su Wk Wd Al&lt;br /&gt;
#&lt;br /&gt;
#       the last two being week-end days and all 7 days of the week&lt;br /&gt;
#       respectively. As a final example, AlFr means all days except Friday.&lt;br /&gt;
#&lt;br /&gt;
#       each day/time-range can be prefixed with a &#039;!&#039; to indicate &amp;quot;anything&lt;br /&gt;
#       but&amp;quot;&lt;br /&gt;
#&lt;br /&gt;
#       The time-range part is two 24-hour times HHMM separated by a hyphen&lt;br /&gt;
#       indicating the start and finish time (if the finish time is smaller&lt;br /&gt;
#       than the start time it is deemed to apply on the following day).&lt;br /&gt;
#&lt;br /&gt;
# for a rule to be active, ALL of service+ttys+users must be satisfied&lt;br /&gt;
# by the applying process.&lt;br /&gt;
&lt;br /&gt;
kde3;*;anne;Wd0800-0900&lt;br /&gt;
&lt;br /&gt;
cette ligne signifie que nous autorisons le service kde3 sur tous les tty (*) pour le user anne les jours de la semaine de 8h00 à 9h00&lt;br /&gt;
&lt;br /&gt;
Ce système peut être complété via squid et squidguard qui gère les accès internet et les sites autorisés, c&#039;est ce que j&#039;ai fait chez moi.&lt;br /&gt;
&lt;br /&gt;
mali44&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bonjour&lt;br /&gt;
&lt;br /&gt;
Cette modification fonctionne a merveille effectivement pour restreindre l&#039;heure de connexion cependant une fois que l&#039;utilisateur est connecte, il n&#039;y a pas de deconnexion lorsqu&#039;il depasse sa plage horaire. Quel type de modification dois-je apporter pour forcer la deconnexion qund la plage horaire se termine?&lt;br /&gt;
&lt;br /&gt;
exemple:&lt;br /&gt;
&lt;br /&gt;
l&#039;utilisateur peut se connecter tous les jours entre 15 et 17 heures. Il se connecte a 15 heures mais arrivé a 17 heures sa session continue comme si de rien n&#039;etait.&lt;br /&gt;
&lt;br /&gt;
== Spécifier le format A4 dans quelques fichiers où c&#039;est oublié ==&lt;br /&gt;
&lt;br /&gt;
Ce chapitre ne semble pas venir sur la page de consultation. Je publie une modif en mode majeure pour voir.&lt;br /&gt;
&lt;br /&gt;
Si votre imprimante A4 centre mal certaines impressions, c&#039;est que l&#039;application envoie des données en format A4 et que l&#039;imprimante reste en configuration Letter, ou l&#039;inverse. Le format Letter est le défaut pour quasiment toutes les applications quand elles ignorent le format prévu par l&#039;imprimante. Certaines applications ont des options à spécifier, d&#039;autres non et il faut chercher plus profond pour remédier. Si on peut changer les options par défaut, c&#039;est mieux car on ne risque plus d&#039;oublier de les spécifier.&lt;br /&gt;
&lt;br /&gt;
Je propose de recenser les applications qui nécessitent une modification de leur configuration, afin d&#039;agir une fois pour toutes, voire de créer un script qui fait le travail.&lt;br /&gt;
&lt;br /&gt;
Configuration de &#039;&#039;&#039;enscript&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
modifier le fichier &#039;&#039;&#039;/etc/enscript.cfg&#039;&#039;&#039; : changer la valeur de &#039;&#039;DefaultMedia&#039;&#039;&lt;br /&gt;
&amp;lt;code&amp;gt;DefaultMedia: A4&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
modifier le fichier &#039;&#039;&#039;/usr/share/enscript/enscript.hdr&#039;&#039;&#039; : changer la valeur de &#039;&#039;moddatestr&#039;&#039; et &#039;&#039;pagenumstr&#039;&#039; pour les mettre au style français&lt;br /&gt;
&amp;lt;code&amp;gt;%Format: moddatestr	$F&lt;br /&gt;
%Format: pagenumstr	$%/$=&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configuration de &#039;&#039;&#039;mpage&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
créer le fichier &#039;&#039;&#039;/etc/profile.d/mpage.sh&#039;&#039;&#039; avec la protection &#039;&#039;&#039;775&#039;&#039;&#039;, et contenant la ligne&lt;br /&gt;
&amp;lt;code&amp;gt;export MPAGE=&amp;quot;-bA4 -f -o&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configuration de &#039;&#039;&#039;ghostscript&#039;&#039;&#039;, nécessaire pour l&#039;impression de fichiers PostScript car utilisé par &#039;&#039;&#039;foomatic&#039;&#039;&#039; quand on envoie un fichier .ps à l&#039;imprimante via &#039;&#039;&#039;lpr&#039;&#039;&#039; (cas d&#039;une imprimante non PostScript)&lt;br /&gt;
&lt;br /&gt;
modifier le fichier &#039;&#039;&#039;/usr/share/ghostscript/.../gs_init.ps&#039;&#039;&#039; : décommenter la ligne&lt;br /&gt;
&amp;lt;code&amp;gt;DEFAULTPAPERSIZE (a4) def&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13768</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13768"/>
		<updated>2006-09-28T19:10:38Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : Correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [[Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
&lt;br /&gt;
==== Sauvegarde avec tar ====&lt;br /&gt;
&lt;br /&gt;
===== Présentation des options =====&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
* -N date : permet de ne sauvegarder que les fichiers postérieurs à la date définie. La date doit être fournie sous la forme &#039;&#039;AAAA-MM-JJ HH:MM:SS&amp;quot;. On obtient se format grâce à la commande &amp;lt;code&amp;gt;date &amp;quot;+%Y:%m:%d %H:%M:%S&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* --totals : affiche le nombre d&#039;octets écrits lors de la sauvegarde&lt;br /&gt;
* -g fichier : permet d&#039;effectuer des sauvegardes incrémentales, en se basant sur un fichier de status. Ce fichier est soit utilisé (sauvegarde incrémentale), soit créé (sauvegarde full). Attention, cette option n&#039;est valable que pour les versions GNU!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;toujours&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et périls (kernel panic).&lt;br /&gt;
&lt;br /&gt;
===== Exemple de sauvegarde de données =====&lt;br /&gt;
Voici un petit script permettant de mettre en place une sauvegarde totale et/ou différentielle de données :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Initialisation des variables&lt;br /&gt;
DATE=$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&lt;br /&gt;
TYPE=&amp;quot;FULL&amp;quot;&lt;br /&gt;
REP=/backup&lt;br /&gt;
FICHIER_EXCLUDE=/etc/save.exclude&lt;br /&gt;
FICHIER_INCLUDE=/etc/save.include&lt;br /&gt;
FICHIER_STATUS=/etc/save.state&lt;br /&gt;
COMPRESSION=9&lt;br /&gt;
&lt;br /&gt;
# Si le script est appelé avec l&#039;option &amp;quot;-d&amp;quot;, alors on fait une sauvegarde différentielle&lt;br /&gt;
if [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
     TYPE=&amp;quot;INCR&amp;quot;&lt;br /&gt;
     tar cP --atime-preserve -g $FICHIER_STATUS --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; ${REP}/save-INCR-${date}.tgz&lt;br /&gt;
# Sinon, on fait une sauvegarde totale&lt;br /&gt;
else&lt;br /&gt;
     rm -f $FICHIER_STATUS&lt;br /&gt;
     tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; ${REP}/save-FULL-${date}.tgz&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Exemple de sauvegarde système =====&lt;br /&gt;
Le script suivant permet de faire une sauvegarde système, plus complet, a pour but de faire une sauvegarde système sur un serveur NFS. Il utilise un fichier de configuration. Le prérequis est de renseigner le fichier /etc/save.conf et d&#039;utiliser udev. &lt;br /&gt;
&lt;br /&gt;
Le fichier save.conf doit être de la forme :&lt;br /&gt;
&amp;lt;code&amp;gt;EXCLUDE=&amp;quot;/repertoire1 /repertoire2&amp;quot;&lt;br /&gt;
# Le reste est optionnel&lt;br /&gt;
&lt;br /&gt;
#COMPRESSION=1&lt;br /&gt;
#SERVEUR=&amp;quot;10.0.0.2:/path&lt;br /&gt;
#MONTAGE=&amp;quot;/mnt/nfs&amp;quot;&lt;br /&gt;
#INCLUDE=&amp;quot;/toto&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et le script :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
PID=$$&lt;br /&gt;
&lt;br /&gt;
# On donne une priorité faible au processus pour ne pas dégrader les performances des autres applications&lt;br /&gt;
renice +19 $PID&lt;br /&gt;
. /etc/save.conf&lt;br /&gt;
&lt;br /&gt;
MONTAGE=${MONTAGE:=&amp;quot;/tmp/save.$PID&amp;quot;}&lt;br /&gt;
SERVEUR=${SERVEUR:=&amp;quot;10.0.0.1:/backup&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
COMPRESSION=${COMPRESSION:=9}&lt;br /&gt;
NOM=$(hostname)&lt;br /&gt;
CONFIGURATION=${MONTAGE}/${NOM}.conf&lt;br /&gt;
DATE=&amp;quot;$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&amp;quot;&lt;br /&gt;
FICHIER_EXCLUDE=/tmp/save.$PID.exlude&lt;br /&gt;
FICHIER_INCLUDE=/tmp/save.$PID.include&lt;br /&gt;
FICHIER_STATUS=/etc/save.state&lt;br /&gt;
LVMVERSION=1&lt;br /&gt;
&lt;br /&gt;
affiche_action() {&lt;br /&gt;
	echo -e &amp;quot;$1 ........... \c&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
affiche_resultat() {&lt;br /&gt;
	if [ $1 = 0 ] ; then&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 2&lt;br /&gt;
		echo -e &amp;quot;OK\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 1&lt;br /&gt;
		echo -e &amp;quot;KO\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 1&lt;br /&gt;
	fi	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quit() {&lt;br /&gt;
	affiche_action &amp;quot;Nettoyage en cours&amp;quot;&lt;br /&gt;
	rm -f $FICHIER_EXCLUDE&lt;br /&gt;
	rm -f $FICHIER_INCLUDE&lt;br /&gt;
	umount $MONTAGE&lt;br /&gt;
	rmdir $MONTAGE&lt;br /&gt;
	affiche_resultat $?&lt;br /&gt;
	exit $1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Montage du partage nfs&lt;br /&gt;
affiche_action &amp;quot;Montage du partage NFS vers $SERVER&amp;quot;&lt;br /&gt;
mkdir $MONTAGE&lt;br /&gt;
mount -t nfs $SERVER $MONTAGE&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des donnees de partitionnement&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde du partitionnement&amp;quot;&lt;br /&gt;
echo &amp;quot;[disks]&amp;quot; &amp;gt; $CONFIGURATION&lt;br /&gt;
/sbin/fdisk -l | tr &#039;*&#039; &#039; &#039; | awk &#039;/^\/dev/ {print $1,$2,$3,$5}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[bootdisk]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
fdisk -l | awk &#039;/^\/dev\/.*\*/ {print $1}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde du lvm : PV, VG, LV et version du LVM&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des groupes de volumes du LVM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[LVM-VG]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
liste=$(pvscan | grep -o &#039;PV.*/dev/.*VG.*&#039; | tr -d &#039;&amp;quot;&#039; | sed &#039;s,^.*PV \(/dev/[^ ]*\).* VG \([^ ]*\).*,\1 \2,&#039;)&lt;br /&gt;
liste2=$(echo $liste | grep -o &#039;/dev/[^ ]*&#039;)&lt;br /&gt;
for element in $liste2 ; do&lt;br /&gt;
        LVM=1&lt;br /&gt;
        $REP/bin/lvm.static pvscan 2&amp;gt;/dev/null | grep $element 2&amp;gt;/dev/null | grep -q lvm2&lt;br /&gt;
        [ $? = 0 ] &amp;amp;&amp;amp; LVM=2&lt;br /&gt;
        echo $(echo $liste | grep -o &amp;quot;$element [^ ]*&amp;quot;) $LVM &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des volumes logiques du LVM&amp;quot;&lt;br /&gt;
echo &amp;quot;[LVM-LV]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for volume in $(lvscan | grep -o &#039;&amp;quot;/dev[^&amp;quot;]*&amp;quot;&#039; | tr -d &#039;&amp;quot;&#039;) ; do&lt;br /&gt;
	extend=$(lvdisplay $volume | awk &#039;/Allocated LE/ {print $3}&#039;)&lt;br /&gt;
	echo &amp;quot;$volume $extend&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des labels&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des labels des partitions&amp;quot;&lt;br /&gt;
echo &amp;quot;[labels]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for partition in $(/sbin/fdisk -l | grep -o &#039;^/dev/[^ ]*&#039;) ; do&lt;br /&gt;
	label=$(/sbin/e2label $partition 2&amp;gt;/dev/null)&lt;br /&gt;
	echo &amp;quot;$partition=$label&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des points de montage&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des points de montage&amp;quot;&lt;br /&gt;
echo &amp;quot;[montage]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
mount | awk &#039;/ext[23]/ {print $1,$3}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de la hierarchie exclue&lt;br /&gt;
affiche_action &amp;quot;Creation de la liste des repertoires exclus a recontruire&amp;quot;&lt;br /&gt;
echo &amp;quot;[hierarchie]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
rm -f $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# On exclu les partages NFS et les montages loop&lt;br /&gt;
mount | awk &#039;/type nfs/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
mount | awk &#039;/loop=/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Rajout des répertoires à exclure par défaut&lt;br /&gt;
[ -d /media ] &amp;amp;&amp;amp; EXCLUDE=&amp;quot;/media $EXCLUDE&amp;quot;&lt;br /&gt;
EXCLUDE=&amp;quot;/mnt /sys /dev /tmp /proc /var/run /var/log /var/lock /var/spool /var/tmp /var/cache $EXCLUDE&amp;quot;&lt;br /&gt;
for rep in $EXCLUDE ; do&lt;br /&gt;
	case $rep in&lt;br /&gt;
		/mnt)&lt;br /&gt;
			echo &amp;quot;/mnt&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /mnt | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /mnt/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/mnt/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/media)&lt;br /&gt;
			echo &amp;quot;/media&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			[ -d /media ] &amp;amp;&amp;amp; for rep in $(ls -F /media | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /media/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/media/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/dev) echo &amp;quot;/dev&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/tmp) echo &amp;quot;/tmp&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/proc) echo &amp;quot;/proc&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sys) echo &amp;quot;/sys&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/var*)&lt;br /&gt;
			echo &amp;quot;/var&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION &lt;br /&gt;
			ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/usr/src) echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/home)&lt;br /&gt;
			echo &amp;quot;/home&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /home | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /home/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/home/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/usr*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/bin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sbin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/lib*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/boot*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		*)	[ -d $rep ] &amp;amp;&amp;amp; echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
	esac&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
echo &#039;*/lost+found&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de grub&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de grub&amp;quot;&lt;br /&gt;
echo &amp;quot;[GRUB]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
cat /boot/grub/menu.lst | grep &#039;^[^#].*root (hd&#039; | head -n 1 | grep -o &#039;root.*&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Si l&#039;option -d est passee en parametre, on fait une sauvegarde differentielle&lt;br /&gt;
INCLUDE=${INCLUDE:=/}&lt;br /&gt;
rm -f $FICHIER_INCLUDE&lt;br /&gt;
for rep in $INCLUDE ; do&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_INCLUDE&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ $# -ge 1 ] &amp;amp;&amp;amp; [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-INCR-${DATE}&amp;quot;&lt;br /&gt;
	tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-INCR-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
else&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-FULL-${DATE}&amp;quot;&lt;br /&gt;
        rm -f $FICHIER_STATUS&lt;br /&gt;
	tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FIC_INCLUDE -X $FIC_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-FULL-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de MAKEDEV qui se trouve dans /dev&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de MAKEDEV&amp;quot;&lt;br /&gt;
[ -f /dev/MAKEDEV ] &amp;amp;&amp;amp; cp /dev/MAKEDEV $MONTAGE/&lt;br /&gt;
affiche_resultat 0&lt;br /&gt;
&lt;br /&gt;
quit 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Restauration avec tar ====&lt;br /&gt;
===== Présentation de la commande =====&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric-owner : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de commande pour restaurer une archive :&lt;br /&gt;
&amp;lt;code&amp;gt;tar zxvf --atime-preserve --preserve --same-owner --numeric-owner /backup/archive.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
rsync permet de synchroniser des répertoires/fichiers destinations par rapport à des répertoires/fichiers sources. La synchronisation se fait soit en local, soit sur une machine distante. Il est possible de demander à rsync d&#039;utiliser ssh afin de crypter les transmissions.&lt;br /&gt;
&lt;br /&gt;
==== La commande rsync ====&lt;br /&gt;
Pour l&#039;utiliser il suffit d&#039;utiliser:&lt;br /&gt;
&amp;lt;code&amp;gt;rsync [options] source(s) destination&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les options :&lt;br /&gt;
*  -v : mode verbeux&lt;br /&gt;
* -a : mode archive (correspond à -rlptgoD)&lt;br /&gt;
* -q : supprime les messages d&#039;information (mais pas d&#039;erreur)&lt;br /&gt;
* -r : récursif (pour les répertoires)&lt;br /&gt;
* -l : copie les liens symboliques en liens symboliques&lt;br /&gt;
* -p : préserve les permissions&lt;br /&gt;
* -o : garde le propriétaire (option disponible uniquement pour root)&lt;br /&gt;
* -g : garde le groupe&lt;br /&gt;
* --device : garde les fichiers de périphériques (uniquement pour root, et utile pour une sauvegarde système)&lt;br /&gt;
* -H : garde les hardlink. Attention, cette option est coûteuse en ressources!&lt;br /&gt;
* --specials : garde les fichiers spéciaux&lt;br /&gt;
* -t : garde l&#039;horodatage&lt;br /&gt;
* -e remoteshell : spécifie le shell distant à utiliser (ssh par exemple)&lt;br /&gt;
* --delete : supprime sur la destination les fichiers qui n&#039;existent pas sur la source&lt;br /&gt;
* --numeric-ids : ne fait pas la conversion uid/gid en user/group.&lt;br /&gt;
* -z : compresse pendant la transmission&lt;br /&gt;
* --exclude=PATTERN : définit un motif à exclure (par exemple */lost+found)&lt;br /&gt;
* --exclude-from fichier : lit les motifs dans le fichier&lt;br /&gt;
* --bwlimit=VALEUR : limit la bande passante à VALEUR Ko&lt;br /&gt;
&lt;br /&gt;
Bien entendu, &#039;&#039;man rsync&#039;&#039; vous donnera toutes les options disponibles&lt;br /&gt;
&lt;br /&gt;
==== Exemple de sauvegarde incrémentale avec rsync ====&lt;br /&gt;
=====Côté machine à sauvegarder=====&lt;br /&gt;
Dans la crontab de la machine à sauvegarder, vers 22h00, on lance le script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
# répertoires à sauvegarder&lt;br /&gt;
DIRS=&amp;quot;/home/jice /home/fred /etc /root /boot /var/lib/mysql /var/spool/mail&amp;quot;&lt;br /&gt;
# fichier contenant les fichiers à exclure de la sauvegarde&lt;br /&gt;
# voir EXCLUDE PATTERNS dans rsync(1)&lt;br /&gt;
EXCLUDEFILE=&amp;quot;/home/jice/bin/excludes&amp;quot;&lt;br /&gt;
OPTIONS=&amp;quot;-avz -e ssh&amp;quot;&lt;br /&gt;
OPTIONS=&amp;quot;$OPTIONS --exclude-from $EXCLUDEFILE --bwlimit=50&amp;quot;&lt;br /&gt;
OPTIONS=&amp;quot;$OPTIONS $*&amp;quot;&lt;br /&gt;
rsync $OPTIONS $DIRS jice@mon.serveur.net:backup/current&lt;br /&gt;
# copie du fichier &amp;quot;flag&amp;quot; pour dire au serveur que le backup a été fait&lt;br /&gt;
scp /home/jice/bin/backup_done jice@mon.serveur.net:~&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce script fait un backup vers le répertoire &amp;lt;code&amp;gt;backup/current&amp;lt;/code&amp;gt; du serveur (nommé &amp;lt;code&amp;gt;mon.serveur.net&amp;lt;/code&amp;gt;) ; à la fin, il copie un fichier (vide) &amp;lt;code&amp;gt;backup_done&amp;lt;/code&amp;gt; à la racine de mon compte sur le serveur, afin de dire au serveur que le backup a bien été fait.&lt;br /&gt;
&lt;br /&gt;
PS : voici un exemple de fichier &amp;lt;code&amp;gt;excludes&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;# excludes pour le backup sur zowie&lt;br /&gt;
jice/tmp*&lt;br /&gt;
jice/multimedia/video/*&lt;br /&gt;
jice/compil/*&lt;br /&gt;
fred/compil/*&lt;br /&gt;
*/.local/share/Trash/*&lt;br /&gt;
*/.kde/share/config/session/konqueror*&lt;br /&gt;
*/temp/*&lt;br /&gt;
*/tmp/*&lt;br /&gt;
*/cache/*&lt;br /&gt;
*/Cache/*&lt;br /&gt;
*/.thumbnails/*&lt;br /&gt;
*/.xvpics/*&lt;br /&gt;
*/.kde/tmp-*&lt;br /&gt;
*/.mcop/*&lt;br /&gt;
*/.ncftp/trace*&lt;br /&gt;
*/.nx/*&lt;br /&gt;
*.o&lt;br /&gt;
*.so&lt;br /&gt;
*.mp3&lt;br /&gt;
*.avi&lt;br /&gt;
*.rar&lt;br /&gt;
*.ace&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que ce fichier peut contenir ou bien le nom complet d&#039;un fichier, ou bien un &amp;quot;morceau&amp;quot; de nom de fichier avec des étoiles comme caractère joker. Pour plus d&#039;information, tapez dans une console : &amp;lt;code&amp;gt;man rsync&amp;lt;/code&amp;gt; et cherchez EXCLUDE PATTERNS.&lt;br /&gt;
&lt;br /&gt;
=====Côté serveur de sauvegarde=====&lt;br /&gt;
Côté serveur, j&#039;ai ce script qui fait une rotation des backups (en cron tous les  midi) :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ -f ~/backup_done ]; then&lt;br /&gt;
        KEEP=8&lt;br /&gt;
        DIR=~/backup&lt;br /&gt;
&lt;br /&gt;
        # arborescence :&lt;br /&gt;
        # ~/backup/2006-04-03&lt;br /&gt;
        # ~/backup/2006-04-04&lt;br /&gt;
        # ~/backup/2006-04-05&lt;br /&gt;
        # ~/backup/current&lt;br /&gt;
&lt;br /&gt;
        # calcule date du jour&lt;br /&gt;
        DATE=`date --date=yesterday &amp;quot;+%Y-%m-%d&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
        # crée le répertoire pour les backups du jour&lt;br /&gt;
        mkdir $DIR/$DATE&lt;br /&gt;
&lt;br /&gt;
        # supprime les vieux directories&lt;br /&gt;
        ls -d $DIR/2* | sort | head --lines=-$KEEP | xargs rm -rf&lt;br /&gt;
&lt;br /&gt;
        # copie (hard links) les données&lt;br /&gt;
        cp -al $DIR/current/* $DIR/$DATE&lt;br /&gt;
&lt;br /&gt;
        # supprime le fichier flag&lt;br /&gt;
        rm ~/backup_done&lt;br /&gt;
&lt;br /&gt;
        # on fait le rsync ensuite&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le backup a été fait (présence du fichier &amp;lt;code&amp;gt;backup_done&amp;lt;/code&amp;gt;, il effectue une rotation des backups.&amp;lt;br&amp;gt;&lt;br /&gt;
En utilisant le &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; avec les hard links, on ne copie pas réellement les fichiers, mais on crée un deuxième fichier qui pointe vers le contenu du premier (donc on peut avoir autant de hardlink qu&#039;on veut sur le même fichier, la place disque utilisée n&#039;est toujours que de la taille d&#039;un seul fichier).&amp;lt;br&amp;gt;&lt;br /&gt;
Rsync lorsqu&#039;il enverra, lors de la prochaine sauvegarde, un fichier modifié, utilisera un nom différent temporaire, avant de le renommer vers son nom normal. Ainsi, il ne va pas écraser le contenu du fichier hardlinké, car à la fin de la copie du fichier, Rsync supprime le fichier, puis renomme le fichier temporaire vers son nom normal.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A ce moment là, on a sur le serveur 2 versions du même fichier : la version courante qui vient d&#039;être sauvegardée dans &amp;lt;code&amp;gt;~/backup/current/repertoire/fichier&amp;lt;/code&amp;gt; et la version précédente qui a été copiée par le script ci-dessus dans &amp;lt;code&amp;gt;~/backup/&amp;lt;la date du dernier backup&amp;gt;/repertoire/fichier&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plus d&#039;explications&#039;&#039;&#039; :&lt;br /&gt;
* on a deux fichiers &amp;lt;code&amp;gt;current/toto&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;hier/toto&amp;lt;/code&amp;gt; qui pointent vers le même contenu. Ces 2 fichiers (ou plus) on été obtenus suite au script de rotation, par la copie avec hardlinks. On a donc :&lt;br /&gt;
&amp;lt;code&amp;gt;current/toto --&amp;gt; contenu &amp;lt;-- hier/toto&lt;br /&gt;
                               \&lt;br /&gt;
                                &#039;--------- avant-hier/toto&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
* si le fichier a été modifié, rsync va envoyer le nouveau fichier sous un nom temporaire &amp;lt;code&amp;gt;toto.tmp&amp;lt;/code&amp;gt; (par exemple). On a donc :&lt;br /&gt;
&amp;lt;code&amp;gt;current/toto --&amp;gt; contenu &amp;lt;-- hier/toto&lt;br /&gt;
                               \&lt;br /&gt;
                                &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto.tmp --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* ensuite, rsync supprime &amp;lt;code&amp;gt;current/toto&amp;lt;/code&amp;gt; On obtient, par la magie des  hardlinks :&lt;br /&gt;
&amp;lt;code&amp;gt;                 contenu &amp;lt;-- hier/toto&lt;br /&gt;
                          \&lt;br /&gt;
                           &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto.tmp --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* enfin, &amp;lt;code&amp;gt;toto.tmp&amp;lt;/code&amp;gt; est renommé en &amp;lt;code&amp;gt;toto&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;code&amp;gt;                 contenu &amp;lt;-- hier/toto&lt;br /&gt;
                          \&lt;br /&gt;
                           &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* on obtient bien 2 versions différentes, celle d&#039;hier et d&#039;avant-hier (le fichier n&#039;avait alors pas changé), et celle d&#039;aujourd&#039;hui.&lt;br /&gt;
&lt;br /&gt;
Ainsi j&#039;ai toujours les backup des 8 (réglable par la variable &amp;lt;code&amp;gt;KEEP&amp;lt;/code&amp;gt; ci-dessus) derniers jours disponible. Je peux retrouver les dernières versions d&#039;un fichier en cas de problème.&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
Si l&#039;on veut effectuer une sauvegarde système, il est nécessaire de prendre en compte les points suivants:&lt;br /&gt;
* faire une sauvegarde en gardant les uid/gid&lt;br /&gt;
* ne pas sauvegarder les répertoires inutiles (/tmp, /dev, /proc, /sys, le contenu des points de montages hors disques locaux (nfs, cdrom,...)) On peut également ne pas sauvegarder le contenu de /var/tmp, /var/cache, /var/lock, /var/run, /var/spool. Attention, il est important de garder la hiérarchie de ces répertoires!&lt;br /&gt;
* garder la table des partitions, avec le label des partitions si il y en a un (commande &#039;e2label&#039;)&lt;br /&gt;
* sauvegarder les informations de lvm (l&#039;idéal étant de pouvoir utiliser lvmcfgbackup et lvmcfgrestore. Sinon, ce n&#039;est pas la taille de chaque volume qu&#039;il faut sauvegarder, mais le nombre de Logical Extends. En spécifiant une taille, celle-ci sera arrondie pour avoir un nombre de LE fixe. Ce nombre ne sera pas forcément identique que celui utilisé lors de la création, et empêchera donc de restaurer le système de manière identique).&lt;br /&gt;
* arrêter autant que faire se peut les services qui tournent.&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;br /&gt;
&lt;br /&gt;
== Les outils graphiques / semi-graphiques ==&lt;br /&gt;
* mondorescue&lt;br /&gt;
* kbackup&lt;br /&gt;
* armanda backup&lt;br /&gt;
* bacula&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13752</id>
		<title>NFS</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13752"/>
		<updated>2006-09-25T11:48:29Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : Modification des options pour plus de sécurité&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Partager ses fichiers]]&lt;br /&gt;
= Installation d&#039;un serveur NFS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Installation d&#039;un serveur NFS&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Guillaume Pierronnet&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;NFS, ou le partage des ressources selon Unix.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
NFS signifie Network File System. C&#039;est, comme son nom l&#039;indique, un système de fichiers en réseau qui permet de partager ses données principalement entre systèmes UNIX. À la différence de SAMBA, NFS gère les permissions sur les fichiers et on peut donc l&#039;utiliser de manière totalement transparente dans son arborescence Linux.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION !&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute application réseau, NFS ouvre des trous dans la sécurité du système. Je vous invite donc à consulter les liens à la fin de cet article pour des précisions sur la sécurité ([http://www.linuxselfhelp.com/HOWTO/NFS-HOWTO/security.html celui-ci], en anglais, indique quelques règles à suivre, en parallèle des démarches indiquées [http://people.via.ecp.fr/~alexis/formation-linux/nfs.html dans ce guide nfs pour Debian] ou ci-dessous). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les softs ==&lt;br /&gt;
&lt;br /&gt;
=== Les modules du noyau ===&lt;br /&gt;
&lt;br /&gt;
Dans la configuration du noyau, on va dans la section &amp;quot;&#039;&#039;&#039;File systems ---&amp;gt; Network File Systems&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le client:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS file system support et Provide NFSv3 client support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFS_FS=y ou m&lt;br /&gt;
   CONFIG_NFS_V3=y&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le serveur:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS server support et Provide NFSv3 server support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFSD=y ou m&lt;br /&gt;
   CONFIG_NFSD_V3=y&lt;br /&gt;
&lt;br /&gt;
À partir du noyau 2.2.18, les modules supportent entièrement la version 3 du protocole ainsi que différentes corrections de bug. &amp;lt;br /&amp;gt;Il serait temps d&#039;upgrader si tu ne l&#039;as pas déjà fait! (profites-en pour passer au 2.4, ce sera réglé :)&lt;br /&gt;
&lt;br /&gt;
=== Les packages ===&lt;br /&gt;
&lt;br /&gt;
Les packages (sur ma Debian) sont :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-common&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-user-server&amp;lt;/tt&amp;gt; pour le serveur.&lt;br /&gt;
&lt;br /&gt;
Tu peux toujours récupérer les sources qui se trouvent sur http://nfs.sourceforge.net/.&lt;br /&gt;
&lt;br /&gt;
On va aussi installer le &#039;&#039;wrapper&#039;&#039; TCP pour un minimum de sécurité. Toujours sur ma Debian, le paquet s&#039;appelle &amp;lt;tt&amp;gt;tcpd&amp;lt;/tt&amp;gt;. Les sources se trouvent [ftp://ftp.porcupine.org/pub/security/index.html ici].&lt;br /&gt;
&lt;br /&gt;
== Le serveur ==&lt;br /&gt;
&lt;br /&gt;
Les 3 fichiers de configuration principaux sont &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/hosts.allow&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== /etc/exports ===&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt; est très simple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;répertoire machine1(option11,option12) machine2(option21,option22)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
par exemple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;/home 192.168.0.10(rw) 192.168.0.25(ro)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
signifie que l&#039;on autorisera la machine &#039;&#039;192.168.0.10&#039;&#039; à accéder à notre répertoire &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; en lecture et écriture (&amp;lt;tt&amp;gt;rw&amp;lt;/tt&amp;gt;) ainsi que la machine &#039;&#039;192.168.0.25&#039;&#039; mais uniquement en lecture (&amp;lt;tt&amp;gt;ro&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;répertoire&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; le répertoire du serveur à partager.&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;machine&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; Une liste de machines séparée par des virgules et autorisées à monter ce répertoire (utilisez des adresses IP plutôt que des noms à cause des problèmes de &amp;quot;&#039;&#039;dns spoofing&#039;&#039;&amp;quot;).&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;options&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; : &lt;br /&gt;
** &#039;&#039;&#039;ro&#039;&#039;&#039; : &amp;lt;br /&amp;gt;C&#039;est la valeur par défaut, lecture seule.&lt;br /&gt;
** &#039;&#039;&#039;rw&#039;&#039;&#039; : &amp;lt;br /&amp;gt;La machine à un accès en lecture/écriture au répertoire.&lt;br /&gt;
** &#039;&#039;&#039;no_root_squash&#039;&#039;&#039; : &amp;lt;br /&amp;gt;Les accès par l&#039;utilisateur root sur le serveur se font sous l&#039;identité root, au contraire de nobody (par défaut)&amp;lt;br /&amp;gt; À UTILISER AVEC PRÉCAUTION&lt;br /&gt;
** &#039;&#039;&#039;sync&#039;&#039;&#039; : &amp;lt;u&amp;gt;uniquement NFS v2&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;Ne diffère pas les écritures physiques au volume, augmente la fiabilité en cas de mauvais démontage. La version 3 dispose d&#039;un mécanisme de &#039;&#039;commit-rollback&#039;&#039; donc cette option n&#039;est pas utile.&lt;br /&gt;
&lt;br /&gt;
Un point important, pour un bon fonctionnement : tu dois avoir les mêmes numéros de groupes et d&#039;utilisateurs sur les deux machines. &amp;lt;br /&amp;gt;Des systèmes permettent de gérer çà, NIS (assez ancien) ou LDAP (plus récent). Avec peu d&#039;utilisateurs, tu peux tout simplement éditer &amp;lt;tt&amp;gt;/etc/group&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; pour synchroniser ces numéros.&lt;br /&gt;
&lt;br /&gt;
Il n&#039;est pas recommandé d&#039;exporter un système DOS ou VFAT à cause de leurs absences de gestion multi-utilisateurs ; ils ne sont pas fait pour être partagés avec NFS. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.deny ===&lt;br /&gt;
&lt;br /&gt;
On va interdire toutes les machines qui ne sont pas autorisées explicitement dans le &amp;lt;tt&amp;gt;/etc/hosts.allow&amp;lt;/tt&amp;gt;. &amp;lt;br /&amp;gt;Un bon vieux &amp;quot;&amp;lt;tt&amp;gt;ALL: ALL&amp;lt;/tt&amp;gt;&amp;quot; interdira l&#039;accès à tous les services à partir de toutes les machines. On peut cependant être plus précis en écrivant :&lt;br /&gt;
&lt;br /&gt;
 portmap:ALL&lt;br /&gt;
 lockd:ALL&lt;br /&gt;
 mountd:ALL&lt;br /&gt;
 rquotad:ALL&lt;br /&gt;
 statd:ALL&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.allow ===&lt;br /&gt;
&lt;br /&gt;
Dans le même esprit que pour le &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt;, ce fichier a l&#039;architecture suivante :&lt;br /&gt;
&lt;br /&gt;
   [service]: [IP de la machine client]&lt;br /&gt;
&lt;br /&gt;
Donc pour autoriser 192.168.1.34 à se connecter à un partage NFS, on écrira :&lt;br /&gt;
&lt;br /&gt;
   portmap:192.168.1.34&lt;br /&gt;
   lockd:192.168.1.34&lt;br /&gt;
   mountd:192.168.1.34&lt;br /&gt;
   rquotad:192.168.1.34&lt;br /&gt;
   statd:192.168.1.34&lt;br /&gt;
&lt;br /&gt;
On va pouvoir lancer les services ; sur ma Debian, je lance :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/init.d/nfs-server start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour Slackware, ce serait&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/rc.d/rc.nfsd start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande &amp;lt;tt&amp;gt;rpcinfo -p&amp;lt;/tt&amp;gt; permet de vérifier que les services fonctionnent. Elle devrait produire un résultat dans cet esprit :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# rpcinfo -p&lt;br /&gt;
  program vers proto   port&lt;br /&gt;
   100000    2   tcp    111  portmapper&lt;br /&gt;
   100000    2   udp    111  portmapper&lt;br /&gt;
   100024    1   udp    737  status&lt;br /&gt;
   100024    1   tcp    739  status&lt;br /&gt;
   100011    1   udp    851  rquotad&lt;br /&gt;
   100011    2   udp    851  rquotad&lt;br /&gt;
   100003    2   udp   2049  nfs&lt;br /&gt;
   100003    2   tcp   2049  nfs&lt;br /&gt;
   100005    1   udp    872  mountd&lt;br /&gt;
   100005    2   udp    872  mountd&lt;br /&gt;
   100005    1   tcp    875  mountd&lt;br /&gt;
   100005    2   tcp    875  mountd&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour recharger les services NFS (par exemple après une modification du fichier de config) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# killall -HUP nfsd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
le serveur est prêt ! &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Le client ==&lt;br /&gt;
&lt;br /&gt;
Pour utiliser NFS v3, il faut au minimum la version 2.10m du programme &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt;. Pour voir sa version, taper :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount -V&lt;br /&gt;
 mount: mount-2.11h&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On va maintenant pouvoir monter notre partage!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount mon.serveur.nfs:/home /mnt/home&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En principe tout devrait bien se dérouler.&lt;br /&gt;
&lt;br /&gt;
Pour monter ce partage définitivement à chaque démarrage de la machine, éditons notre &amp;lt;tt&amp;gt;/etc/fstab&amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 master.foo.com:/home  /mnt nfs     rw      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;mount&#039; possède quelques options spécifiques au nfs, et qui peuvent s&#039;avérer utiles :&lt;br /&gt;
* &#039;&#039;&#039;tcp&#039;&#039;&#039; : permet de préciser qu&#039;on ne travaille qu&#039;en TCP&lt;br /&gt;
* &#039;&#039;&#039;rsize=XXX&#039;&#039;&#039; et &#039;&#039;&#039;wsize=XXX&#039;&#039;&#039; : permet de modifier la taille par défaut (1024) du buffer. Une taille de 8192 par exemple permet d&#039;accélerer le transfert.&lt;br /&gt;
* &#039;&#039;&#039;soft&#039;&#039;&#039; et &#039;&#039;&#039;timeo=XXX&#039;&#039;&#039;: sur un problème de transmission, le client peut perdre la connection. Le noyau continuera d&#039;essayer ad vitam eternam. Les processus risquent de se retrouver dans un état D (ininterruptible sleep) que seul un reboot permet de résoudre. L&#039;option &#039;&#039;&#039;soft&#039;&#039;&#039; dit au noyau d&#039;abandonner au bout d&#039;un certain temps, et l&#039;option &#039;&#039;&#039;timeo&#039;&#039;&#039; permet de définir le timeout.&lt;br /&gt;
&lt;br /&gt;
== Sécuriser le NFS ==&lt;br /&gt;
&lt;br /&gt;
Les données transitent en clair sur le réseau, néanmoins il est possible de crypter les échange grâce au &#039;&#039;port forwarding&#039;&#039; de ssh.&lt;br /&gt;
La mise en place de la cryptographie se fait en deux parties : une partie sur le serveur, une partie sur le client.&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de connaître et/ou de définir le port tcp utilisé par mountd. Un petit &amp;lt;code&amp;gt;rpcinfo -p&amp;lt;/code&amp;gt; permettra de savoir quel port est utilisé par mountd. On peut définir celui-ci via l&#039;option &#039;&#039;-d&#039;&#039; lors du lancement du service. Dans notre exemple, il s&#039;agit du port 875.&lt;br /&gt;
Il faut également rajouter l&#039;option &#039;&#039;insecure&#039;&#039; pour les machines/réseaux concernés dans &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;. Cette option permet seulement de pouvoir atteindre le serveur via un port &amp;gt; 1024 (ce que nous allons faire).&lt;br /&gt;
&lt;br /&gt;
=== Configuration du client === &lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de deux ports libres, par exemple 38000 et 38001 pour créer un tunnel sécurisé entre le client et le serveur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -f -L38000:serveur:2049 -L38001:serveur:875 -l root serveur sleep 60&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;utilisation de l&#039;utilisateur root est nécessaire car on va travailler avec un port &amp;lt; 1024. La mise en place d&#039;une authentification par clé peut être dans ce cas très intéressante.&lt;br /&gt;
Avec cette commande nous venons de créer un tunnel chiffré entre le port 38000 (resp. 38001) de notre client et le 2049 (resp. 875) du serveur.&lt;br /&gt;
La commande &#039;sleep 60&#039; fait tomber le tunnel sécurisé au bout de 60 secondes si celui-ci n&#039;est pas utilisé.&lt;br /&gt;
Il ne reste plus qu&#039;à monter le partage! Le fait d&#039;utiliser un tunnel ssh implique que nous allons utiliser exclusivement une connection tcp.&lt;br /&gt;
Pour monter le partage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mount -t nfs -o tcp,rw,port=38000,mountport=38001,soft,timeo=60 localhost:/repertoire /mnt/nfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de monter serveur:/repertoire dans /mnt/nfs. Il faut bien utiliser localhost:/repertoire pour monter le partage. C&#039;est justement cela qui va permettre d&#039;utiliser la connexion sécurisée.&lt;br /&gt;
&lt;br /&gt;
On peut également rajouter cette ligne dans le /etc/fstab :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 localhost:/home  /mnt nfs     tcp,rw,port=38000,mountport=38001,soft,timeo=60      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Liens ==&lt;br /&gt;
&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/LDAP-HOWTO.html LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Guillaume Pierronnet le 22/10/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 22/10/2001, Guillaume Pierronnet - 2006 Oudoubah&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;br /&gt;
&lt;br /&gt;
=Autres ressources=&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/ &lt;br /&gt;
* [http://en.tldp.org/HOWTO/LDAP-HOWTO/ LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13747</id>
		<title>NFS</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13747"/>
		<updated>2006-09-21T13:15:15Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : /* Le client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Partager ses fichiers]]&lt;br /&gt;
= Installation d&#039;un serveur NFS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Installation d&#039;un serveur NFS&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Guillaume Pierronnet&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;NFS, ou le partage des ressources selon Unix.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
NFS signifie Network File System. C&#039;est, comme son nom l&#039;indique, un système de fichiers en réseau qui permet de partager ses données principalement entre systèmes UNIX. À la différence de SAMBA, NFS gère les permissions sur les fichiers et on peut donc l&#039;utiliser de manière totalement transparente dans son arborescence Linux.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION !&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute application réseau, NFS ouvre des trous dans la sécurité du système. Je vous invite donc à consulter les liens à la fin de cet article pour des précisions sur la sécurité ([http://www.linuxselfhelp.com/HOWTO/NFS-HOWTO/security.html celui-ci], en anglais, indique quelques règles à suivre, en parallèle des démarches indiquées [http://people.via.ecp.fr/~alexis/formation-linux/nfs.html dans ce guide nfs pour Debian] ou ci-dessous). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les softs ==&lt;br /&gt;
&lt;br /&gt;
=== Les modules du noyau ===&lt;br /&gt;
&lt;br /&gt;
Dans la configuration du noyau, on va dans la section &amp;quot;&#039;&#039;&#039;File systems ---&amp;gt; Network File Systems&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le client:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS file system support et Provide NFSv3 client support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFS_FS=y ou m&lt;br /&gt;
   CONFIG_NFS_V3=y&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le serveur:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS server support et Provide NFSv3 server support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFSD=y ou m&lt;br /&gt;
   CONFIG_NFSD_V3=y&lt;br /&gt;
&lt;br /&gt;
À partir du noyau 2.2.18, les modules supportent entièrement la version 3 du protocole ainsi que différentes corrections de bug. &amp;lt;br /&amp;gt;Il serait temps d&#039;upgrader si tu ne l&#039;as pas déjà fait! (profites-en pour passer au 2.4, ce sera réglé :)&lt;br /&gt;
&lt;br /&gt;
=== Les packages ===&lt;br /&gt;
&lt;br /&gt;
Les packages (sur ma Debian) sont :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-common&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-user-server&amp;lt;/tt&amp;gt; pour le serveur.&lt;br /&gt;
&lt;br /&gt;
Tu peux toujours récupérer les sources qui se trouvent sur http://nfs.sourceforge.net/.&lt;br /&gt;
&lt;br /&gt;
On va aussi installer le &#039;&#039;wrapper&#039;&#039; TCP pour un minimum de sécurité. Toujours sur ma Debian, le paquet s&#039;appelle &amp;lt;tt&amp;gt;tcpd&amp;lt;/tt&amp;gt;. Les sources se trouvent [ftp://ftp.porcupine.org/pub/security/index.html ici].&lt;br /&gt;
&lt;br /&gt;
== Le serveur ==&lt;br /&gt;
&lt;br /&gt;
Les 3 fichiers de configuration principaux sont &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/hosts.allow&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== /etc/exports ===&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt; est très simple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;répertoire machine1(option11,option12) machine2(option21,option22)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
par exemple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;/home 192.168.0.10(rw) 192.168.0.25(ro)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
signifie que l&#039;on autorisera la machine &#039;&#039;192.168.0.10&#039;&#039; à accéder à notre répertoire &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; en lecture et écriture (&amp;lt;tt&amp;gt;rw&amp;lt;/tt&amp;gt;) ainsi que la machine &#039;&#039;192.168.0.25&#039;&#039; mais uniquement en lecture (&amp;lt;tt&amp;gt;ro&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;répertoire&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; le répertoire du serveur à partager.&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;machine&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; Une liste de machines séparée par des virgules et autorisées à monter ce répertoire (utilisez des adresses IP plutôt que des noms à cause des problèmes de &amp;quot;&#039;&#039;dns spoofing&#039;&#039;&amp;quot;).&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;options&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; : &lt;br /&gt;
** &#039;&#039;&#039;ro&#039;&#039;&#039; : &amp;lt;br /&amp;gt;C&#039;est la valeur par défaut, lecture seule.&lt;br /&gt;
** &#039;&#039;&#039;rw&#039;&#039;&#039; : &amp;lt;br /&amp;gt;La machine à un accès en lecture/écriture au répertoire.&lt;br /&gt;
** &#039;&#039;&#039;no_root_squash&#039;&#039;&#039; : &amp;lt;br /&amp;gt;Les accès par l&#039;utilisateur root sur le serveur se font sous l&#039;identité root, au contraire de nobody (par défaut)&amp;lt;br /&amp;gt; À UTILISER AVEC PRÉCAUTION&lt;br /&gt;
** &#039;&#039;&#039;sync&#039;&#039;&#039; : &amp;lt;u&amp;gt;uniquement NFS v2&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;Ne diffère pas les écritures physiques au volume, augmente la fiabilité en cas de mauvais démontage. La version 3 dispose d&#039;un mécanisme de &#039;&#039;commit-rollback&#039;&#039; donc cette option n&#039;est pas utile.&lt;br /&gt;
&lt;br /&gt;
Un point important, pour un bon fonctionnement : tu dois avoir les mêmes numéros de groupes et d&#039;utilisateurs sur les deux machines. &amp;lt;br /&amp;gt;Des systèmes permettent de gérer çà, NIS (assez ancien) ou LDAP (plus récent). Avec peu d&#039;utilisateurs, tu peux tout simplement éditer &amp;lt;tt&amp;gt;/etc/group&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; pour synchroniser ces numéros.&lt;br /&gt;
&lt;br /&gt;
Il n&#039;est pas recommandé d&#039;exporter un système DOS ou VFAT à cause de leurs absences de gestion multi-utilisateurs ; ils ne sont pas fait pour être partagés avec NFS. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.deny ===&lt;br /&gt;
&lt;br /&gt;
On va interdire toutes les machines qui ne sont pas autorisées explicitement dans le &amp;lt;tt&amp;gt;/etc/hosts.allow&amp;lt;/tt&amp;gt;. &amp;lt;br /&amp;gt;Un bon vieux &amp;quot;&amp;lt;tt&amp;gt;ALL: ALL&amp;lt;/tt&amp;gt;&amp;quot; interdira l&#039;accès à tous les services à partir de toutes les machines. On peut cependant être plus précis en écrivant :&lt;br /&gt;
&lt;br /&gt;
 portmap:ALL&lt;br /&gt;
 lockd:ALL&lt;br /&gt;
 mountd:ALL&lt;br /&gt;
 rquotad:ALL&lt;br /&gt;
 statd:ALL&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.allow ===&lt;br /&gt;
&lt;br /&gt;
Dans le même esprit que pour le &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt;, ce fichier a l&#039;architecture suivante :&lt;br /&gt;
&lt;br /&gt;
   [service]: [IP de la machine client]&lt;br /&gt;
&lt;br /&gt;
Donc pour autoriser 192.168.1.34 à se connecter à un partage NFS, on écrira :&lt;br /&gt;
&lt;br /&gt;
   portmap:192.168.1.34&lt;br /&gt;
   lockd:192.168.1.34&lt;br /&gt;
   mountd:192.168.1.34&lt;br /&gt;
   rquotad:192.168.1.34&lt;br /&gt;
   statd:192.168.1.34&lt;br /&gt;
&lt;br /&gt;
On va pouvoir lancer les services ; sur ma Debian, je lance :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/init.d/nfs-server start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour Slackware, ce serait&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/rc.d/rc.nfsd start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande &amp;lt;tt&amp;gt;rpcinfo -p&amp;lt;/tt&amp;gt; permet de vérifier que les services fonctionnent. Elle devrait produire un résultat dans cet esprit :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# rpcinfo -p&lt;br /&gt;
  program vers proto   port&lt;br /&gt;
   100000    2   tcp    111  portmapper&lt;br /&gt;
   100000    2   udp    111  portmapper&lt;br /&gt;
   100024    1   udp    737  status&lt;br /&gt;
   100024    1   tcp    739  status&lt;br /&gt;
   100011    1   udp    851  rquotad&lt;br /&gt;
   100011    2   udp    851  rquotad&lt;br /&gt;
   100003    2   udp   2049  nfs&lt;br /&gt;
   100003    2   tcp   2049  nfs&lt;br /&gt;
   100005    1   udp    872  mountd&lt;br /&gt;
   100005    2   udp    872  mountd&lt;br /&gt;
   100005    1   tcp    875  mountd&lt;br /&gt;
   100005    2   tcp    875  mountd&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour recharger les services NFS (par exemple après une modification du fichier de config) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# killall -HUP nfsd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
le serveur est prêt ! &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Le client ==&lt;br /&gt;
&lt;br /&gt;
Pour utiliser NFS v3, il faut au minimum la version 2.10m du programme &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt;. Pour voir sa version, taper :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount -V&lt;br /&gt;
 mount: mount-2.11h&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On va maintenant pouvoir monter notre partage!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount mon.serveur.nfs:/home /mnt/home&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En principe tout devrait bien se dérouler.&lt;br /&gt;
&lt;br /&gt;
Pour monter ce partage définitivement à chaque démarrage de la machine, éditons notre &amp;lt;tt&amp;gt;/etc/fstab&amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 master.foo.com:/home  /mnt nfs     rw      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;mount&#039; possède quelques options spécifiques au nfs, et qui peuvent s&#039;avérer utiles :&lt;br /&gt;
* &#039;&#039;&#039;tcp&#039;&#039;&#039; : permet de préciser qu&#039;on ne travaille qu&#039;en TCP&lt;br /&gt;
* &#039;&#039;&#039;rsize=XXX&#039;&#039;&#039; et &#039;&#039;&#039;wsize=XXX&#039;&#039;&#039; : permet de modifier la taille par défaut (1024) du buffer. Une taille de 8192 par exemple permet d&#039;accélerer le transfert.&lt;br /&gt;
* &#039;&#039;&#039;soft&#039;&#039;&#039; et &#039;&#039;&#039;timeo=XXX&#039;&#039;&#039;: sur un problème de transmission, le client peut perdre la connection. Le noyau continuera d&#039;essayer ad vitam eternam. Les processus risquent de se retrouver dans un état D (ininterruptible sleep) que seul un reboot permet de résoudre. L&#039;option &#039;&#039;&#039;soft&#039;&#039;&#039; dit au noyau d&#039;abandonner au bout d&#039;un certain temps, et l&#039;option &#039;&#039;&#039;timeo&#039;&#039;&#039; permet de définir le timeout.&lt;br /&gt;
&lt;br /&gt;
== Sécuriser le NFS ==&lt;br /&gt;
&lt;br /&gt;
Les données transitent en clair sur le réseau, néanmoins il est possible de crypter les échange grâce au &#039;&#039;port forwarding&#039;&#039; de ssh.&lt;br /&gt;
La mise en place de la cryptographie se fait en deux parties : une partie sur le serveur, une partie sur le client.&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de connaître et/ou de définir le port tcp utilisé par mountd. Un petit &amp;lt;code&amp;gt;rpcinfo -p&amp;lt;/code&amp;gt; permettra de savoir quel port est utilisé par mountd. On peut définir celui-ci via l&#039;option &#039;&#039;-d&#039;&#039; lors du lancement du service. Dans notre exemple, il s&#039;agit du port 875.&lt;br /&gt;
Il faut également rajouter l&#039;option &#039;&#039;insecure&#039;&#039; pour les machines/réseaux concernés dans &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;. Cette option permet seulement de pouvoir atteindre le serveur via un port &amp;gt; 1024 (ce que nous allons faire).&lt;br /&gt;
&lt;br /&gt;
=== Configuration du client === &lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de deux ports libres, par exemple 38000 et 38001 pour créer un tunnel sécurisé entre le client et le serveur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -f -N -L38000:serveur:2049 -L38001:serveur:875 -l root serveur&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;utilisation de l&#039;utilisateur root est nécessaire car on va travailler avec un port &amp;lt; 1024. La mise en place d&#039;une authentification par clé peut être dans ce cas très intéressante.&lt;br /&gt;
Avec cette commande nous venons de créer un tunnel chiffré entre le port 38000 (resp. 38001) de notre client et le 2049 (resp. 875) du serveur.&lt;br /&gt;
Il ne reste plus qu&#039;à monter le partage! Le fait d&#039;utiliser un tunnel ssh implique que nous allons utiliser exclusivement une connection tcp.&lt;br /&gt;
Pour monter le partage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mount -t nfs -o rw,port=38000,mountport=38001 localhost:/repertoire /mnt/nfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de monter serveur:/repertoire dans /mnt/nfs. Il faut bien utiliser localhost:/repertoire pour monter le partage. C&#039;est justement cela qui va permettre d&#039;utiliser la connexion sécurisée.&lt;br /&gt;
&lt;br /&gt;
On peut également rajouter cette ligne dans le /etc/fstab :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 localhost:/home  /mnt nfs     rw,port=38000,mountport=38001      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Liens ==&lt;br /&gt;
&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/LDAP-HOWTO.html LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Guillaume Pierronnet le 22/10/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 22/10/2001, Guillaume Pierronnet - 2006 Oudoubah&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;br /&gt;
&lt;br /&gt;
=Autres ressources=&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/ &lt;br /&gt;
* [http://en.tldp.org/HOWTO/LDAP-HOWTO/ LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13744</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13744"/>
		<updated>2006-09-20T20:20:42Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : rsync, sauvegarde système + début outils graphiques&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [[Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
&lt;br /&gt;
==== Sauvegarde avec tar ====&lt;br /&gt;
&lt;br /&gt;
===== Présentation des options =====&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
* -N date : permet de ne sauvegarder que les fichiers postérieurs à la date définie. La date doit être fournie sous la forme &#039;&#039;AAAA-MM-JJ HH:MM:SS&amp;quot;. On obtient se format grâce à la commande &amp;lt;code&amp;gt;date &amp;quot;+%Y:%m:%d %H:%M:%S&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* --totals : affiche le nombre d&#039;octets écrits lors de la sauvegarde&lt;br /&gt;
* -g fichier : permet d&#039;effectuer des sauvegardes incrémentales, en se basant sur un fichier de status. Ce fichier est soit utilisé (sauvegarde incrémentale), soit créé (sauvegarde full). Attention, cette option n&#039;est valable que pour les versions GNU!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;toujours&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et périls (kernel panic).&lt;br /&gt;
&lt;br /&gt;
===== Exemple de sauvegarde de données =====&lt;br /&gt;
Voici un petit script permettant de mettre en place une sauvegarde totale et/ou différentielle de données :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Initialisation des variables&lt;br /&gt;
DATE=$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&lt;br /&gt;
TYPE=&amp;quot;FULL&amp;quot;&lt;br /&gt;
REP=/backup&lt;br /&gt;
FICHIER_EXCLUDE=/etc/save.exclude&lt;br /&gt;
FICHIER_INCLUDE=/etc/save.include&lt;br /&gt;
FICHIER_STATUS=/etc/save.state&lt;br /&gt;
COMPRESSION=9&lt;br /&gt;
&lt;br /&gt;
# Si le script est appelé avec l&#039;option &amp;quot;-d&amp;quot;, alors on fait une sauvegarde différentielle&lt;br /&gt;
if [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
     TYPE=&amp;quot;INCR&amp;quot;&lt;br /&gt;
     tar cP --atime-preserve -g $FICHIER_STATUS --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; ${REP}/save-INCR-${date}.tgz&lt;br /&gt;
# Sinon, on fait une sauvegarde totale&lt;br /&gt;
else&lt;br /&gt;
     rm -f $FICHIER_STATUS&lt;br /&gt;
     tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; ${REP}/save-FULL-${date}.tgz&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Exemple de sauvegarde système =====&lt;br /&gt;
Le script suivant permet de faire une sauvegarde système, plus complet, a pour but de faire une sauvegarde système sur un serveur NFS. Il utilise un fichier de configuration. Le prérequis est de renseigner le fichier /etc/save.conf et d&#039;utiliser udev. &lt;br /&gt;
&lt;br /&gt;
Le fichier save.conf doit être de la forme :&lt;br /&gt;
&amp;lt;code&amp;gt;EXCLUDE=&amp;quot;/repertoire1 /repertoire2&amp;quot;&lt;br /&gt;
# Le reste est optionnel&lt;br /&gt;
&lt;br /&gt;
#COMPRESSION=1&lt;br /&gt;
#SERVEUR=&amp;quot;10.0.0.2:/path&lt;br /&gt;
#MONTAGE=&amp;quot;/mnt/nfs&amp;quot;&lt;br /&gt;
#INCLUDE=&amp;quot;/toto&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et le script :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
PID=$$&lt;br /&gt;
&lt;br /&gt;
# On donne une priorité faible au processus pour ne pas dégrader les performances des autres applications&lt;br /&gt;
renice +19 $PID&lt;br /&gt;
. /etc/save.conf&lt;br /&gt;
&lt;br /&gt;
MONTAGE=${MONTAGE:=&amp;quot;/tmp/save.$PID&amp;quot;}&lt;br /&gt;
SERVEUR=${SERVEUR:=&amp;quot;10.0.0.1:/backup&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
COMPRESSION=${COMPRESSION:=9}&lt;br /&gt;
NOM=$(hostname)&lt;br /&gt;
CONFIGURATION=${MONTAGE}/${NOM}.conf&lt;br /&gt;
DATE=&amp;quot;$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&amp;quot;&lt;br /&gt;
FICHIER_EXCLUDE=/tmp/save.$PID.exlude&lt;br /&gt;
FICHIER_INCLUDE=/tmp/save.$PID.include&lt;br /&gt;
FICHIER_STATUS=/etc/save.state&lt;br /&gt;
LVMVERSION=1&lt;br /&gt;
&lt;br /&gt;
affiche_action() {&lt;br /&gt;
	echo -e &amp;quot;$1 ........... \c&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
affiche_resultat() {&lt;br /&gt;
	if [ $1 = 0 ] ; then&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 2&lt;br /&gt;
		echo -e &amp;quot;OK\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 1&lt;br /&gt;
		echo -e &amp;quot;KO\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 1&lt;br /&gt;
	fi	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quit() {&lt;br /&gt;
	affiche_action &amp;quot;Nettoyage en cours&amp;quot;&lt;br /&gt;
	rm -f $FICHIER_EXCLUDE&lt;br /&gt;
	rm -f $FICHIER_INCLUDE&lt;br /&gt;
	umount $MONTAGE&lt;br /&gt;
	rmdir $MONTAGE&lt;br /&gt;
	affiche_resultat $?&lt;br /&gt;
	exit $1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Montage du partage nfs&lt;br /&gt;
affiche_action &amp;quot;Montage du partage NFS vers $SERVER&amp;quot;&lt;br /&gt;
mkdir $MONTAGE&lt;br /&gt;
mount -t nfs $SERVER $MONTAGE&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des donnees de partitionnement&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde du partitionnement&amp;quot;&lt;br /&gt;
echo &amp;quot;[disks]&amp;quot; &amp;gt; $CONFIGURATION&lt;br /&gt;
/sbin/fdisk -l | tr &#039;*&#039; &#039; &#039; | awk &#039;/^\/dev/ {print $1,$2,$3,$5}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[bootdisk]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
fdisk -l | awk &#039;/^\/dev\/.*\*/ {print $1}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde du lvm : PV, VG, LV et version du LVM&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des groupes de volumes du LVM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[LVM-VG]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
liste=$(pvscan | grep -o &#039;PV.*/dev/.*VG.*&#039; | tr -d &#039;&amp;quot;&#039; | sed &#039;s,^.*PV \(/dev/[^ ]*\).* VG \([^ ]*\).*,\1 \2,&#039;)&lt;br /&gt;
liste2=$(echo $liste | grep -o &#039;/dev/[^ ]*&#039;)&lt;br /&gt;
for element in $liste2 ; do&lt;br /&gt;
        LVM=1&lt;br /&gt;
        $REP/bin/lvm.static pvscan 2&amp;gt;/dev/null | grep $element 2&amp;gt;/dev/null | grep -q lvm2&lt;br /&gt;
        [ $? = 0 ] &amp;amp;&amp;amp; LVM=2&lt;br /&gt;
        echo $(echo $liste | grep -o &amp;quot;$element [^ ]*&amp;quot;) $LVM &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des volumes logiques du LVM&amp;quot;&lt;br /&gt;
echo &amp;quot;[LVM-LV]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for volume in $(lvscan | grep -o &#039;&amp;quot;/dev[^&amp;quot;]*&amp;quot;&#039; | tr -d &#039;&amp;quot;&#039;) ; do&lt;br /&gt;
	extend=$(lvdisplay $volume | awk &#039;/Allocated LE/ {print $3}&#039;)&lt;br /&gt;
	echo &amp;quot;$volume $extend&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des labels&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des labels des partitions&amp;quot;&lt;br /&gt;
echo &amp;quot;[labels]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for partition in $(/sbin/fdisk -l | grep -o &#039;^/dev/[^ ]*&#039;) ; do&lt;br /&gt;
	label=$(/sbin/e2label $partition 2&amp;gt;/dev/null)&lt;br /&gt;
	echo &amp;quot;$partition=$label&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des points de montage&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des points de montage&amp;quot;&lt;br /&gt;
echo &amp;quot;[montage]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
mount | awk &#039;/ext[23]/ {print $1,$3}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de la hierarchie exclue&lt;br /&gt;
affiche_action &amp;quot;Creation de la liste des repertoires exclus a recontruire&amp;quot;&lt;br /&gt;
echo &amp;quot;[hierarchie]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
rm -f $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# On exclu les partages NFS et les montages loop&lt;br /&gt;
mount | awk &#039;/type nfs/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
mount | awk &#039;/loop=/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Rajout des répertoires à exclure par défaut&lt;br /&gt;
[ -d /media ] &amp;amp;&amp;amp; EXCLUDE=&amp;quot;/media $EXCLUDE&amp;quot;&lt;br /&gt;
EXCLUDE=&amp;quot;/mnt /sys /dev /tmp /proc /var/run /var/log /var/lock /var/spool /var/tmp /var/cache $EXCLUDE&amp;quot;&lt;br /&gt;
for rep in $EXCLUDE ; do&lt;br /&gt;
	case $rep in&lt;br /&gt;
		/mnt)&lt;br /&gt;
			echo &amp;quot;/mnt&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /mnt | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /mnt/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/mnt/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/media)&lt;br /&gt;
			echo &amp;quot;/media&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			[ -d /media ] &amp;amp;&amp;amp; for rep in $(ls -F /media | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /media/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/media/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/dev) echo &amp;quot;/dev&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/tmp) echo &amp;quot;/tmp&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/proc) echo &amp;quot;/proc&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sys) echo &amp;quot;/sys&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/var*)&lt;br /&gt;
			echo &amp;quot;/var&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION &lt;br /&gt;
			ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/usr/src) echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/home)&lt;br /&gt;
			echo &amp;quot;/home&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /home | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /home/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/home/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/usr*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/bin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sbin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/lib*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/boot*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		*)	[ -d $rep ] &amp;amp;&amp;amp; echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
	esac&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
echo &#039;*/lost+found&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de grub&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de grub&amp;quot;&lt;br /&gt;
echo &amp;quot;[GRUB]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
cat /boot/grub/menu.lst | grep &#039;^[^#].*root (hd&#039; | head -n 1 | grep -o &#039;root.*&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Si l&#039;option -d est passee en parametre, on fait une sauvegarde differentielle&lt;br /&gt;
INCLUDE=${INCLUDE:=/}&lt;br /&gt;
rm -f $FICHIER_INCLUDE&lt;br /&gt;
for rep in $INCLUDE ; do&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_INCLUDE&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ $# -ge 1 ] &amp;amp;&amp;amp; [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-INCR-${DATE}&amp;quot;&lt;br /&gt;
	tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-INCR-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
else&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-FULL-${DATE}&amp;quot;&lt;br /&gt;
        rm -f $FICHIER_STATUS&lt;br /&gt;
	tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FIC_INCLUDE -X $FIC_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-FULL-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de MAKEDEV qui se trouve dans /dev&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de MAKEDEV&amp;quot;&lt;br /&gt;
[ -f /dev/MAKEDEV ] &amp;amp;&amp;amp; cp /dev/MAKEDEV $MONTAGE/&lt;br /&gt;
affiche_resultat 0&lt;br /&gt;
&lt;br /&gt;
quit 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Restauration avec tar ====&lt;br /&gt;
===== Présentation de la commande =====&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric-owner : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
* -g fichier: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de commande pour restaurer une archive :&lt;br /&gt;
&amp;lt;code&amp;gt;tar zxvf --atime-preserve --preserve --same-owner --numeric-owner /backup/archive.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
rsync permet de synchroniser des répertoires/fichiers destinations par rapport à des répertoires/fichiers sources. La synchronisation se fait soit en local, soit sur une machine distante. Il est possible de demander à rsync d&#039;utiliser ssh afin de crypter les transmissions.&lt;br /&gt;
&lt;br /&gt;
==== La commande rsync ====&lt;br /&gt;
Pour l&#039;utiliser il suffit d&#039;utiliser:&lt;br /&gt;
&amp;lt;code&amp;gt;rsync [options] source(s) destination&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les options :&lt;br /&gt;
*  -v : mode verbeux&lt;br /&gt;
* -a : mode archive (correspond à -rlptgoD)&lt;br /&gt;
* -q : supprime les messages d&#039;information (mais pas d&#039;erreur)&lt;br /&gt;
* -r : récursif (pour les répertoires)&lt;br /&gt;
* -l : copie les liens symboliques en liens symboliques&lt;br /&gt;
* -p : préserve les permissions&lt;br /&gt;
* -o : garde le propriétaire (option disponible uniquement pour root)&lt;br /&gt;
* -g : garde le groupe&lt;br /&gt;
* --device : garde les fichiers de périphériques (uniquement pour root, et utile pour une sauvegarde système)&lt;br /&gt;
* -H : garde les hardlink. Attention, cette option est coûteuse en ressources!&lt;br /&gt;
* --specials : garde les fichiers spéciaux&lt;br /&gt;
* -t : garde l&#039;horodatage&lt;br /&gt;
* -e remoteshell : spécifie le shell distant à utiliser (ssh par exemple)&lt;br /&gt;
* --delete : supprime sur la destination les fichiers qui n&#039;existent pas sur la source&lt;br /&gt;
* --numeric-ids : ne fait pas la conversion uid/gid en user/group.&lt;br /&gt;
* -z : compresse pendant la transmission&lt;br /&gt;
* --exclude=PATTERN : définit un motif à exclure (par exemple */lost+found)&lt;br /&gt;
* --exclude-from fichier : lit les motifs dans le fichier&lt;br /&gt;
* --bwlimit=VALEUR : limit la bande passante à VALEUR Ko&lt;br /&gt;
&lt;br /&gt;
Bien entendu, &#039;&#039;man rsync&#039;&#039; vous donnera toutes les options disponibles&lt;br /&gt;
&lt;br /&gt;
==== Exemple de sauvegarde incrémentale avec rsync ====&lt;br /&gt;
=====Côté machine à sauvegarder=====&lt;br /&gt;
Dans la crontab de la machine à sauvegarder, vers 22h00, on lance le script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
# répertoires à sauvegarder&lt;br /&gt;
DIRS=&amp;quot;/home/jice /home/fred /etc /root /boot /var/lib/mysql /var/spool/mail&amp;quot;&lt;br /&gt;
# fichier contenant les fichiers à exclure de la sauvegarde&lt;br /&gt;
# voir EXCLUDE PATTERNS dans rsync(1)&lt;br /&gt;
EXCLUDEFILE=&amp;quot;/home/jice/bin/excludes&amp;quot;&lt;br /&gt;
OPTIONS=&amp;quot;-avz -e ssh&amp;quot;&lt;br /&gt;
OPTIONS=&amp;quot;$OPTIONS --exclude-from $EXCLUDEFILE --bwlimit=50&amp;quot;&lt;br /&gt;
OPTIONS=&amp;quot;$OPTIONS $*&amp;quot;&lt;br /&gt;
rsync $OPTIONS $DIRS jice@mon.serveur.net:backup/current&lt;br /&gt;
# copie du fichier &amp;quot;flag&amp;quot; pour dire au serveur que le backup a été fait&lt;br /&gt;
scp /home/jice/bin/backup_done jice@mon.serveur.net:~&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce script fait un backup vers le répertoire &amp;lt;code&amp;gt;backup/current&amp;lt;/code&amp;gt; du serveur (nommé &amp;lt;code&amp;gt;mon.serveur.net&amp;lt;/code&amp;gt;) ; à la fin, il copie un fichier (vide) &amp;lt;code&amp;gt;backup_done&amp;lt;/code&amp;gt; à la racine de mon compte sur le serveur, afin de dire au serveur que le backup a bien été fait.&lt;br /&gt;
&lt;br /&gt;
PS : voici un exemple de fichier &amp;lt;code&amp;gt;excludes&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;# excludes pour le backup sur zowie&lt;br /&gt;
jice/tmp*&lt;br /&gt;
jice/multimedia/video/*&lt;br /&gt;
jice/compil/*&lt;br /&gt;
fred/compil/*&lt;br /&gt;
*/.local/share/Trash/*&lt;br /&gt;
*/.kde/share/config/session/konqueror*&lt;br /&gt;
*/temp/*&lt;br /&gt;
*/tmp/*&lt;br /&gt;
*/cache/*&lt;br /&gt;
*/Cache/*&lt;br /&gt;
*/.thumbnails/*&lt;br /&gt;
*/.xvpics/*&lt;br /&gt;
*/.kde/tmp-*&lt;br /&gt;
*/.mcop/*&lt;br /&gt;
*/.ncftp/trace*&lt;br /&gt;
*/.nx/*&lt;br /&gt;
*.o&lt;br /&gt;
*.so&lt;br /&gt;
*.mp3&lt;br /&gt;
*.avi&lt;br /&gt;
*.rar&lt;br /&gt;
*.ace&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que ce fichier peut contenir ou bien le nom complet d&#039;un fichier, ou bien un &amp;quot;morceau&amp;quot; de nom de fichier avec des étoiles comme caractère joker. Pour plus d&#039;information, tapez dans une console : &amp;lt;code&amp;gt;man rsync&amp;lt;/code&amp;gt; et cherchez EXCLUDE PATTERNS.&lt;br /&gt;
&lt;br /&gt;
=====Côté serveur de sauvegarde=====&lt;br /&gt;
Côté serveur, j&#039;ai ce script qui fait une rotation des backups (en cron tous les  midi) :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ -f ~/backup_done ]; then&lt;br /&gt;
        KEEP=8&lt;br /&gt;
        DIR=~/backup&lt;br /&gt;
&lt;br /&gt;
        # arborescence :&lt;br /&gt;
        # ~/backup/2006-04-03&lt;br /&gt;
        # ~/backup/2006-04-04&lt;br /&gt;
        # ~/backup/2006-04-05&lt;br /&gt;
        # ~/backup/current&lt;br /&gt;
&lt;br /&gt;
        # calcule date du jour&lt;br /&gt;
        DATE=`date --date=yesterday &amp;quot;+%Y-%m-%d&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
        # crée le répertoire pour les backups du jour&lt;br /&gt;
        mkdir $DIR/$DATE&lt;br /&gt;
&lt;br /&gt;
        # supprime les vieux directories&lt;br /&gt;
        ls -d $DIR/2* | sort | head --lines=-$KEEP | xargs rm -rf&lt;br /&gt;
&lt;br /&gt;
        # copie (hard links) les données&lt;br /&gt;
        cp -al $DIR/current/* $DIR/$DATE&lt;br /&gt;
&lt;br /&gt;
        # supprime le fichier flag&lt;br /&gt;
        rm ~/backup_done&lt;br /&gt;
&lt;br /&gt;
        # on fait le rsync ensuite&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le backup a été fait (présence du fichier &amp;lt;code&amp;gt;backup_done&amp;lt;/code&amp;gt;, il effectue une rotation des backups.&amp;lt;br&amp;gt;&lt;br /&gt;
En utilisant le &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; avec les hard links, on ne copie pas réellement les fichiers, mais on crée un deuxième fichier qui pointe vers le contenu du premier (donc on peut avoir autant de hardlink qu&#039;on veut sur le même fichier, la place disque utilisée n&#039;est toujours que de la taille d&#039;un seul fichier).&amp;lt;br&amp;gt;&lt;br /&gt;
Rsync lorsqu&#039;il enverra, lors de la prochaine sauvegarde, un fichier modifié, utilisera un nom différent temporaire, avant de le renommer vers son nom normal. Ainsi, il ne va pas écraser le contenu du fichier hardlinké, car à la fin de la copie du fichier, Rsync supprime le fichier, puis renomme le fichier temporaire vers son nom normal.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A ce moment là, on a sur le serveur 2 versions du même fichier : la version courante qui vient d&#039;être sauvegardée dans &amp;lt;code&amp;gt;~/backup/current/repertoire/fichier&amp;lt;/code&amp;gt; et la version précédente qui a été copiée par le script ci-dessus dans &amp;lt;code&amp;gt;~/backup/&amp;lt;la date du dernier backup&amp;gt;/repertoire/fichier&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plus d&#039;explications&#039;&#039;&#039; :&lt;br /&gt;
* on a deux fichiers &amp;lt;code&amp;gt;current/toto&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;hier/toto&amp;lt;/code&amp;gt; qui pointent vers le même contenu. Ces 2 fichiers (ou plus) on été obtenus suite au script de rotation, par la copie avec hardlinks. On a donc :&lt;br /&gt;
&amp;lt;code&amp;gt;current/toto --&amp;gt; contenu &amp;lt;-- hier/toto&lt;br /&gt;
                               \&lt;br /&gt;
                                &#039;--------- avant-hier/toto&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
* si le fichier a été modifié, rsync va envoyer le nouveau fichier sous un nom temporaire &amp;lt;code&amp;gt;toto.tmp&amp;lt;/code&amp;gt; (par exemple). On a donc :&lt;br /&gt;
&amp;lt;code&amp;gt;current/toto --&amp;gt; contenu &amp;lt;-- hier/toto&lt;br /&gt;
                               \&lt;br /&gt;
                                &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto.tmp --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* ensuite, rsync supprime &amp;lt;code&amp;gt;current/toto&amp;lt;/code&amp;gt; On obtient, par la magie des  hardlinks :&lt;br /&gt;
&amp;lt;code&amp;gt;                 contenu &amp;lt;-- hier/toto&lt;br /&gt;
                          \&lt;br /&gt;
                           &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto.tmp --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* enfin, &amp;lt;code&amp;gt;toto.tmp&amp;lt;/code&amp;gt; est renommé en &amp;lt;code&amp;gt;toto&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;code&amp;gt;                 contenu &amp;lt;-- hier/toto&lt;br /&gt;
                          \&lt;br /&gt;
                           &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* on obtient bien 2 versions différentes, celle d&#039;hier et d&#039;avant-hier (le fichier n&#039;avait alors pas changé), et celle d&#039;aujourd&#039;hui.&lt;br /&gt;
&lt;br /&gt;
Ainsi j&#039;ai toujours les backup des 8 (réglable par la variable &amp;lt;code&amp;gt;KEEP&amp;lt;/code&amp;gt; ci-dessus) derniers jours disponible. Je peux retrouver les dernières versions d&#039;un fichier en cas de problème.&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
Si l&#039;on veut effectuer une sauvegarde système, il est nécessaire de prendre en compte les points suivants:&lt;br /&gt;
* faire une sauvegarde en gardant les uid/gid&lt;br /&gt;
* ne pas sauvegarder les répertoires inutiles (/tmp, /dev, /proc, /sys, le contenu des points de montages hors disques locaux (nfs, cdrom,...)) On peut également ne pas sauvegarder le contenu de /var/tmp, /var/cache, /var/lock, /var/run, /var/spool. Attention, il est important de garder la hiérarchie de ces répertoires!&lt;br /&gt;
* garder la table des partitions, avec le label des partitions si il y en a un (commande &#039;e2label&#039;)&lt;br /&gt;
* sauvegarder les informations de lvm (l&#039;idéal étant de pouvoir utiliser lvmcfgbackup et lvmcfgrestore. Sinon, ce n&#039;est pas la taille de chaque volume qu&#039;il faut sauvegarder, mais le nombre de Logical Extends. En spécifiant une taille, celle-ci sera arrondie pour avoir un nombre de LE fixe. Ce nombre ne sera pas forcément identique que celui utilisé lors de la création, et empêchera donc de restaurer le système de manière identique).&lt;br /&gt;
* arrêter autant que faire se peut les services qui tournent.&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;br /&gt;
&lt;br /&gt;
== Les outils graphiques / semi-graphiques ==&lt;br /&gt;
* mondorescue&lt;br /&gt;
* kbackup&lt;br /&gt;
* armanda backup&lt;br /&gt;
* bacula&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13737</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13737"/>
		<updated>2006-09-19T18:37:32Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : mise en page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [[Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
&lt;br /&gt;
==== Sauvegarde avec tar ====&lt;br /&gt;
&lt;br /&gt;
===== Présentation des options =====&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
* -N date : permet de ne sauvegarder que les fichiers postérieurs à la date définie. La date doit être fournie sous la forme &#039;&#039;AAAA-MM-JJ HH:MM:SS&amp;quot;. On obtient se format grâce à la commande &amp;lt;code&amp;gt;date &amp;quot;+%Y:%m:%d %H:%M:%S&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* --totals : affiche le nombre d&#039;octets écrits lors de la sauvegarde&lt;br /&gt;
* -g fichier : permet d&#039;effectuer des sauvegardes incrémentales, en se basant sur un fichier de status. Ce fichier est soit utilisé (sauvegarde incrémentale), soit créé (sauvegarde full). Attention, cette option n&#039;est valable que pour les versions GNU!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;toujours&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et périls (kernel panic).&lt;br /&gt;
&lt;br /&gt;
===== Exemple de sauvegarde de données =====&lt;br /&gt;
Voici un petit script permettant de mettre en place une sauvegarde totale et/ou différentielle de données :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Initialisation des variables&lt;br /&gt;
DATE=$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&lt;br /&gt;
TYPE=&amp;quot;FULL&amp;quot;&lt;br /&gt;
REP=/backup&lt;br /&gt;
FICHIER_EXCLUDE=/etc/save.exclude&lt;br /&gt;
FICHIER_INCLUDE=/etc/save.include&lt;br /&gt;
FICHIER_STATUS=/etc/save.state&lt;br /&gt;
COMPRESSION=9&lt;br /&gt;
&lt;br /&gt;
# Si le script est appelé avec l&#039;option &amp;quot;-d&amp;quot;, alors on fait une sauvegarde différentielle&lt;br /&gt;
if [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
     TYPE=&amp;quot;INCR&amp;quot;&lt;br /&gt;
     tar cP --atime-preserve -g $FICHIER_STATUS --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; ${REP}/save-INCR-${date}.tgz&lt;br /&gt;
# Sinon, on fait une sauvegarde totale&lt;br /&gt;
else&lt;br /&gt;
     rm -f $FICHIER_STATUS&lt;br /&gt;
     tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; ${REP}/save-FULL-${date}.tgz&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Exemple de sauvegarde système =====&lt;br /&gt;
Le script suivant permet de faire une sauvegarde système, plus complet, a pour but de faire une sauvegarde système sur un serveur NFS. Il utilise un fichier de configuration. Le prérequis est de renseigner le fichier /etc/save.conf et d&#039;utiliser udev. &lt;br /&gt;
&lt;br /&gt;
Le fichier save.conf doit être de la forme :&lt;br /&gt;
&amp;lt;code&amp;gt;EXCLUDE=&amp;quot;/repertoire1 /repertoire2&amp;quot;&lt;br /&gt;
# Le reste est optionnel&lt;br /&gt;
&lt;br /&gt;
#COMPRESSION=1&lt;br /&gt;
#SERVEUR=&amp;quot;10.0.0.2:/path&lt;br /&gt;
#MONTAGE=&amp;quot;/mnt/nfs&amp;quot;&lt;br /&gt;
#INCLUDE=&amp;quot;/toto&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et le script :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
PID=$$&lt;br /&gt;
&lt;br /&gt;
# On donne une priorité faible au processus pour ne pas dégrader les performances des autres applications&lt;br /&gt;
renice +19 $PID&lt;br /&gt;
. /etc/save.conf&lt;br /&gt;
&lt;br /&gt;
MONTAGE=${MONTAGE:=&amp;quot;/tmp/save.$PID&amp;quot;}&lt;br /&gt;
SERVEUR=${SERVEUR:=&amp;quot;10.0.0.1:/backup&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
COMPRESSION=${COMPRESSION:=9}&lt;br /&gt;
NOM=$(hostname)&lt;br /&gt;
CONFIGURATION=${MONTAGE}/${NOM}.conf&lt;br /&gt;
DATE=&amp;quot;$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&amp;quot;&lt;br /&gt;
FICHIER_EXCLUDE=/tmp/save.$PID.exlude&lt;br /&gt;
FICHIER_INCLUDE=/tmp/save.$PID.include&lt;br /&gt;
FICHIER_STATUS=/etc/save.state&lt;br /&gt;
LVMVERSION=1&lt;br /&gt;
&lt;br /&gt;
affiche_action() {&lt;br /&gt;
	echo -e &amp;quot;$1 ........... \c&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
affiche_resultat() {&lt;br /&gt;
	if [ $1 = 0 ] ; then&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 2&lt;br /&gt;
		echo -e &amp;quot;OK\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 1&lt;br /&gt;
		echo -e &amp;quot;KO\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 1&lt;br /&gt;
	fi	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quit() {&lt;br /&gt;
	affiche_action &amp;quot;Nettoyage en cours&amp;quot;&lt;br /&gt;
	rm -f $FICHIER_EXCLUDE&lt;br /&gt;
	rm -f $FICHIER_INCLUDE&lt;br /&gt;
	umount $MONTAGE&lt;br /&gt;
	rmdir $MONTAGE&lt;br /&gt;
	affiche_resultat $?&lt;br /&gt;
	exit $1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Montage du partage nfs&lt;br /&gt;
affiche_action &amp;quot;Montage du partage NFS vers $SERVER&amp;quot;&lt;br /&gt;
mkdir $MONTAGE&lt;br /&gt;
mount -t nfs $SERVER $MONTAGE&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des donnees de partitionnement&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde du partitionnement&amp;quot;&lt;br /&gt;
echo &amp;quot;[disks]&amp;quot; &amp;gt; $CONFIGURATION&lt;br /&gt;
/sbin/fdisk -l | tr &#039;*&#039; &#039; &#039; | awk &#039;/^\/dev/ {print $1,$2,$3,$5}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[bootdisk]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
fdisk -l | awk &#039;/^\/dev\/.*\*/ {print $1}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde du lvm : PV, VG, LV et version du LVM&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des groupes de volumes du LVM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[LVM-VG]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
liste=$(pvscan | grep -o &#039;PV.*/dev/.*VG.*&#039; | tr -d &#039;&amp;quot;&#039; | sed &#039;s,^.*PV \(/dev/[^ ]*\).* VG \([^ ]*\).*,\1 \2,&#039;)&lt;br /&gt;
liste2=$(echo $liste | grep -o &#039;/dev/[^ ]*&#039;)&lt;br /&gt;
for element in $liste2 ; do&lt;br /&gt;
        LVM=1&lt;br /&gt;
        $REP/bin/lvm.static pvscan 2&amp;gt;/dev/null | grep $element 2&amp;gt;/dev/null | grep -q lvm2&lt;br /&gt;
        [ $? = 0 ] &amp;amp;&amp;amp; LVM=2&lt;br /&gt;
        echo $(echo $liste | grep -o &amp;quot;$element [^ ]*&amp;quot;) $LVM &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des volumes logiques du LVM&amp;quot;&lt;br /&gt;
echo &amp;quot;[LVM-LV]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for volume in $(lvscan | grep -o &#039;&amp;quot;/dev[^&amp;quot;]*&amp;quot;&#039; | tr -d &#039;&amp;quot;&#039;) ; do&lt;br /&gt;
	extend=$(lvdisplay $volume | awk &#039;/Allocated LE/ {print $3}&#039;)&lt;br /&gt;
	echo &amp;quot;$volume $extend&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des labels&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des labels des partitions&amp;quot;&lt;br /&gt;
echo &amp;quot;[labels]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for partition in $(/sbin/fdisk -l | grep -o &#039;^/dev/[^ ]*&#039;) ; do&lt;br /&gt;
	label=$(/sbin/e2label $partition 2&amp;gt;/dev/null)&lt;br /&gt;
	echo &amp;quot;$partition=$label&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des points de montage&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des points de montage&amp;quot;&lt;br /&gt;
echo &amp;quot;[montage]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
mount | awk &#039;/ext[23]/ {print $1,$3}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de la hierarchie exclue&lt;br /&gt;
affiche_action &amp;quot;Creation de la liste des repertoires exclus a recontruire&amp;quot;&lt;br /&gt;
echo &amp;quot;[hierarchie]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
rm -f $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# On exclu les partages NFS et les montages loop&lt;br /&gt;
mount | awk &#039;/type nfs/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
mount | awk &#039;/loop=/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Rajout des répertoires à exclure par défaut&lt;br /&gt;
[ -d /media ] &amp;amp;&amp;amp; EXCLUDE=&amp;quot;/media $EXCLUDE&amp;quot;&lt;br /&gt;
EXCLUDE=&amp;quot;/mnt /sys /dev /tmp /proc /var/run /var/log /var/lock /var/spool /var/tmp /var/cache $EXCLUDE&amp;quot;&lt;br /&gt;
for rep in $EXCLUDE ; do&lt;br /&gt;
	case $rep in&lt;br /&gt;
		/mnt)&lt;br /&gt;
			echo &amp;quot;/mnt&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /mnt | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /mnt/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/mnt/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/media)&lt;br /&gt;
			echo &amp;quot;/media&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			[ -d /media ] &amp;amp;&amp;amp; for rep in $(ls -F /media | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /media/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/media/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/dev) echo &amp;quot;/dev&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/tmp) echo &amp;quot;/tmp&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/proc) echo &amp;quot;/proc&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sys) echo &amp;quot;/sys&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/var*)&lt;br /&gt;
			echo &amp;quot;/var&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION &lt;br /&gt;
			ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/usr/src) echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/home)&lt;br /&gt;
			echo &amp;quot;/home&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /home | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /home/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/home/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/usr*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/bin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sbin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/lib*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/boot*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		*)	[ -d $rep ] &amp;amp;&amp;amp; echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
	esac&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
echo &#039;*/lost+found&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de grub&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de grub&amp;quot;&lt;br /&gt;
echo &amp;quot;[GRUB]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
cat /boot/grub/menu.lst | grep &#039;^[^#].*root (hd&#039; | head -n 1 | grep -o &#039;root.*&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Si l&#039;option -d est passee en parametre, on fait une sauvegarde differentielle&lt;br /&gt;
INCLUDE=${INCLUDE:=/}&lt;br /&gt;
rm -f $FICHIER_INCLUDE&lt;br /&gt;
for rep in $INCLUDE ; do&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_INCLUDE&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ $# -ge 1 ] &amp;amp;&amp;amp; [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-INCR-${DATE}&amp;quot;&lt;br /&gt;
	tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-INCR-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
else&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-FULL-${DATE}&amp;quot;&lt;br /&gt;
        rm -f $FICHIER_STATUS&lt;br /&gt;
	tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FIC_INCLUDE -X $FIC_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-FULL-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de MAKEDEV qui se trouve dans /dev&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de MAKEDEV&amp;quot;&lt;br /&gt;
[ -f /dev/MAKEDEV ] &amp;amp;&amp;amp; cp /dev/MAKEDEV $MONTAGE/&lt;br /&gt;
affiche_resultat 0&lt;br /&gt;
&lt;br /&gt;
quit 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Restauration avec tar ====&lt;br /&gt;
===== Présentation de la commande =====&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric-owner : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
* -g fichier: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de commande pour restaurer une archive :&lt;br /&gt;
&amp;lt;code&amp;gt;tar zxvf --atime-preserve --preserve --same-owner --numeric-owner /backup/archive.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13736</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13736"/>
		<updated>2006-09-19T18:18:47Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : doc modifiée pour la version GNU de tar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [[Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
* -N date : permet de ne sauvegarder que les fichiers postérieurs à la date définie. La date doit être fournie sous la forme &#039;&#039;AAAA-MM-JJ HH:MM:SS&amp;quot;. On obtient se format grâce à la commande &amp;lt;code&amp;gt;date &amp;quot;+%Y:%m:%d %H:%M:%S&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* --totals : affiche le nombre d&#039;octets écrits lors de la sauvegarde&lt;br /&gt;
* -g fichier : permet d&#039;effectuer des sauvegardes incrémentales, en se basant sur un fichier de status. Ce fichier est soit utilisé (sauvegarde incrémentale), soit créé (sauvegarde full). Attention, cette option n&#039;est valable que pour les versions GNU!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;toujours&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et périls (kernel panic).&lt;br /&gt;
&lt;br /&gt;
Voici un petit script permettant de mettre en place une sauvegarde totale et/ou différentielle de données :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Initialisation des variables&lt;br /&gt;
DATE=$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&lt;br /&gt;
TYPE=&amp;quot;FULL&amp;quot;&lt;br /&gt;
REP=/backup&lt;br /&gt;
FICHIER_EXCLUDE=/etc/save.exclude&lt;br /&gt;
FICHIER_INCLUDE=/etc/save.include&lt;br /&gt;
FICHIER_STATUS=/etc/save.state&lt;br /&gt;
COMPRESSION=9&lt;br /&gt;
&lt;br /&gt;
# Si le script est appelé avec l&#039;option &amp;quot;-d&amp;quot;, alors on fait une sauvegarde différentielle&lt;br /&gt;
if [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
     TYPE=&amp;quot;INCR&amp;quot;&lt;br /&gt;
     tar cP --atime-preserve -g $FICHIER_STATUS --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; ${REP}/save-INCR-${date}.tgz&lt;br /&gt;
# Sinon, on fait une sauvegarde totale&lt;br /&gt;
else&lt;br /&gt;
     rm -f $FICHIER_STATUS&lt;br /&gt;
     tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; ${REP}/save-FULL-${date}.tgz&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le script suivant permet de faire une sauvegarde système, plus complet, a pour but de faire une sauvegarde système sur un serveur NFS. Il utilise un fichier de configuration. Le prérequis est de renseigner le fichier /etc/save.conf et d&#039;utiliser udev. &lt;br /&gt;
&lt;br /&gt;
Le fichier save.conf doit être de la forme :&lt;br /&gt;
&amp;lt;code&amp;gt;EXCLUDE=&amp;quot;/repertoire1 /repertoire2&amp;quot;&lt;br /&gt;
# Le reste est optionnel&lt;br /&gt;
&lt;br /&gt;
#COMPRESSION=1&lt;br /&gt;
#SERVEUR=&amp;quot;10.0.0.2:/path&lt;br /&gt;
#MONTAGE=&amp;quot;/mnt/nfs&amp;quot;&lt;br /&gt;
#INCLUDE=&amp;quot;/toto&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et le script :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
PID=$$&lt;br /&gt;
&lt;br /&gt;
# On donne une priorité faible au processus pour ne pas dégrader les performances des autres applications&lt;br /&gt;
renice +19 $PID&lt;br /&gt;
. /etc/save.conf&lt;br /&gt;
&lt;br /&gt;
MONTAGE=${MONTAGE:=&amp;quot;/tmp/save.$PID&amp;quot;}&lt;br /&gt;
SERVEUR=${SERVEUR:=&amp;quot;10.0.0.1:/backup&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
COMPRESSION=${COMPRESSION:=9}&lt;br /&gt;
NOM=$(hostname)&lt;br /&gt;
CONFIGURATION=${MONTAGE}/${NOM}.conf&lt;br /&gt;
DATE=&amp;quot;$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&amp;quot;&lt;br /&gt;
FICHIER_EXCLUDE=/tmp/save.$PID.exlude&lt;br /&gt;
FICHIER_INCLUDE=/tmp/save.$PID.include&lt;br /&gt;
FICHIER_STATUS=/etc/save.state&lt;br /&gt;
LVMVERSION=1&lt;br /&gt;
&lt;br /&gt;
affiche_action() {&lt;br /&gt;
	echo -e &amp;quot;$1 ........... \c&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
affiche_resultat() {&lt;br /&gt;
	if [ $1 = 0 ] ; then&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 2&lt;br /&gt;
		echo -e &amp;quot;OK\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 1&lt;br /&gt;
		echo -e &amp;quot;KO\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 1&lt;br /&gt;
	fi	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quit() {&lt;br /&gt;
	affiche_action &amp;quot;Nettoyage en cours&amp;quot;&lt;br /&gt;
	rm -f $FICHIER_EXCLUDE&lt;br /&gt;
	rm -f $FICHIER_INCLUDE&lt;br /&gt;
	umount $MONTAGE&lt;br /&gt;
	rmdir $MONTAGE&lt;br /&gt;
	affiche_resultat $?&lt;br /&gt;
	exit $1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Montage du partage nfs&lt;br /&gt;
affiche_action &amp;quot;Montage du partage NFS vers $SERVER&amp;quot;&lt;br /&gt;
mkdir $MONTAGE&lt;br /&gt;
mount -t nfs $SERVER $MONTAGE&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des donnees de partitionnement&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde du partitionnement&amp;quot;&lt;br /&gt;
echo &amp;quot;[disks]&amp;quot; &amp;gt; $CONFIGURATION&lt;br /&gt;
/sbin/fdisk -l | tr &#039;*&#039; &#039; &#039; | awk &#039;/^\/dev/ {print $1,$2,$3,$5}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[bootdisk]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
fdisk -l | awk &#039;/^\/dev\/.*\*/ {print $1}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde du lvm : PV, VG, LV et version du LVM&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des groupes de volumes du LVM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[LVM-VG]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
liste=$(pvscan | grep -o &#039;PV.*/dev/.*VG.*&#039; | tr -d &#039;&amp;quot;&#039; | sed &#039;s,^.*PV \(/dev/[^ ]*\).* VG \([^ ]*\).*,\1 \2,&#039;)&lt;br /&gt;
liste2=$(echo $liste | grep -o &#039;/dev/[^ ]*&#039;)&lt;br /&gt;
for element in $liste2 ; do&lt;br /&gt;
        LVM=1&lt;br /&gt;
        $REP/bin/lvm.static pvscan 2&amp;gt;/dev/null | grep $element 2&amp;gt;/dev/null | grep -q lvm2&lt;br /&gt;
        [ $? = 0 ] &amp;amp;&amp;amp; LVM=2&lt;br /&gt;
        echo $(echo $liste | grep -o &amp;quot;$element [^ ]*&amp;quot;) $LVM &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des volumes logiques du LVM&amp;quot;&lt;br /&gt;
echo &amp;quot;[LVM-LV]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for volume in $(lvscan | grep -o &#039;&amp;quot;/dev[^&amp;quot;]*&amp;quot;&#039; | tr -d &#039;&amp;quot;&#039;) ; do&lt;br /&gt;
	extend=$(lvdisplay $volume | awk &#039;/Allocated LE/ {print $3}&#039;)&lt;br /&gt;
	echo &amp;quot;$volume $extend&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des labels&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des labels des partitions&amp;quot;&lt;br /&gt;
echo &amp;quot;[labels]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for partition in $(/sbin/fdisk -l | grep -o &#039;^/dev/[^ ]*&#039;) ; do&lt;br /&gt;
	label=$(/sbin/e2label $partition 2&amp;gt;/dev/null)&lt;br /&gt;
	echo &amp;quot;$partition=$label&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des points de montage&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des points de montage&amp;quot;&lt;br /&gt;
echo &amp;quot;[montage]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
mount | awk &#039;/ext[23]/ {print $1,$3}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de la hierarchie exclue&lt;br /&gt;
affiche_action &amp;quot;Creation de la liste des repertoires exclus a recontruire&amp;quot;&lt;br /&gt;
echo &amp;quot;[hierarchie]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
rm -f $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# On exclu les partages NFS et les montages loop&lt;br /&gt;
mount | awk &#039;/type nfs/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
mount | awk &#039;/loop=/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Rajout des répertoires à exclure par défaut&lt;br /&gt;
[ -d /media ] &amp;amp;&amp;amp; EXCLUDE=&amp;quot;/media $EXCLUDE&amp;quot;&lt;br /&gt;
EXCLUDE=&amp;quot;/mnt /sys /dev /tmp /proc /var/run /var/log /var/lock /var/spool /var/tmp /var/cache $EXCLUDE&amp;quot;&lt;br /&gt;
for rep in $EXCLUDE ; do&lt;br /&gt;
	case $rep in&lt;br /&gt;
		/mnt)&lt;br /&gt;
			echo &amp;quot;/mnt&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /mnt | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /mnt/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/mnt/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/media)&lt;br /&gt;
			echo &amp;quot;/media&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			[ -d /media ] &amp;amp;&amp;amp; for rep in $(ls -F /media | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /media/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/media/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/dev) echo &amp;quot;/dev&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/tmp) echo &amp;quot;/tmp&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/proc) echo &amp;quot;/proc&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sys) echo &amp;quot;/sys&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/var*)&lt;br /&gt;
			echo &amp;quot;/var&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION &lt;br /&gt;
			ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/usr/src) echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/home)&lt;br /&gt;
			echo &amp;quot;/home&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /home | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /home/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/home/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/usr*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/bin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sbin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/lib*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/boot*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		*)	[ -d $rep ] &amp;amp;&amp;amp; echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
	esac&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
echo &#039;*/lost+found&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de grub&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de grub&amp;quot;&lt;br /&gt;
echo &amp;quot;[GRUB]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
cat /boot/grub/menu.lst | grep &#039;^[^#].*root (hd&#039; | head -n 1 | grep -o &#039;root.*&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Si l&#039;option -d est passee en parametre, on fait une sauvegarde differentielle&lt;br /&gt;
INCLUDE=${INCLUDE:=/}&lt;br /&gt;
rm -f $FICHIER_INCLUDE&lt;br /&gt;
for rep in $INCLUDE ; do&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_INCLUDE&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ $# -ge 1 ] &amp;amp;&amp;amp; [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-INCR-${DATE}&amp;quot;&lt;br /&gt;
	tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-INCR-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
else&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-FULL-${DATE}&amp;quot;&lt;br /&gt;
        rm -f $FICHIER_STATUS&lt;br /&gt;
	tar cP -g $FICHIER_STATUS --atime-preserve --preserve --same-owner --totals -T $FIC_INCLUDE -X $FIC_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-FULL-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de MAKEDEV qui se trouve dans /dev&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de MAKEDEV&amp;quot;&lt;br /&gt;
[ -f /dev/MAKEDEV ] &amp;amp;&amp;amp; cp /dev/MAKEDEV $MONTAGE/&lt;br /&gt;
affiche_resultat 0&lt;br /&gt;
&lt;br /&gt;
quit 0&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric-owner : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
* -g fichier: &lt;br /&gt;
&lt;br /&gt;
Voici un exemple de commande pour restaurer une archive :&lt;br /&gt;
&amp;lt;code&amp;gt;tar zxvf --atime-preserve --preserve --same-owner --numeric /backup/archive.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13735</id>
		<title>NFS</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=NFS&amp;diff=13735"/>
		<updated>2006-09-19T16:30:20Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : Rajout partie sécurisation à travers SSH&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Partager ses fichiers]]&lt;br /&gt;
= Installation d&#039;un serveur NFS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Installation d&#039;un serveur NFS&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Guillaume Pierronnet&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;NFS, ou le partage des ressources selon Unix.&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
NFS signifie Network File System. C&#039;est, comme son nom l&#039;indique, un système de fichiers en réseau qui permet de partager ses données principalement entre systèmes UNIX. À la différence de SAMBA, NFS gère les permissions sur les fichiers et on peut donc l&#039;utiliser de manière totalement transparente dans son arborescence Linux.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION !&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute application réseau, NFS ouvre des trous dans la sécurité du système. Je vous invite donc à consulter les liens à la fin de cet article pour des précisions sur la sécurité ([http://www.linuxselfhelp.com/HOWTO/NFS-HOWTO/security.html celui-ci], en anglais, indique quelques règles à suivre, en parallèle des démarches indiquées [http://people.via.ecp.fr/~alexis/formation-linux/nfs.html dans ce guide nfs pour Debian] ou ci-dessous). &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Les softs ==&lt;br /&gt;
&lt;br /&gt;
=== Les modules du noyau ===&lt;br /&gt;
&lt;br /&gt;
Dans la configuration du noyau, on va dans la section &amp;quot;&#039;&#039;&#039;File systems ---&amp;gt; Network File Systems&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le client:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS file system support et Provide NFSv3 client support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFS_FS=y ou m&lt;br /&gt;
   CONFIG_NFS_V3=y&lt;br /&gt;
* &amp;lt;u&amp;gt;Pour le serveur:&amp;lt;/u&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;NFS server support et Provide NFSv3 server support&amp;lt;/tt&amp;gt;&lt;br /&gt;
   CONFIG_NFSD=y ou m&lt;br /&gt;
   CONFIG_NFSD_V3=y&lt;br /&gt;
&lt;br /&gt;
À partir du noyau 2.2.18, les modules supportent entièrement la version 3 du protocole ainsi que différentes corrections de bug. &amp;lt;br /&amp;gt;Il serait temps d&#039;upgrader si tu ne l&#039;as pas déjà fait! (profites-en pour passer au 2.4, ce sera réglé :)&lt;br /&gt;
&lt;br /&gt;
=== Les packages ===&lt;br /&gt;
&lt;br /&gt;
Les packages (sur ma Debian) sont :&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-common&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;nfs-user-server&amp;lt;/tt&amp;gt; pour le serveur.&lt;br /&gt;
&lt;br /&gt;
Tu peux toujours récupérer les sources qui se trouvent sur http://nfs.sourceforge.net/.&lt;br /&gt;
&lt;br /&gt;
On va aussi installer le &#039;&#039;wrapper&#039;&#039; TCP pour un minimum de sécurité. Toujours sur ma Debian, le paquet s&#039;appelle &amp;lt;tt&amp;gt;tcpd&amp;lt;/tt&amp;gt;. Les sources se trouvent [ftp://ftp.porcupine.org/pub/security/index.html ici].&lt;br /&gt;
&lt;br /&gt;
== Le serveur ==&lt;br /&gt;
&lt;br /&gt;
Les 3 fichiers de configuration principaux sont &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/hosts.allow&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== /etc/exports ===&lt;br /&gt;
&lt;br /&gt;
Le fichier &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt; est très simple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;répertoire machine1(option11,option12) machine2(option21,option22)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
par exemple :&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;code&amp;gt;/home 192.168.0.10(rw) 192.168.0.25(ro)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
signifie que l&#039;on autorisera la machine &#039;&#039;192.168.0.10&#039;&#039; à accéder à notre répertoire &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; en lecture et écriture (&amp;lt;tt&amp;gt;rw&amp;lt;/tt&amp;gt;) ainsi que la machine &#039;&#039;192.168.0.25&#039;&#039; mais uniquement en lecture (&amp;lt;tt&amp;gt;ro&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;répertoire&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; le répertoire du serveur à partager.&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;machine&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; :&amp;lt;br /&amp;gt; Une liste de machines séparée par des virgules et autorisées à monter ce répertoire (utilisez des adresses IP plutôt que des noms à cause des problèmes de &amp;quot;&#039;&#039;dns spoofing&#039;&#039;&amp;quot;).&amp;lt;br /&amp;gt; &lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;lt;u&amp;gt;options&amp;lt;/u&amp;gt;&amp;lt;/tt&amp;gt; : &lt;br /&gt;
** &#039;&#039;&#039;ro&#039;&#039;&#039; : &amp;lt;br /&amp;gt;C&#039;est la valeur par défaut, lecture seule.&lt;br /&gt;
** &#039;&#039;&#039;rw&#039;&#039;&#039; : &amp;lt;br /&amp;gt;La machine à un accès en lecture/écriture au répertoire.&lt;br /&gt;
** &#039;&#039;&#039;no_root_squash&#039;&#039;&#039; : &amp;lt;br /&amp;gt;Les accès par l&#039;utilisateur root sur le serveur se font sous l&#039;identité root, au contraire de nobody (par défaut)&amp;lt;br /&amp;gt; À UTILISER AVEC PRÉCAUTION&lt;br /&gt;
** &#039;&#039;&#039;sync&#039;&#039;&#039; : &amp;lt;u&amp;gt;uniquement NFS v2&amp;lt;/u&amp;gt;&amp;lt;br /&amp;gt;Ne diffère pas les écritures physiques au volume, augmente la fiabilité en cas de mauvais démontage. La version 3 dispose d&#039;un mécanisme de &#039;&#039;commit-rollback&#039;&#039; donc cette option n&#039;est pas utile.&lt;br /&gt;
&lt;br /&gt;
Un point important, pour un bon fonctionnement : tu dois avoir les mêmes numéros de groupes et d&#039;utilisateurs sur les deux machines. &amp;lt;br /&amp;gt;Des systèmes permettent de gérer çà, NIS (assez ancien) ou LDAP (plus récent). Avec peu d&#039;utilisateurs, tu peux tout simplement éditer &amp;lt;tt&amp;gt;/etc/group&amp;lt;/tt&amp;gt; et &amp;lt;tt&amp;gt;/etc/passwd&amp;lt;/tt&amp;gt; pour synchroniser ces numéros.&lt;br /&gt;
&lt;br /&gt;
Il n&#039;est pas recommandé d&#039;exporter un système DOS ou VFAT à cause de leurs absences de gestion multi-utilisateurs ; ils ne sont pas fait pour être partagés avec NFS. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.deny ===&lt;br /&gt;
&lt;br /&gt;
On va interdire toutes les machines qui ne sont pas autorisées explicitement dans le &amp;lt;tt&amp;gt;/etc/hosts.allow&amp;lt;/tt&amp;gt;. &amp;lt;br /&amp;gt;Un bon vieux &amp;quot;&amp;lt;tt&amp;gt;ALL: ALL&amp;lt;/tt&amp;gt;&amp;quot; interdira l&#039;accès à tous les services à partir de toutes les machines. On peut cependant être plus précis en écrivant :&lt;br /&gt;
&lt;br /&gt;
 portmap:ALL&lt;br /&gt;
 lockd:ALL&lt;br /&gt;
 mountd:ALL&lt;br /&gt;
 rquotad:ALL&lt;br /&gt;
 statd:ALL&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== /etc/hosts.allow ===&lt;br /&gt;
&lt;br /&gt;
Dans le même esprit que pour le &amp;lt;tt&amp;gt;/etc/hosts.deny&amp;lt;/tt&amp;gt;, ce fichier a l&#039;architecture suivante :&lt;br /&gt;
&lt;br /&gt;
   [service]: [IP de la machine client]&lt;br /&gt;
&lt;br /&gt;
Donc pour autoriser 192.168.1.34 à se connecter à un partage NFS, on écrira :&lt;br /&gt;
&lt;br /&gt;
   portmap:192.168.1.34&lt;br /&gt;
   lockd:192.168.1.34&lt;br /&gt;
   mountd:192.168.1.34&lt;br /&gt;
   rquotad:192.168.1.34&lt;br /&gt;
   statd:192.168.1.34&lt;br /&gt;
&lt;br /&gt;
On va pouvoir lancer les services ; sur ma Debian, je lance :&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/init.d/nfs-server start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour Slackware, ce serait&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# /etc/rc.d/rc.nfsd start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La commande &amp;lt;tt&amp;gt;rpcinfo -p&amp;lt;/tt&amp;gt; permet de vérifier que les services fonctionnent. Elle devrait produire un résultat dans cet esprit :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# rpcinfo -p&lt;br /&gt;
  program vers proto   port&lt;br /&gt;
   100000    2   tcp    111  portmapper&lt;br /&gt;
   100000    2   udp    111  portmapper&lt;br /&gt;
   100024    1   udp    737  status&lt;br /&gt;
   100024    1   tcp    739  status&lt;br /&gt;
   100011    1   udp    851  rquotad&lt;br /&gt;
   100011    2   udp    851  rquotad&lt;br /&gt;
   100003    2   udp   2049  nfs&lt;br /&gt;
   100003    2   tcp   2049  nfs&lt;br /&gt;
   100005    1   udp    872  mountd&lt;br /&gt;
   100005    2   udp    872  mountd&lt;br /&gt;
   100005    1   tcp    875  mountd&lt;br /&gt;
   100005    2   tcp    875  mountd&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour recharger les services NFS (par exemple après une modification du fichier de config) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# killall -HUP nfsd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
le serveur est prêt ! &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Le client ==&lt;br /&gt;
&lt;br /&gt;
Pour utiliser NFS v3, il faut au minimum la version 2.10m du programme &amp;lt;tt&amp;gt;mount&amp;lt;/tt&amp;gt;. Pour voir sa version, taper :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount -V&lt;br /&gt;
 mount: mount-2.11h&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On va maintenant pouvoir monter notre partage!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cacahuete:~# mount mon.serveur.nfs:/home /mnt/home&lt;br /&gt;
 cacahuete:~#&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En principe tout devrait bien se dérouler.&lt;br /&gt;
&lt;br /&gt;
Pour monter ce partage définitivement à chaque démarrage de la machine, éditons notre &amp;lt;tt&amp;gt;/etc/fstab&amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 master.foo.com:/home  /mnt nfs     rw      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sécuriser le NFS ==&lt;br /&gt;
&lt;br /&gt;
Les données transitent en clair sur le réseau, néanmoins il est possible de crypter les échange grâce au &#039;&#039;port forwarding&#039;&#039; de ssh.&lt;br /&gt;
La mise en place de la cryptographie se fait en deux parties : une partie sur le serveur, une partie sur le client.&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de connaître et/ou de définir le port tcp utilisé par mountd. Un petit &amp;lt;code&amp;gt;rpcinfo -p&amp;lt;/code&amp;gt; permettra de savoir quel port est utilisé par mountd. On peut définir celui-ci via l&#039;option &#039;&#039;-d&#039;&#039; lors du lancement du service. Dans notre exemple, il s&#039;agit du port 875.&lt;br /&gt;
Il faut également rajouter l&#039;option &#039;&#039;insecure&#039;&#039; pour les machines/réseaux concernés dans &amp;lt;tt&amp;gt;/etc/exports&amp;lt;/tt&amp;gt;. Cette option permet seulement de pouvoir atteindre le serveur via un port &amp;gt; 1024 (ce que nous allons faire).&lt;br /&gt;
&lt;br /&gt;
=== Configuration du client === &lt;br /&gt;
&lt;br /&gt;
Nous avons besoin de deux ports libres, par exemple 38000 et 38001 pour créer un tunnel sécurisé entre le client et le serveur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ssh -f -N -L38000:serveur:2049 -L38001:serveur:875 -l root serveur&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L&#039;utilisation de l&#039;utilisateur root est nécessaire car on va travailler avec un port &amp;lt; 1024. La mise en place d&#039;une authentification par clé peut être dans ce cas très intéressante.&lt;br /&gt;
Avec cette commande nous venons de créer un tunnel chiffré entre le port 38000 (resp. 38001) de notre client et le 2049 (resp. 875) du serveur.&lt;br /&gt;
Il ne reste plus qu&#039;à monter le partage! Le fait d&#039;utiliser un tunnel ssh implique que nous allons utiliser exclusivement une connection tcp.&lt;br /&gt;
Pour monter le partage :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mount -t nfs -o rw,port=38000,mountport=38001 localhost:/repertoire /mnt/nfs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de monter serveur:/repertoire dans /mnt/nfs. Il faut bien utiliser localhost:/repertoire pour monter le partage. C&#039;est justement cela qui va permettre d&#039;utiliser la connexion sécurisée.&lt;br /&gt;
&lt;br /&gt;
On peut également rajouter cette ligne dans le /etc/fstab :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# device       mountpoint  fs-type options dump fsckorder&lt;br /&gt;
 ...&lt;br /&gt;
 localhost:/home  /mnt nfs     rw,port=38000,mountport=38001      0    0&lt;br /&gt;
 ...&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Liens ==&lt;br /&gt;
&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/LDAP-HOWTO.html LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Guillaume Pierronnet le 22/10/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Copyright =&lt;br /&gt;
Copyright &amp;amp;copy; 22/10/2001, Guillaume Pierronnet&lt;br /&gt;
{{CC-BY-NC-SA}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Autres ressources=&lt;br /&gt;
* Cet article est principalement basé sur le [http://www.linuxdoc.org/HOWTO/NFS-HOWTO/index.html NFS howto]&lt;br /&gt;
* Les sources des logiciels NFS sur http://nfs.sourceforge.net/ &lt;br /&gt;
* [http://en.tldp.org/HOWTO/LDAP-HOWTO/ LDAP howto]&lt;br /&gt;
* [http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html NIS howto]&lt;br /&gt;
* Va te faire peur sur [http://www.securityfocus.com/ security focus]&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13686</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13686"/>
		<updated>2006-09-09T05:26:11Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : supprimer la sauvegarde de /dev avec tar (inutile ici car udev)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [[Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
* -N date : permet de ne sauvegarder que les fichiers postérieurs à la date définie. La date doit être fournie sous la forme &#039;&#039;AAAA-MM-JJ HH:MM:SS&amp;quot;. On obtient se format grâce à la commande &amp;lt;code&amp;gt;date &amp;quot;+%Y:%m:%d %H:%M:%S&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* --totals : affiche le nombre d&#039;octets écrits lors de la sauvegarde&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;toujours&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et périls (kernel panic).&lt;br /&gt;
&lt;br /&gt;
Voici un petit script permettant de mettre en place une sauvegarde totale et/ou différentielle de données :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Initialisation des variables&lt;br /&gt;
DATE=$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&lt;br /&gt;
TYPE=&amp;quot;FULL&amp;quot;&lt;br /&gt;
REP=/backup&lt;br /&gt;
FICHIER_EXCLUDE=/etc/save.exclude&lt;br /&gt;
FICHIER_INCLUDE=/etc/save.include&lt;br /&gt;
&lt;br /&gt;
# Si le script est appelé avec l&#039;option &amp;quot;-d&amp;quot;, alors on fait une sauvegarde différentielle&lt;br /&gt;
if [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
     TYPE=&amp;quot;INCR&amp;quot;&lt;br /&gt;
     OLD_SAVE=$(ls $REP | cut -d&amp;quot;-&amp;quot; -f 3-6 | cut -d&#039;.&#039; -f 1 | tail -n 1)&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -N &amp;quot;${OLD_SAVE}&amp;quot; -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-INCR-${date}.tgz&lt;br /&gt;
# Sinon, on fait une sauvegarde totale&lt;br /&gt;
else&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-FULL-${date}.tgz&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le script suivant permet de faire une sauvegarde système, plus complet, a pour but de faire une sauvegarde système sur un serveur NFS. Il utilise un fichier de configuration. Le prérequis est de renseigner le fichier /etc/save.conf et d&#039;utiliser udev. &lt;br /&gt;
&lt;br /&gt;
Le fichier save.conf doit être de la forme :&lt;br /&gt;
&amp;lt;code&amp;gt;EXCLUDE=&amp;quot;/repertoire1 /repertoire2&amp;quot;&lt;br /&gt;
# Le reste est optionnel&lt;br /&gt;
&lt;br /&gt;
#COMPRESSION=1&lt;br /&gt;
#SERVEUR=&amp;quot;10.0.0.2:/path&lt;br /&gt;
#MONTAGE=&amp;quot;/mnt/nfs&amp;quot;&lt;br /&gt;
#INCLUDE=&amp;quot;/toto&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et le script :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
PID=$$&lt;br /&gt;
&lt;br /&gt;
# On donne une priorité faible au processus pour ne pas dégrader les performances des autres applications&lt;br /&gt;
renice +19 $PID&lt;br /&gt;
. /etc/save.conf&lt;br /&gt;
&lt;br /&gt;
MONTAGE=${MONTAGE:=&amp;quot;/tmp/save.$PID&amp;quot;}&lt;br /&gt;
SERVEUR=${SERVEUR:=&amp;quot;10.0.0.1:/backup&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
COMPRESSION=${COMPRESSION:=9}&lt;br /&gt;
NOM=$(hostname)&lt;br /&gt;
CONFIGURATION=${MONTAGE}/${NOM}.conf&lt;br /&gt;
DATE=&amp;quot;$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&amp;quot;&lt;br /&gt;
FICHIER_EXCLUDE=/tmp/save.$PID.exlude&lt;br /&gt;
FICHIER_INCLUDE=/tmp/save.$PID.include&lt;br /&gt;
LVMVERSION=1&lt;br /&gt;
&lt;br /&gt;
affiche_action() {&lt;br /&gt;
	echo -e &amp;quot;$1 ........... \c&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
affiche_resultat() {&lt;br /&gt;
	if [ $1 = 0 ] ; then&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 2&lt;br /&gt;
		echo -e &amp;quot;OK\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 1&lt;br /&gt;
		echo -e &amp;quot;KO\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 1&lt;br /&gt;
	fi	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quit() {&lt;br /&gt;
	affiche_action &amp;quot;Nettoyage en cours&amp;quot;&lt;br /&gt;
	rm -f $FICHIER_EXCLUDE&lt;br /&gt;
	rm -f $FICHIER_INCLUDE&lt;br /&gt;
	umount $MONTAGE&lt;br /&gt;
	rmdir $MONTAGE&lt;br /&gt;
	affiche_resultat $?&lt;br /&gt;
	exit $1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Montage du partage nfs&lt;br /&gt;
affiche_action &amp;quot;Montage du partage NFS vers $SERVER&amp;quot;&lt;br /&gt;
mkdir $MONTAGE&lt;br /&gt;
mount -t nfs $SERVER $MONTAGE&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des donnees de partitionnement&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde du partitionnement&amp;quot;&lt;br /&gt;
echo &amp;quot;[disks]&amp;quot; &amp;gt; $CONFIGURATION&lt;br /&gt;
/sbin/fdisk -l | tr &#039;*&#039; &#039; &#039; | awk &#039;/^\/dev/ {print $1,$2,$3,$5}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[bootdisk]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
fdisk -l | awk &#039;/^\/dev\/.*\*/ {print $1}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde du lvm : PV, VG, LV et version du LVM&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des groupes de volumes du LVM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[LVM-VG]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
liste=$(pvscan | grep -o &#039;PV.*/dev/.*VG.*&#039; | tr -d &#039;&amp;quot;&#039; | sed &#039;s,^.*PV \(/dev/[^ ]*\).* VG \([^ ]*\).*,\1 \2,&#039;)&lt;br /&gt;
liste2=$(echo $liste | grep -o &#039;/dev/[^ ]*&#039;)&lt;br /&gt;
for element in $liste2 ; do&lt;br /&gt;
        LVM=1&lt;br /&gt;
        $REP/bin/lvm.static pvscan 2&amp;gt;/dev/null | grep $element 2&amp;gt;/dev/null | grep -q lvm2&lt;br /&gt;
        [ $? = 0 ] &amp;amp;&amp;amp; LVM=2&lt;br /&gt;
        echo $(echo $liste | grep -o &amp;quot;$element [^ ]*&amp;quot;) $LVM &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des volumes logiques du LVM&amp;quot;&lt;br /&gt;
echo &amp;quot;[LVM-LV]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for volume in $(lvscan | grep -o &#039;&amp;quot;/dev[^&amp;quot;]*&amp;quot;&#039; | tr -d &#039;&amp;quot;&#039;) ; do&lt;br /&gt;
	extend=$(lvdisplay $volume | awk &#039;/Allocated LE/ {print $3}&#039;)&lt;br /&gt;
	echo &amp;quot;$volume $extend&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des labels&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des labels des partitions&amp;quot;&lt;br /&gt;
echo &amp;quot;[labels]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for partition in $(/sbin/fdisk -l | grep -o &#039;^/dev/[^ ]*&#039;) ; do&lt;br /&gt;
	label=$(/sbin/e2label $partition 2&amp;gt;/dev/null)&lt;br /&gt;
	echo &amp;quot;$partition=$label&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des points de montage&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des points de montage&amp;quot;&lt;br /&gt;
echo &amp;quot;[montage]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
mount | awk &#039;/ext[23]/ {print $1,$3}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de la hierarchie exclue&lt;br /&gt;
affiche_action &amp;quot;Creation de la liste des repertoires exclus a recontruire&amp;quot;&lt;br /&gt;
echo &amp;quot;[hierarchie]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
rm -f $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# On exclu les partages NFS et les montages loop&lt;br /&gt;
mount | awk &#039;/type nfs/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
mount | awk &#039;/loop=/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Rajout des répertoires à exclure par défaut&lt;br /&gt;
[ -d /media ] &amp;amp;&amp;amp; EXCLUDE=&amp;quot;/media $EXCLUDE&amp;quot;&lt;br /&gt;
EXCLUDE=&amp;quot;/mnt /sys /dev /tmp /proc */lost+found /var/run /var/log /var/lock /var/spool /var/tmp /var/cache $EXCLUDE&amp;quot;&lt;br /&gt;
for rep in $EXCLUDE ; do&lt;br /&gt;
	case $rep in&lt;br /&gt;
		/mnt)&lt;br /&gt;
			echo &amp;quot;/mnt&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /mnt | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /mnt/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/mnt/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/media)&lt;br /&gt;
			echo &amp;quot;/media&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			[ -d /media ] &amp;amp;&amp;amp; for rep in $(ls -F /media | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /media/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/media/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/dev) echo &amp;quot;/dev&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/tmp) echo &amp;quot;/tmp&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/proc) echo &amp;quot;/proc&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sys) echo &amp;quot;/sys&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/var*)&lt;br /&gt;
			echo &amp;quot;/var&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION &lt;br /&gt;
			ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/usr/src) echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/home)&lt;br /&gt;
			echo &amp;quot;/home&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /home | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /home/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/home/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/usr*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/bin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sbin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/lib*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/boot*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		*)	[ -d $rep ] &amp;amp;&amp;amp; echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
	esac&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FIC_EXCLUDE&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de grub&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de grub&amp;quot;&lt;br /&gt;
echo &amp;quot;[GRUB]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
cat /boot/grub/menu.lst | grep &#039;^[^#].*root (hd&#039; | head -n 1 | grep -o &#039;root.*&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Si l&#039;option -d est passee en parametre, on fait une sauvegarde differentielle&lt;br /&gt;
INCLUDE=${INCLUDE:=/}&lt;br /&gt;
rm -f $FICHIER_INCLUDE&lt;br /&gt;
for rep in $INCLUDE ; do&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_INCLUDE&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ $# -ge 1 ] &amp;amp;&amp;amp; [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-INCR-${DATE}&amp;quot;&lt;br /&gt;
	OLD_DATE=$(ls $MONTAGE/${NOM}* | cut -d&#039;-&#039; -f 3-6 | cut -d&#039;.&#039; -f 1 | sort -r | head -n 1)&lt;br /&gt;
	tar cP --atime-preserve --preserve --same-owner --totals -N &amp;quot;$OLD_DATE&amp;quot; -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-INCR-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
else&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-FULL-${DATE}&amp;quot;&lt;br /&gt;
	tar cP --atime-preserve --preserve --same-owner --totals -T $FIC_INCLUDE -X $FIC_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-FULL-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de MAKEDEV qui se trouve dans /dev&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de MAKEDEV&amp;quot;&lt;br /&gt;
[ -f /dev/MAKEDEV ] &amp;amp;&amp;amp; cp /dev/MAKEDEV $MONTAGE/&lt;br /&gt;
affiche_resultat 0&lt;br /&gt;
&lt;br /&gt;
quit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
* -k : ne restaure que les fichiers qui n&#039;existent pas&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de commande pour restaurer une archive :&lt;br /&gt;
&amp;lt;code&amp;gt;tar zxvf --atime-preserve --preserve --same-owner --numeric /backup/archive.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13683</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13683"/>
		<updated>2006-09-08T20:46:21Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : corrections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [[Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
* -N date : permet de ne sauvegarder que les fichiers postérieurs à la date définie. La date doit être fournie sous la forme &#039;&#039;AAAA-MM-JJ HH:MM:SS&amp;quot;. On obtient se format grâce à la commande &amp;lt;code&amp;gt;date &amp;quot;+%Y:%m:%d %H:%M:%S&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* --totals : affiche le nombre d&#039;octets écrits lors de la sauvegarde&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;toujours&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et périls (kernel panic).&lt;br /&gt;
&lt;br /&gt;
Voici un petit script permettant de mettre en place une sauvegarde totale et/ou différentielle de données :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Initialisation des variables&lt;br /&gt;
DATE=$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&lt;br /&gt;
TYPE=&amp;quot;FULL&amp;quot;&lt;br /&gt;
REP=/backup&lt;br /&gt;
FICHIER_EXCLUDE=/etc/save.exclude&lt;br /&gt;
FICHIER_INCLUDE=/etc/save.include&lt;br /&gt;
&lt;br /&gt;
# Si le script est appelé avec l&#039;option &amp;quot;-d&amp;quot;, alors on fait une sauvegarde différentielle&lt;br /&gt;
if [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
     TYPE=&amp;quot;INCR&amp;quot;&lt;br /&gt;
     OLD_SAVE=$(ls $REP | cut -d&amp;quot;-&amp;quot; -f 3-6 | cut -d&#039;.&#039; -f 1 | tail -n 1)&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -N &amp;quot;${OLD_SAVE}&amp;quot; -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-INCR-${date}.tgz&lt;br /&gt;
# Sinon, on fait une sauvegarde totale&lt;br /&gt;
else&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-FULL-${date}.tgz&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le script suivant permet de faire une sauvegarde système, plus complet, a pour but de faire une sauvegarde système sur un serveur NFS. Il utilise un fichier de configuration. Le prérequis est de renseigner le fichier /etc/save.conf et d&#039;utiliser udev. &lt;br /&gt;
&lt;br /&gt;
Le fichier save.conf doit être de la forme :&lt;br /&gt;
&amp;lt;code&amp;gt;EXCLUDE=&amp;quot;/repertoire1 /repertoire2&amp;quot;&lt;br /&gt;
# Le reste est optionnel&lt;br /&gt;
&lt;br /&gt;
#COMPRESSION=1&lt;br /&gt;
#SERVEUR=&amp;quot;10.0.0.2:/path&lt;br /&gt;
#MONTAGE=&amp;quot;/mnt/nfs&amp;quot;&lt;br /&gt;
#INCLUDE=&amp;quot;/toto&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et le script :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
PID=$$&lt;br /&gt;
&lt;br /&gt;
# On donne une priorité faible au processus pour ne pas dégrader les performances des autres applications&lt;br /&gt;
renice +19 $PID&lt;br /&gt;
. /etc/save.conf&lt;br /&gt;
&lt;br /&gt;
MONTAGE=${MONTAGE:=&amp;quot;/tmp/save.$PID&amp;quot;}&lt;br /&gt;
SERVEUR=${SERVEUR:=&amp;quot;10.0.0.1:/backup&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
COMPRESSION=${COMPRESSION:=9}&lt;br /&gt;
NOM=$(hostname)&lt;br /&gt;
CONFIGURATION=${MONTAGE}/${NOM}.conf&lt;br /&gt;
DATE=&amp;quot;$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&amp;quot;&lt;br /&gt;
FICHIER_EXCLUDE=/tmp/save.$PID.exlude&lt;br /&gt;
FICHIER_INCLUDE=/tmp/save.$PID.include&lt;br /&gt;
LVMVERSION=1&lt;br /&gt;
&lt;br /&gt;
affiche_action() {&lt;br /&gt;
	echo -e &amp;quot;$1 ........... \c&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
affiche_resultat() {&lt;br /&gt;
	if [ $1 = 0 ] ; then&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 2&lt;br /&gt;
		echo -e &amp;quot;OK\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 1&lt;br /&gt;
		echo -e &amp;quot;KO\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 1&lt;br /&gt;
	fi	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quit() {&lt;br /&gt;
	affiche_action &amp;quot;Nettoyage en cours&amp;quot;&lt;br /&gt;
	rm -f $FICHIER_EXCLUDE&lt;br /&gt;
	rm -f $FICHIER_INCLUDE&lt;br /&gt;
	umount $MONTAGE&lt;br /&gt;
	rmdir $MONTAGE&lt;br /&gt;
	affiche_resultat $?&lt;br /&gt;
	exit $1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Montage du partage nfs&lt;br /&gt;
affiche_action &amp;quot;Montage du partage NFS vers $SERVER&amp;quot;&lt;br /&gt;
mkdir $MONTAGE&lt;br /&gt;
mount -t nfs $SERVER $MONTAGE&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des donnees de partitionnement&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde du partitionnement&amp;quot;&lt;br /&gt;
echo &amp;quot;[disks]&amp;quot; &amp;gt; $CONFIGURATION&lt;br /&gt;
/sbin/fdisk -l | tr &#039;*&#039; &#039; &#039; | awk &#039;/^\/dev/ {print $1,$2,$3,$5}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[bootdisk]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
fdisk -l | awk &#039;/^\/dev\/.*\*/ {print $1}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde du lvm : PV, VG, LV et version du LVM&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des groupes de volumes du LVM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[LVM-VG]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
liste=$(pvscan | grep -o &#039;PV.*/dev/.*VG.*&#039; | tr -d &#039;&amp;quot;&#039; | sed &#039;s,^.*PV \(/dev/[^ ]*\).* VG \([^ ]*\).*,\1 \2,&#039;)&lt;br /&gt;
liste2=$(echo $liste | grep -o &#039;/dev/[^ ]*&#039;)&lt;br /&gt;
for element in $liste2 ; do&lt;br /&gt;
        LVM=1&lt;br /&gt;
        $REP/bin/lvm.static pvscan 2&amp;gt;/dev/null | grep $element 2&amp;gt;/dev/null | grep -q lvm2&lt;br /&gt;
        [ $? = 0 ] &amp;amp;&amp;amp; LVM=2&lt;br /&gt;
        echo $(echo $liste | grep -o &amp;quot;$element [^ ]*&amp;quot;) $LVM &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des volumes logiques du LVM&amp;quot;&lt;br /&gt;
echo &amp;quot;[LVM-LV]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for volume in $(lvscan | grep -o &#039;&amp;quot;/dev[^&amp;quot;]*&amp;quot;&#039; | tr -d &#039;&amp;quot;&#039;) ; do&lt;br /&gt;
	extend=$(lvdisplay $volume | awk &#039;/Allocated LE/ {print $3}&#039;)&lt;br /&gt;
	echo &amp;quot;$volume $extend&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des labels&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des labels des partitions&amp;quot;&lt;br /&gt;
echo &amp;quot;[labels]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for partition in $(/sbin/fdisk -l | grep -o &#039;^/dev/[^ ]*&#039;) ; do&lt;br /&gt;
	label=$(/sbin/e2label $partition 2&amp;gt;/dev/null)&lt;br /&gt;
	echo &amp;quot;$partition=$label&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des points de montage&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des points de montage&amp;quot;&lt;br /&gt;
echo &amp;quot;[montage]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
mount | awk &#039;/ext[23]/ {print $1,$3}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de la hierarchie exclue&lt;br /&gt;
affiche_action &amp;quot;Creation de la liste des repertoires exclus a recontruire&amp;quot;&lt;br /&gt;
echo &amp;quot;[hierarchie]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
rm -f $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# On exclu les partages NFS et les montages loop&lt;br /&gt;
mount | awk &#039;/type nfs/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
mount | awk &#039;/loop=/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Rajout des répertoires à exclure par défaut&lt;br /&gt;
[ -d /media ] &amp;amp;&amp;amp; EXCLUDE=&amp;quot;/media $EXCLUDE&amp;quot;&lt;br /&gt;
EXCLUDE=&amp;quot;/mnt /sys /dev /tmp /proc */lost+found /var/run /var/log /var/lock /var/spool /var/tmp /var/cache $EXCLUDE&amp;quot;&lt;br /&gt;
for rep in $EXCLUDE ; do&lt;br /&gt;
	case $rep in&lt;br /&gt;
		/mnt)&lt;br /&gt;
			echo &amp;quot;/mnt&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /mnt | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /mnt/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/mnt/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/media)&lt;br /&gt;
			echo &amp;quot;/media&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			[ -d /media ] &amp;amp;&amp;amp; for rep in $(ls -F /media | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /media/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/media/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/dev) echo &amp;quot;/dev&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/tmp) echo &amp;quot;/tmp&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/proc) echo &amp;quot;/proc&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sys) echo &amp;quot;/sys&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/var*)&lt;br /&gt;
			echo &amp;quot;/var&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION &lt;br /&gt;
			ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/usr/src) echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/home)&lt;br /&gt;
			echo &amp;quot;/home&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /home | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /home/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/home/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/usr*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/bin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sbin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/lib*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/boot*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		*)	[ -d $rep ] &amp;amp;&amp;amp; echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
	esac&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FIC_EXCLUDE&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des devices&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des devices&amp;quot;&lt;br /&gt;
echo &amp;quot;[devices]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
ps ax | grep udev | grep -vq grep&lt;br /&gt;
if [ $? = 0 ] ; then&lt;br /&gt;
	echo &amp;quot;/dev/null 0666 0 0 c 1 3&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
	echo &amp;quot;/dev/console 0666 0 0 c 5 1&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
fi&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de grub&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de grub&amp;quot;&lt;br /&gt;
echo &amp;quot;[GRUB]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
cat /boot/grub/menu.lst | grep &#039;^[^#].*root (hd&#039; | head -n 1 | grep -o &#039;root.*&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Si l&#039;option -d est passee en parametre, on fait une sauvegarde differentielle&lt;br /&gt;
INCLUDE=${INCLUDE:=/}&lt;br /&gt;
rm -f $FICHIER_INCLUDE&lt;br /&gt;
for rep in $INCLUDE ; do&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_INCLUDE&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ $# -ge 1 ] &amp;amp;&amp;amp; [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-INCR-${DATE}&amp;quot;&lt;br /&gt;
	OLD_DATE=$(ls $MONTAGE/${NOM}* | cut -d&#039;-&#039; -f 3-6 | cut -d&#039;.&#039; -f 1 | sort -r | head -n 1)&lt;br /&gt;
	tar cP --atime-preserve --preserve --same-owner --totals -N &amp;quot;$OLD_DATE&amp;quot; -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-INCR-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
else&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-FULL-${DATE}&amp;quot;&lt;br /&gt;
	tar cP --atime-preserve --preserve --same-owner --totals -T $FIC_INCLUDE -X $FIC_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-FULL-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de MAKEDEV qui se trouve dans /dev&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de MAKEDEV&amp;quot;&lt;br /&gt;
[ -f /dev/MAKEDEV ] &amp;amp;&amp;amp; cp /dev/MAKEDEV $MONTAGE/&lt;br /&gt;
affiche_resultat 0&lt;br /&gt;
&lt;br /&gt;
quit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
* -k : ne restaure que les fichiers qui n&#039;existent pas&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de commande pour restaurer une archive :&lt;br /&gt;
&amp;lt;code&amp;gt;tar zxvf --atime-preserve --preserve --same-owner --numeric /backup/archive.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13682</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13682"/>
		<updated>2006-09-08T20:41:59Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : Rajout script sauvegarde système tar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [[Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
* -N date : permet de ne sauvegarder que les fichiers postérieurs à la date définie. La date doit être fournie sous la forme &#039;&#039;AAAA-MM-JJ HH:MM:SS&amp;quot;. On obtient se format grâce à la commande &amp;lt;code&amp;gt;date &amp;quot;+%Y:%m:%d %H:%M:%S&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* --totals : affiche le nombre d&#039;octets écrits lors de la sauvegarde&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;toujours&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et périls (kernel panic).&lt;br /&gt;
&lt;br /&gt;
Voici un petit script permettant de mettre en place une sauvegarde totale et/ou différentielle de données :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Initialisation des variables&lt;br /&gt;
DATE=$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&lt;br /&gt;
TYPE=&amp;quot;FULL&amp;quot;&lt;br /&gt;
REP=/backup&lt;br /&gt;
FICHIER_EXCLUDE=/etc/save.exclude&lt;br /&gt;
FICHIER_INCLUDE=/etc/save.include&lt;br /&gt;
&lt;br /&gt;
# Si le script est appelé avec l&#039;option &amp;quot;-d&amp;quot;, alors on fait une sauvegarde différentielle&lt;br /&gt;
if [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
     TYPE=&amp;quot;INCR&amp;quot;&lt;br /&gt;
     OLD_SAVE=$(ls $REP | cut -d&amp;quot;-&amp;quot; -f 3-6 | cut -d&#039;.&#039; -f 1 | tail -n 1)&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -N &amp;quot;${OLD_SAVE}&amp;quot; -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-INCR-${date}.tgz&lt;br /&gt;
# Sinon, on fait une sauvegarde totale&lt;br /&gt;
else&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-FULL-${date}.tgz&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le script suivant permet de faire une sauvegarde système, plus complet, a pour but de faire une sauvegarde système sur un serveur NFS. Il utilise un fichier de configuration. Le prérequis est de renseigner le fichier /etc/save.conf et d&#039;utiliser udev. &lt;br /&gt;
&lt;br /&gt;
Le fichier save.conf doit être de la forme :&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
EXCLUDE=&amp;quot;/repertoire1 /repertoire2&amp;quot;&lt;br /&gt;
# Le reste est optionnel&lt;br /&gt;
&lt;br /&gt;
#COMPRESSION=1&lt;br /&gt;
#SERVEUR=&amp;quot;10.0.0.2:/path&lt;br /&gt;
#MONTAGE=&amp;quot;/mnt/nfs&amp;quot;&lt;br /&gt;
#INCLUDE=&amp;quot;/toto&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et le script :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
PID=$$&lt;br /&gt;
&lt;br /&gt;
# On donne une priorité faible au processus pour ne pas dégrader les performances des autres applications&lt;br /&gt;
renice +19 $PID&lt;br /&gt;
. /etc/save.conf&lt;br /&gt;
&lt;br /&gt;
MONTAGE=${MONTAGE:=&amp;quot;/tmp/save.$PID&amp;quot;}&lt;br /&gt;
SERVEUR=${SERVEUR:=&amp;quot;10.0.0.1:/backup&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
COMPRESSION=${COMPRESSION:=9}&lt;br /&gt;
NOM=$(hostname)&lt;br /&gt;
CONFIGURATION=${MONTAGE}/${NOM}.conf&lt;br /&gt;
DATE=&amp;quot;$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&amp;quot;&lt;br /&gt;
FICHIER_EXCLUDE=/tmp/save.$PID.exlude&lt;br /&gt;
FICHIER_INCLUDE=/tmp/save.$PID.include&lt;br /&gt;
LVMVERSION=1&lt;br /&gt;
&lt;br /&gt;
affiche_action() {&lt;br /&gt;
	echo -e &amp;quot;$1 ........... \c&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
affiche_resultat() {&lt;br /&gt;
	if [ $1 = 0 ] ; then&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 2&lt;br /&gt;
		echo -e &amp;quot;OK\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 0&lt;br /&gt;
	else&lt;br /&gt;
		echo -e &#039;[\c&#039;&lt;br /&gt;
		tput setaf 1&lt;br /&gt;
		echo -e &amp;quot;KO\c&amp;quot;&lt;br /&gt;
		tput setaf 7&lt;br /&gt;
		echo -e &#039;]&#039;&lt;br /&gt;
		return 1&lt;br /&gt;
	fi	&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
quit() {&lt;br /&gt;
	affiche_action &amp;quot;Nettoyage en cours&amp;quot;&lt;br /&gt;
	rm -f $FICHIER_EXCLUDE&lt;br /&gt;
	rm -f $FICHIER_INCLUDE&lt;br /&gt;
	umount $MONTAGE&lt;br /&gt;
	rmdir $MONTAGE&lt;br /&gt;
	affiche_resultat $?&lt;br /&gt;
	exit $1&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Montage du partage nfs&lt;br /&gt;
affiche_action &amp;quot;Montage du partage NFS vers $SERVER&amp;quot;&lt;br /&gt;
mkdir $MONTAGE&lt;br /&gt;
mount -t nfs $SERVER $MONTAGE&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des donnees de partitionnement&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde du partitionnement&amp;quot;&lt;br /&gt;
echo &amp;quot;[disks]&amp;quot; &amp;gt; $CONFIGURATION&lt;br /&gt;
/sbin/fdisk -l | tr &#039;*&#039; &#039; &#039; | awk &#039;/^\/dev/ {print $1,$2,$3,$5}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[bootdisk]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
fdisk -l | awk &#039;/^\/dev\/.*\*/ {print $1}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde du lvm : PV, VG, LV et version du LVM&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des groupes de volumes du LVM&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[LVM-VG]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
liste=$(pvscan | grep -o &#039;PV.*/dev/.*VG.*&#039; | tr -d &#039;&amp;quot;&#039; | sed &#039;s,^.*PV \(/dev/[^ ]*\).* VG \([^ ]*\).*,\1 \2,&#039;)&lt;br /&gt;
liste2=$(echo $liste | grep -o &#039;/dev/[^ ]*&#039;)&lt;br /&gt;
for element in $liste2 ; do&lt;br /&gt;
        LVM=1&lt;br /&gt;
        $REP/bin/lvm.static pvscan 2&amp;gt;/dev/null | grep $element 2&amp;gt;/dev/null | grep -q lvm2&lt;br /&gt;
        [ $? = 0 ] &amp;amp;&amp;amp; LVM=2&lt;br /&gt;
        echo $(echo $liste | grep -o &amp;quot;$element [^ ]*&amp;quot;) $LVM &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des volumes logiques du LVM&amp;quot;&lt;br /&gt;
echo &amp;quot;[LVM-LV]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for volume in $(lvscan | grep -o &#039;&amp;quot;/dev[^&amp;quot;]*&amp;quot;&#039; | tr -d &#039;&amp;quot;&#039;) ; do&lt;br /&gt;
	extend=$(lvdisplay $volume | awk &#039;/Allocated LE/ {print $3}&#039;)&lt;br /&gt;
	echo &amp;quot;$volume $extend&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des labels&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des labels des partitions&amp;quot;&lt;br /&gt;
echo &amp;quot;[labels]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
for partition in $(/sbin/fdisk -l | grep -o &#039;^/dev/[^ ]*&#039;) ; do&lt;br /&gt;
	label=$(/sbin/e2label $partition 2&amp;gt;/dev/null)&lt;br /&gt;
	echo &amp;quot;$partition=$label&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des points de montage&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des points de montage&amp;quot;&lt;br /&gt;
echo &amp;quot;[montage]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
mount | awk &#039;/ext[23]/ {print $1,$3}&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de la hierarchie exclue&lt;br /&gt;
affiche_action &amp;quot;Creation de la liste des repertoires exclus a recontruire&amp;quot;&lt;br /&gt;
echo &amp;quot;[hierarchie]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
rm -f $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# On exclu les partages NFS et les montages loop&lt;br /&gt;
mount | awk &#039;/type nfs/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
mount | awk &#039;/loop=/ { print $3}&#039; &amp;gt;&amp;gt; $FICHIER_EXCLUDE&lt;br /&gt;
&lt;br /&gt;
# Rajout des répertoires à exclure par défaut&lt;br /&gt;
[ -d /media ] &amp;amp;&amp;amp; EXCLUDE=&amp;quot;/media $EXCLUDE&amp;quot;&lt;br /&gt;
EXCLUDE=&amp;quot;/mnt /sys /dev /tmp /proc */lost+found /var/run /var/log /var/lock /var/spool /var/tmp /var/cache $EXCLUDE&amp;quot;&lt;br /&gt;
for rep in $EXCLUDE ; do&lt;br /&gt;
	case $rep in&lt;br /&gt;
		/mnt)&lt;br /&gt;
			echo &amp;quot;/mnt&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /mnt | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /mnt/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/mnt/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/media)&lt;br /&gt;
			echo &amp;quot;/media&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			[ -d /media ] &amp;amp;&amp;amp; for rep in $(ls -F /media | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /media/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/media/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/dev) echo &amp;quot;/dev&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/tmp) echo &amp;quot;/tmp&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/proc) echo &amp;quot;/proc&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sys) echo &amp;quot;/sys&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/var*)&lt;br /&gt;
			echo &amp;quot;/var&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION &lt;br /&gt;
			ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/usr/src) echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/home)&lt;br /&gt;
			echo &amp;quot;/home&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			for rep in $(ls -F /home | tr -d &#039;/&#039;) ; do&lt;br /&gt;
				[ -d /home/$rep ] &amp;amp;&amp;amp; echo &amp;quot;/home/$rep&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
			done&lt;br /&gt;
			;;&lt;br /&gt;
		/usr*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/bin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/sbin*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/lib*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		/boot*) ls -R $rep | grep &#039;:$&#039; | tr -d &#039;:&#039; &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
		*)	[ -d $rep ] &amp;amp;&amp;amp; echo $rep &amp;gt;&amp;gt; $CONFIGURATION ;;&lt;br /&gt;
	esac&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FIC_EXCLUDE&lt;br /&gt;
done&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde des devices&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde des devices&amp;quot;&lt;br /&gt;
echo &amp;quot;[devices]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
ps ax | grep udev | grep -vq grep&lt;br /&gt;
if [ $? = 0 ] ; then&lt;br /&gt;
	echo &amp;quot;/dev/null 0666 0 0 c 1 3&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
	echo &amp;quot;/dev/console 0666 0 0 c 5 1&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
fi&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de grub&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de grub&amp;quot;&lt;br /&gt;
echo &amp;quot;[GRUB]&amp;quot; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
cat /boot/grub/menu.lst | grep &#039;^[^#].*root (hd&#039; | head -n 1 | grep -o &#039;root.*&#039; &amp;gt;&amp;gt; $CONFIGURATION&lt;br /&gt;
affiche_resultat $? || quit 1&lt;br /&gt;
&lt;br /&gt;
# Si l&#039;option -d est passee en parametre, on fait une sauvegarde differentielle&lt;br /&gt;
INCLUDE=${INCLUDE:=/}&lt;br /&gt;
rm -f $FICHIER_INCLUDE&lt;br /&gt;
for rep in $INCLUDE ; do&lt;br /&gt;
	echo $rep &amp;gt;&amp;gt; $FICHIER_INCLUDE&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ $# -ge 1 ] &amp;amp;&amp;amp; [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-INCR-${DATE}&amp;quot;&lt;br /&gt;
	OLD_DATE=$(ls $MONTAGE/${NOM}* | cut -d&#039;-&#039; -f 3-6 | cut -d&#039;.&#039; -f 1 | sort -r | head -n 1)&lt;br /&gt;
	tar cP --atime-preserve --preserve --same-owner --totals -N &amp;quot;$OLD_DATE&amp;quot; -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-INCR-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
else&lt;br /&gt;
	affiche_action &amp;quot;Sauvegarde du systeme sur $SERVEUR/${NOM}-FULL-${DATE}&amp;quot;&lt;br /&gt;
	tar cP --atime-preserve --preserve --same-owner --totals -T $FIC_INCLUDE -X $FIC_EXCLUDE | gzip -$COMPRESSION &amp;gt; $MONTAGE/${NOM}-FULL-${DATE}.tar.gz&lt;br /&gt;
	affiche_resultat $? || quit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Sauvegarde de MAKEDEV qui se trouve dans /dev&lt;br /&gt;
affiche_action &amp;quot;Sauvegarde de MAKEDEV&amp;quot;&lt;br /&gt;
[ -f /dev/MAKEDEV ] &amp;amp;&amp;amp; cp /dev/MAKEDEV $MONTAGE/&lt;br /&gt;
affiche_resultat 0&lt;br /&gt;
&lt;br /&gt;
quit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
* -k : ne restaure que les fichiers qui n&#039;existent pas&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de commande pour restaurer une archive :&lt;br /&gt;
&amp;lt;code&amp;gt;tar zxvf --atime-preserve --preserve --same-owner --numeric /backup/archive.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13680</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13680"/>
		<updated>2006-09-08T18:22:43Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : premier jet tar fini&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [[Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
* -N date : permet de ne sauvegarder que les fichiers postérieurs à la date définie. La date doit être fournie sous la forme &#039;&#039;AAAA-MM-JJ HH:MM:SS&amp;quot;. On obtient se format grâce à la commande &amp;lt;code&amp;gt;date &amp;quot;+%Y:%m:%d %H:%M:%S&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* --totals : affiche le nombre d&#039;octets écrits lors de la sauvegarde&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;toujours&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et périls (kernel panic).&lt;br /&gt;
&lt;br /&gt;
Voici un petit script permettant de mettre en place une sauvegarde totale et/ou différentielle.&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Initialisation des variables&lt;br /&gt;
DATE=$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&lt;br /&gt;
TYPE=&amp;quot;FULL&amp;quot;&lt;br /&gt;
REP=/backup&lt;br /&gt;
FICHIER_EXCLUDE=/etc/save.exclude&lt;br /&gt;
FICHIER_INCLUDE=/etc/save.include&lt;br /&gt;
&lt;br /&gt;
# Si le script est appelé avec l&#039;option &amp;quot;-d&amp;quot;, alors on fait une sauvegarde différentielle&lt;br /&gt;
if [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
     TYPE=&amp;quot;INCR&amp;quot;&lt;br /&gt;
     OLD_SAVE=$(ls $REP | cut -d&amp;quot;-&amp;quot; -f 3-6 | cut -d&#039;.&#039; -f 1 | tail -n 1)&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -N &amp;quot;${OLD_SAVE}&amp;quot; -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-INCR-${date}.tgz&lt;br /&gt;
# Sinon, on fait une sauvegarde totale&lt;br /&gt;
else&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-FULL-${date}.tgz&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
* -k : ne restaure que les fichiers qui n&#039;existent pas&lt;br /&gt;
&lt;br /&gt;
Voici un exemple de commande pour restaurer une archive :&lt;br /&gt;
&amp;lt;code&amp;gt;tar zxvf --atime-preserve --preserve --same-owner --numeric /backup/archive.tgz&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Les_sauvegardes&amp;diff=13679</id>
		<title>Discussion:Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Les_sauvegardes&amp;diff=13679"/>
		<updated>2006-09-08T18:02:48Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;salut ! est-ce que tu comptes parler des outils spécifiques des distributions, comme celui de Mandriva par exemple ? [[Utilisateur:LeaJice|LeaJice]] 5 sep 2006 à 20:40 (CEST)&lt;br /&gt;
   Pas du tout dans le sens où les seules distribs que j&#039;ai sous la main sont Arch et Debian. Par contre, je vais regarder un peu ce qui se fait avec des interfaces graphiques. [[Utilisateur:oudoubah|oudoubah]] 7 sep 2006 19h30&lt;br /&gt;
&lt;br /&gt;
re. Tu pourrais ajouter dans ton § rsync un truc sur les &#039;&#039;sauvegardes incrémentales&#039;&#039;. Je m&#039;explique. Je fais un backup régulier sur un serveur sur le net, et j&#039;ai sur le serveur les n derniers backups. Tu peux copier/coller ça :&lt;br /&gt;
&lt;br /&gt;
Je pense boucler tar ce soir (il ne reste que la restorre).  Ensuite, je vais commencer par donner les options de rsync les plus communes (on ne va pas refaire le man), et reprendre ce que tu as écrit.&lt;br /&gt;
&lt;br /&gt;
====Sauvegardes incrémentales avec rsync====&lt;br /&gt;
=====Côté machine à sauvegarder=====&lt;br /&gt;
Dans la crontab de la machine à sauvegarder, vers 22h00, je lance le script suivant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
# répertoires à sauvegarder&lt;br /&gt;
DIRS=&amp;quot;/home/jice /home/fred /etc /root /boot /var/lib/mysql /var/spool/mail&amp;quot;&lt;br /&gt;
# fichier contenant les fichiers à exclure de la sauvegarde&lt;br /&gt;
# voir EXCLUDE PATTERNS dans rsync(1)&lt;br /&gt;
EXCLUDEFILE=&amp;quot;/home/jice/bin/excludes&amp;quot;&lt;br /&gt;
OPTIONS=&amp;quot;-avz -e ssh&amp;quot;&lt;br /&gt;
OPTIONS=&amp;quot;$OPTIONS --exclude-from $EXCLUDEFILE --bwlimit=50&amp;quot;&lt;br /&gt;
OPTIONS=&amp;quot;$OPTIONS $*&amp;quot;&lt;br /&gt;
rsync $OPTIONS $DIRS jice@mon.serveur.net:backup/current&lt;br /&gt;
# copie du fichier &amp;quot;flag&amp;quot; pour dire au serveur que le backup a été fait&lt;br /&gt;
scp /home/jice/bin/backup_done jice@mon.serveur.net:~&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce script fait un backup vers le répertoire &amp;lt;code&amp;gt;backup/current&amp;lt;/code&amp;gt; du serveur (nommé &amp;lt;code&amp;gt;mon.serveur.net&amp;lt;/code&amp;gt;) ; à la fin, il copie un fichier (vide) &amp;lt;code&amp;gt;backup_done&amp;lt;/code&amp;gt; à la racine de mon compte sur le serveur, afin de dire au serveur que le backup a bien été fait.&lt;br /&gt;
&lt;br /&gt;
PS : voici un exemple de fichier &amp;lt;code&amp;gt;excludes&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;# excludes pour le backup sur zowie&lt;br /&gt;
jice/tmp*&lt;br /&gt;
jice/multimedia/video/*&lt;br /&gt;
jice/compil/*&lt;br /&gt;
fred/compil/*&lt;br /&gt;
*/.local/share/Trash/*&lt;br /&gt;
*/.kde/share/config/session/konqueror*&lt;br /&gt;
*/temp/*&lt;br /&gt;
*/tmp/*&lt;br /&gt;
*/cache/*&lt;br /&gt;
*/Cache/*&lt;br /&gt;
*/.thumbnails/*&lt;br /&gt;
*/.xvpics/*&lt;br /&gt;
*/.kde/tmp-*&lt;br /&gt;
*/.mcop/*&lt;br /&gt;
*/.ncftp/trace*&lt;br /&gt;
*/.nx/*&lt;br /&gt;
*.o&lt;br /&gt;
*.so&lt;br /&gt;
*.mp3&lt;br /&gt;
*.avi&lt;br /&gt;
*.rar&lt;br /&gt;
*.ace&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notez que ce fichier peut contenir ou bien le nom complet d&#039;un fichier, ou bien un &amp;quot;morceau&amp;quot; de nom de fichier avec des étoiles comme caractère joker. Pour plus d&#039;information, tapez dans une console : &amp;lt;code&amp;gt;man rsync&amp;lt;/code&amp;gt; et cherchez EXCLUDE PATTERNS.&lt;br /&gt;
&lt;br /&gt;
=====Côté serveur de sauvegarde=====&lt;br /&gt;
Côté serveur, j&#039;ai ce script qui fait une rotation des backups (en cron tous les  midi) :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ -f ~/backup_done ]; then&lt;br /&gt;
        KEEP=8&lt;br /&gt;
        DIR=~/backup&lt;br /&gt;
&lt;br /&gt;
        # arborescence :&lt;br /&gt;
        # ~/backup/2006-04-03&lt;br /&gt;
        # ~/backup/2006-04-04&lt;br /&gt;
        # ~/backup/2006-04-05&lt;br /&gt;
        # ~/backup/current&lt;br /&gt;
&lt;br /&gt;
        # calcule date du jour&lt;br /&gt;
        DATE=`date --date=yesterday &amp;quot;+%Y-%m-%d&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
        # crée le répertoire pour les backups du jour&lt;br /&gt;
        mkdir $DIR/$DATE&lt;br /&gt;
&lt;br /&gt;
        # supprime les vieux directories&lt;br /&gt;
        ls -d $DIR/2* | sort | head --lines=-$KEEP | xargs rm -rf&lt;br /&gt;
&lt;br /&gt;
        # copie (hard links) les données&lt;br /&gt;
        cp -al $DIR/current/* $DIR/$DATE&lt;br /&gt;
&lt;br /&gt;
        # supprime le fichier flag&lt;br /&gt;
        rm ~/backup_done&lt;br /&gt;
&lt;br /&gt;
        # on fait le rsync ensuite&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le backup a été fait (présence du fichier &amp;lt;code&amp;gt;backup_done&amp;lt;/code&amp;gt;, il effectue une rotation des backups.&amp;lt;br&amp;gt;&lt;br /&gt;
En utilisant le &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; avec les hard links, on ne copie pas réellement les fichiers, mais on crée un deuxième fichier qui pointe vers le contenu du premier (donc on peut avoir autant de hardlink qu&#039;on veut sur le même fichier, la place disque utilisée n&#039;est toujours que de la taille d&#039;un seul fichier).&amp;lt;br&amp;gt;&lt;br /&gt;
Rsync lorsqu&#039;il enverra, lors de la prochaine sauvegarde, un fichier modifié, utilisera un nom différent temporaire, avant de le renommer vers son nom normal. Ainsi, il ne va pas écraser le contenu du fichier hardlinké, car à la fin de la copie du fichier, Rsync supprime le fichier, puis renomme le fichier temporaire vers son nom normal.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A ce moment là, on a sur le serveur 2 versions du même fichier : la version courante qui vient d&#039;être sauvegardée dans &amp;lt;code&amp;gt;~/backup/current/repertoire/fichier&amp;lt;/code&amp;gt; et la version précédente qui a été copiée par le script ci-dessus dans &amp;lt;code&amp;gt;~/backup/&amp;lt;la date du dernier backup&amp;gt;/repertoire/fichier&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plus d&#039;explications&#039;&#039;&#039; :&lt;br /&gt;
* on a deux fichiers &amp;lt;code&amp;gt;current/toto&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;hier/toto&amp;lt;/code&amp;gt; qui pointent vers le même contenu. Ces 2 fichiers (ou plus) on été obtenus suite au script de rotation, par la copie avec hardlinks. On a donc :&lt;br /&gt;
&amp;lt;code&amp;gt;current/toto --&amp;gt; contenu &amp;lt;-- hier/toto&lt;br /&gt;
                               \&lt;br /&gt;
                                &#039;--------- avant-hier/toto&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
* si le fichier a été modifié, rsync va envoyer le nouveau fichier sous un nom temporaire &amp;lt;code&amp;gt;toto.tmp&amp;lt;/code&amp;gt; (par exemple). On a donc :&lt;br /&gt;
&amp;lt;code&amp;gt;current/toto --&amp;gt; contenu &amp;lt;-- hier/toto&lt;br /&gt;
                               \&lt;br /&gt;
                                &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto.tmp --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* ensuite, rsync supprime &amp;lt;code&amp;gt;current/toto&amp;lt;/code&amp;gt; On obtient, par la magie des  hardlinks :&lt;br /&gt;
&amp;lt;code&amp;gt;                 contenu &amp;lt;-- hier/toto&lt;br /&gt;
                          \&lt;br /&gt;
                           &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto.tmp --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* enfin, &amp;lt;code&amp;gt;toto.tmp&amp;lt;/code&amp;gt; est renommé en &amp;lt;code&amp;gt;toto&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;code&amp;gt;                 contenu &amp;lt;-- hier/toto&lt;br /&gt;
                          \&lt;br /&gt;
                           &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* on obtient bien 2 versions différentes, celle d&#039;hier et d&#039;avant-hier (le fichier n&#039;avait alors pas changé), et celle d&#039;aujourd&#039;hui.&lt;br /&gt;
&lt;br /&gt;
Ainsi j&#039;ai toujours les backup des 8 (réglable par la variable &amp;lt;code&amp;gt;KEEP&amp;lt;/code&amp;gt; ci-dessus) derniers jours disponible. Je peux retrouver les dernières versions d&#039;un fichier en cas de problème.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si tu veux, tu peux reprendre ça dans ton article. [[Utilisateur:LeaJice|LeaJice]] 6 sep 2006 à 11:48 (CEST)&lt;br /&gt;
&lt;br /&gt;
== en utilisant xdeltas ==&lt;br /&gt;
&lt;br /&gt;
Sur Léa j&#039;utilise un script du style : &lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
FICHIERS=&amp;quot;user@serveur:/path/to/backup-mysql.tar.bz2 user@serveur:/path/to/backup-www.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ ! &amp;quot;$1&amp;quot; = &amp;quot;--skip-download&amp;quot; ] ; then &lt;br /&gt;
&lt;br /&gt;
rm -f *bz2 *gz&lt;br /&gt;
scp ${FICHIERS} .&lt;br /&gt;
&lt;br /&gt;
DATE=$(date +&amp;quot;%Y%m%d&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
mkdir ${DATE}&lt;br /&gt;
mv *bz2 *gz ${DATE}/&lt;br /&gt;
&lt;br /&gt;
cd ${DATE}&lt;br /&gt;
for file in *bz2 ; do&lt;br /&gt;
	echo -n &amp;quot;bunziping ${file} &amp;quot;&lt;br /&gt;
	nice -n 19 bunzip2 ${file}&lt;br /&gt;
	echo &amp;quot; [ok]&amp;quot;&lt;br /&gt;
	echo -n &amp;quot;gziping ${file%%.bz2} &amp;quot;&lt;br /&gt;
	nice -n 19 gzip ${file%%.bz2}&lt;br /&gt;
	echo &amp;quot; [ok]&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
cd ..&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
DSTDIR=$(ls -dp * | grep -E &amp;quot;/\$&amp;quot; | sort | uniq | tail -n 2|head -n 1)&lt;br /&gt;
SRCDIR=$(ls -dp * | grep -E &amp;quot;/\$&amp;quot; | sort | uniq | tail -n 1)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;SOURCE DIR      : ${SRCDIR}&amp;quot;&lt;br /&gt;
echo &amp;quot;DESTINATION DIR : ${DSTDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -f ${DSTDIR}deltas ] ; then&lt;br /&gt;
	source ${DSTDIR}deltas&lt;br /&gt;
	DELTAS=$((DELTAS+1))&lt;br /&gt;
else&lt;br /&gt;
	DELTAS=1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ $DELTAS -gt 9 ] ; then&lt;br /&gt;
	echo &amp;quot;Vous avez créé 10 deltas de suite, par sécurité je ne créee pas de deltas cette fois&amp;quot;&lt;br /&gt;
	exit 0&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;C&#039;est votre delta n°${DELTAS}/10&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;DELTAS=${DELTAS}&amp;quot; &amp;gt; ${SRCDIR}deltas&lt;br /&gt;
&lt;br /&gt;
cd ${SRCDIR}&lt;br /&gt;
for file in *.gz ; do&lt;br /&gt;
	if [ -f ../${DSTDIR}${file} ] ; then&lt;br /&gt;
		echo -n &amp;quot;Création du delta : ../${DSTDIR}${file}.delta &amp;quot;&lt;br /&gt;
		nice -n 19 xdelta delta ${file} ../${DSTDIR}${file} ../${DSTDIR}${file}.delta&lt;br /&gt;
		echo &amp;quot;[ok]&amp;quot;&lt;br /&gt;
		echo -n &amp;quot;J&#039;efface : ../${DSTDIR}${file} &amp;quot;&lt;br /&gt;
		rm ../${DSTDIR}${file}&lt;br /&gt;
		echo &amp;quot;[ok]&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
cd ..&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
le script doit être lancé dans le répertoire où doivent se retrouver les backups et les backups doivent être en .bz2 ou .gz. &lt;br /&gt;
à chaque nouvel appel du script un répertoire est créé, et le dernier contient une version complète, les précédants des xdeltas entre la version n et la n+1&lt;br /&gt;
&lt;br /&gt;
C&#039;est quoi xdeltas ? [[Utilisateur:LeaJice|LeaJice]] 6 sep 2006 à 20:08 (CEST)&lt;br /&gt;
&lt;br /&gt;
C&#039;est l&#039;équivalent de diff mais fonctionne aussi pour des fichiers binaires (et ça gère nativement le gzip pour faire le &#039;&#039;xdelta&#039;&#039; - aka: &#039;&#039;diff&#039;&#039;)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13677</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13677"/>
		<updated>2006-09-08T17:42:33Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : completion tar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [[Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
* -N date : permet de ne sauvegarder que les fichiers postérieurs à la date définie. La date doit être fournie sous la forme &#039;&#039;AAAA-MM-JJ HH:MM:SS&amp;quot;. On obtient se format grâce à la commande &amp;lt;code&amp;gt;date &amp;quot;+%Y:%m:%d %H:%M:%S&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* --totals : affiche le nombre d&#039;octets écrits lors de la sauvegarde&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;&#039;toujours&#039;&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et périls (kernel panic).&lt;br /&gt;
&lt;br /&gt;
Voici un petit script permettant de mettre en place une sauvegarde totale et/ou différentielle.&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
# Options&lt;br /&gt;
# -d : sauvegarde differentielle&lt;br /&gt;
# -h : affiche les options possibles&lt;br /&gt;
&lt;br /&gt;
# Si on demande l&#039;aide, on l&#039;affiche, et on sort&lt;br /&gt;
if [ $1 = &amp;quot;-h&amp;quot; ] ; then&lt;br /&gt;
  echo &amp;quot;Usage : $0 : sauvegarde totale&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -d : sauvegarde différentielle&amp;quot;&lt;br /&gt;
  echo &amp;quot;Usage : $0 -h : cette aide&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# Initialisation des variables&lt;br /&gt;
DATE=$(date &amp;quot;+%Y-%m-%d %H:%M:%S&amp;quot;)&lt;br /&gt;
TYPE=&amp;quot;FULL&amp;quot;&lt;br /&gt;
REP=/backup&lt;br /&gt;
FICHIER_EXCLUDE=/etc/save.exclude&lt;br /&gt;
FICHIER_INCLUDE=/etc/save.include&lt;br /&gt;
&lt;br /&gt;
# Si le script est appelé avec l&#039;option &amp;quot;-d&amp;quot;, alors on fait une sauvegarde différentielle&lt;br /&gt;
if [ $1 = &amp;quot;-d&amp;quot; ] ; then&lt;br /&gt;
     TYPE=&amp;quot;INCR&amp;quot;&lt;br /&gt;
     OLD_SAVE=$(ls $REP | cut -d&amp;quot;-&amp;quot; -f 3-6 | cut -d&#039;.&#039; -f 1 | tail -n 1)&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -N &amp;quot;${OLD_SAVE}&amp;quot; -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-INCR-${date}.tgz&lt;br /&gt;
# Sinon, on fait une sauvegarde totale&lt;br /&gt;
else&lt;br /&gt;
     tar cP --atime-preserve --preserve --same-owner --totals -T $FICHIER_INCLUDE -X $FICHIER_EXCLUDE | gzip -9 &amp;gt; ${REP}/save-FULL-${date}.tgz&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
* -k : ne restaure que les fichiers qui n&#039;existent pas&lt;br /&gt;
&lt;br /&gt;
La commande &#039;&#039;tar&#039;&#039; permet également d&#039;effectuer des sauvegardes différentielles.&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13670</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13670"/>
		<updated>2006-09-08T08:22:19Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par [Utilisateur:oudoubah|oudoubah]]&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;&#039;toujours&#039;&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et péril (kernel panic).&lt;br /&gt;
&lt;br /&gt;
Voici un petit script de base pour mettre en place une telle sauvegarde :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
tar -c[OPTIONS] /chemin/vers/un/dossier/de/sauvegarde/ma_sauvegarde.[tar|tgz|bz2] /home/moi/&amp;lt;/code&amp;gt;&lt;br /&gt;
Ce script peut être appelé périodiquement par &#039;&#039;cron&#039;&#039;, il suffit d&#039;éditer sa crontab avec &#039;&#039;crontab -e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de restaurer l&#039;appartenance du fichier&lt;br /&gt;
* --numeric-owner : utilise les numéros pour les appartenances group/utilisateur. Petit exemple vécu : restauration à partir d&#039;un live-cd. Sur le live-cd, l&#039;utilisateur gdm avait comme uid 32. Sur la distrib, gdm correspondait à 42, et 32 à rpc. Lors du reboot, gdm refusait de se lancer car le répertoire /var/gdm ne lui appartenait pas. Il est donc préférable de restaurer les uid/gid au lieu d&#039;utiliser les noms.&lt;br /&gt;
* -k : ne restaure que les fichiers qui n&#039;existent pas&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Les_sauvegardes&amp;diff=13666</id>
		<title>Discussion:Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Les_sauvegardes&amp;diff=13666"/>
		<updated>2006-09-07T17:38:46Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;salut ! est-ce que tu comptes parler des outils spécifiques des distributions, comme celui de Mandriva par exemple ? [[Utilisateur:LeaJice|LeaJice]] 5 sep 2006 à 20:40 (CEST)&lt;br /&gt;
   Pas du tout dans le sens où les seules distribs que j&#039;ai sous la main sont Arch et Debian. Par contre, je vais regarder un peu ce qui se fait avec des interfaces graphiques. [[Utilisateur:oudoubah|oudoubah]] 7 sep 2006 19h30&lt;br /&gt;
&lt;br /&gt;
re. Tu pourrais ajouter dans ton § rsync un truc sur les &#039;&#039;sauvegardes incrémentales&#039;&#039;. Je m&#039;explique. Je fais un backup régulier sur un serveur sur le net. Dans la crontab de la machine à sauvegarder, vers 22h00, j&#039;ai un rsync bien configuré (je te mettrai le script ici quand j&#039;aurai accès à ma machine perso), qui fait un backup dans le répertoire &amp;lt;code&amp;gt;current&amp;lt;/code&amp;gt; ; à la fin, il copie un fichier &amp;lt;code&amp;gt;backup_done&amp;lt;/code&amp;gt; à la racine de mon compte sur le serveur, afin de dire au serveur que le backup a bien été fait.&amp;lt;br&amp;gt;&lt;br /&gt;
Côté serveur, j&#039;ai ce script qui fait une rotation des backups (en cron tous les  midi) :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ -f ~/backup_done ]; then&lt;br /&gt;
        KEEP=8&lt;br /&gt;
        DIR=~/backup&lt;br /&gt;
&lt;br /&gt;
        # arborescence :&lt;br /&gt;
        # ~/backup/2006-04-03&lt;br /&gt;
        # ~/backup/2006-04-04&lt;br /&gt;
        # ~/backup/2006-04-05&lt;br /&gt;
        # ~/backup/current&lt;br /&gt;
&lt;br /&gt;
        # calcule date du jour&lt;br /&gt;
        DATE=`date --date=yesterday &amp;quot;+%Y-%m-%d&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
        # crée le répertoire pour les backups du jour&lt;br /&gt;
        mkdir $DIR/$DATE&lt;br /&gt;
&lt;br /&gt;
        # supprime les vieux directories&lt;br /&gt;
        ls -d $DIR/2* | sort | head --lines=-$KEEP | xargs rm -rf&lt;br /&gt;
&lt;br /&gt;
        # copie (hard links) les données&lt;br /&gt;
        cp -al $DIR/current/* $DIR/$DATE&lt;br /&gt;
&lt;br /&gt;
        # supprime le fichier flag&lt;br /&gt;
        rm ~/backup_done&lt;br /&gt;
&lt;br /&gt;
        # on fait le rsync ensuite&lt;br /&gt;
fi&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si le backup a été fait (présence du fichier &amp;lt;code&amp;gt;backup_done&amp;lt;/code&amp;gt;, il effectue une rotation des backups.&amp;lt;br&amp;gt;&lt;br /&gt;
En utilisant le &amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt; avec les hard links, on ne copie pas réellement les fichiers, mais on crée un deuxième fichier qui pointe vers le contenu du premier (donc on peut avoir autant de hardlink qu&#039;on veut sur le même fichier, la place disque utilisée n&#039;est toujours que de la taille d&#039;un seul fichier).&amp;lt;br&amp;gt;&lt;br /&gt;
Rsync lorsqu&#039;il enverra, lors de la prochaine sauvegarde, un fichier modifié, utilisera un nom différent temporaire, avant de le renommer vers son nom normal. Ainsi, il ne va pas écraser le contenu du fichier hardlinké, car à la fin de la copie du fichier, Rsync supprime le fichier, puis renomme le fichier temporaire vers son nom normal.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A ce moment là, on a sur le serveur 2 versions du même fichier : la version courante qui vient d&#039;être sauvegardée dans &amp;lt;code&amp;gt;~/backup/current/repertoire/fichier&amp;lt;/code&amp;gt; et la version précédente qui a été copiée par le script ci-dessus dans &amp;lt;code&amp;gt;~/backup/&amp;lt;la date du dernier backup&amp;gt;/repertoire/fichier&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plus d&#039;explications&#039;&#039;&#039; :&lt;br /&gt;
* on a deux fichiers &amp;lt;code&amp;gt;current/toto&amp;lt;/code&amp;gt; et &amp;lt;code&amp;gt;hier/toto&amp;lt;/code&amp;gt; qui pointent vers le même contenu. Ces 2 fichiers (ou plus) on été obtenus suite au script de rotation, par la copie avec hardlinks. On a donc :&lt;br /&gt;
&amp;lt;code&amp;gt;current/toto --&amp;gt; contenu &amp;lt;-- hier/toto&lt;br /&gt;
                               \&lt;br /&gt;
                                &#039;--------- avant-hier/toto&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
* si le fichier a été modifié, rsync va envoyer le nouveau fichier sous un nom temporaire &amp;lt;code&amp;gt;toto.tmp&amp;lt;/code&amp;gt; (par exemple). On a donc :&lt;br /&gt;
&amp;lt;code&amp;gt;current/toto --&amp;gt; contenu &amp;lt;-- hier/toto&lt;br /&gt;
                               \&lt;br /&gt;
                                &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto.tmp --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* ensuite, rsync supprime &amp;lt;code&amp;gt;current/toto&amp;lt;/code&amp;gt; On obtient, par la magie des  hardlinks :&lt;br /&gt;
&amp;lt;code&amp;gt;                 contenu &amp;lt;-- hier/toto&lt;br /&gt;
                          \&lt;br /&gt;
                           &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto.tmp --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* enfin, &amp;lt;code&amp;gt;toto.tmp&amp;lt;/code&amp;gt; est renommé en &amp;lt;code&amp;gt;toto&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;code&amp;gt;                 contenu &amp;lt;-- hier/toto&lt;br /&gt;
                          \&lt;br /&gt;
                           &#039;--------- avant-hier/toto&lt;br /&gt;
&lt;br /&gt;
current/toto --&amp;gt; nouveau contenu&amp;lt;/code&amp;gt;&lt;br /&gt;
* on obtient bien 2 versions différentes, celle d&#039;hier et d&#039;avant-hier (le fichier n&#039;avait alors pas changé), et celle d&#039;aujourd&#039;hui.&lt;br /&gt;
&lt;br /&gt;
Ainsi j&#039;ai toujours les backup des 8 (réglable par la variable &amp;lt;code&amp;gt;KEEP&amp;lt;/code&amp;gt; ci-dessus) derniers jours disponible. Je peux retrouver les dernières versions d&#039;un fichier en cas de problème.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Si tu veux, tu peux reprendre ça dans ton article. [[Utilisateur:LeaJice|LeaJice]] 6 sep 2006 à 11:48 (CEST)&lt;br /&gt;
&lt;br /&gt;
== en utilisant xdeltas ==&lt;br /&gt;
&lt;br /&gt;
Sur Léa j&#039;utilise un script du style : &lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
FICHIERS=&amp;quot;user@serveur:/path/to/backup-mysql.tar.bz2 user@serveur:/path/to/backup-www.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if [ ! &amp;quot;$1&amp;quot; = &amp;quot;--skip-download&amp;quot; ] ; then &lt;br /&gt;
&lt;br /&gt;
rm -f *bz2 *gz&lt;br /&gt;
scp ${FICHIERS} .&lt;br /&gt;
&lt;br /&gt;
DATE=$(date +&amp;quot;%Y%m%d&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
mkdir ${DATE}&lt;br /&gt;
mv *bz2 *gz ${DATE}/&lt;br /&gt;
&lt;br /&gt;
cd ${DATE}&lt;br /&gt;
for file in *bz2 ; do&lt;br /&gt;
	echo -n &amp;quot;bunziping ${file} &amp;quot;&lt;br /&gt;
	nice -n 19 bunzip2 ${file}&lt;br /&gt;
	echo &amp;quot; [ok]&amp;quot;&lt;br /&gt;
	echo -n &amp;quot;gziping ${file%%.bz2} &amp;quot;&lt;br /&gt;
	nice -n 19 gzip ${file%%.bz2}&lt;br /&gt;
	echo &amp;quot; [ok]&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
cd ..&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
DSTDIR=$(ls -dp * | grep -E &amp;quot;/\$&amp;quot; | sort | uniq | tail -n 2|head -n 1)&lt;br /&gt;
SRCDIR=$(ls -dp * | grep -E &amp;quot;/\$&amp;quot; | sort | uniq | tail -n 1)&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;SOURCE DIR      : ${SRCDIR}&amp;quot;&lt;br /&gt;
echo &amp;quot;DESTINATION DIR : ${DSTDIR}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ -f ${DSTDIR}deltas ] ; then&lt;br /&gt;
	source ${DSTDIR}deltas&lt;br /&gt;
	DELTAS=$((DELTAS+1))&lt;br /&gt;
else&lt;br /&gt;
	DELTAS=1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ $DELTAS -gt 9 ] ; then&lt;br /&gt;
	echo &amp;quot;Vous avez créé 10 deltas de suite, par sécurité je ne créee pas de deltas cette fois&amp;quot;&lt;br /&gt;
	exit 0&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;C&#039;est votre delta n°${DELTAS}/10&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;DELTAS=${DELTAS}&amp;quot; &amp;gt; ${SRCDIR}deltas&lt;br /&gt;
&lt;br /&gt;
cd ${SRCDIR}&lt;br /&gt;
for file in *.gz ; do&lt;br /&gt;
	if [ -f ../${DSTDIR}${file} ] ; then&lt;br /&gt;
		echo -n &amp;quot;Création du delta : ../${DSTDIR}${file}.delta &amp;quot;&lt;br /&gt;
		nice -n 19 xdelta delta ${file} ../${DSTDIR}${file} ../${DSTDIR}${file}.delta&lt;br /&gt;
		echo &amp;quot;[ok]&amp;quot;&lt;br /&gt;
		echo -n &amp;quot;J&#039;efface : ../${DSTDIR}${file} &amp;quot;&lt;br /&gt;
		rm ../${DSTDIR}${file}&lt;br /&gt;
		echo &amp;quot;[ok]&amp;quot;&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
cd ..&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
le script doit être lancé dans le répertoire où doivent se retrouver les backups et les backups doivent être en .bz2 ou .gz. &lt;br /&gt;
à chaque nouvel appel du script un répertoire est créé, et le dernier contient une version complète, les précédants des xdeltas entre la version n et la n+1&lt;br /&gt;
&lt;br /&gt;
C&#039;est quoi xdeltas ? [[Utilisateur:LeaJice|LeaJice]] 6 sep 2006 à 20:08 (CEST)&lt;br /&gt;
&lt;br /&gt;
C&#039;est l&#039;équivalent de diff mais fonctionne aussi pour des fichiers binaires (et ça gère nativement le gzip pour faire le &#039;&#039;xdelta&#039;&#039; - aka: &#039;&#039;diff&#039;&#039;)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13665</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13665"/>
		<updated>2006-09-07T17:26:30Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : compléments 1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par Oudoubah&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité des données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde totale ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiés depuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranches de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boîtier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externaliser ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantité de données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichiers dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&amp;lt;/code&amp;gt;&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux, liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp. bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ATTENTION:&#039;&#039;&#039; Il faut &#039;&#039;&#039;&#039;toujours&#039;&#039;&#039;&#039; exclure les répertoires /dev et /proc! Sous linux, tout est fichier. Le matériel est identifié dans /dev par des fichiers spéciaux. Vouloir sauvegarder /dev via tar est vain. Dans /proc, il y a un fichier spécial, /proc/kcore, qui correspond à la RAM de l&#039;ordinateur. Je n&#039;ai pas fait le test, mais le &amp;quot;restaurer&amp;quot; est à vos risques et péril (kernel panic).&lt;br /&gt;
&lt;br /&gt;
Voici un petit script de base pour mettre en place une telle sauvegarde :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/bash&lt;br /&gt;
tar -c[OPTIONS] /chemin/vers/un/dossier/de/sauvegarde/ma_sauvegarde.[tar|tgz|bz2] /home/moi/&amp;lt;/code&amp;gt;&lt;br /&gt;
Ce script peut être appelé périodiquement par &#039;&#039;cron&#039;&#039;, il suffit d&#039;éditer sa crontab avec &#039;&#039;crontab -e&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Pour restaurer un tar, il suffit d&#039;utiliser la commande:&lt;br /&gt;
&amp;lt;code&amp;gt;tar x nom_archive&amp;lt;/code&amp;gt;&lt;br /&gt;
Là encore, il existe diverses options:&lt;br /&gt;
* -v : mode verbeux : afficher les fichiers en cours d&#039;extraction&lt;br /&gt;
* -z (resp. j) : permet de décompresser l&#039;archive compressée avec le format gzip (resp. bzip2)&lt;br /&gt;
* --atime-preserve : permet de ne pas modifier la date d&#039;accès du fichier restauré&lt;br /&gt;
* -C repertoire : permet de désarchiver dans le répertoire mentionné&lt;br /&gt;
* --preserve : permet de restaurer les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -k : ne restaure que les fichiers qui n&#039;existent pas&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Proposition_d%27article&amp;diff=13640</id>
		<title>Proposition d&#039;article</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Proposition_d%27article&amp;diff=13640"/>
		<updated>2006-09-05T19:27:28Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : /* Rubrique : Administrer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Proposition d&#039;article =&lt;br /&gt;
Indiquer ici les articles qui manquent et que vous vous proposez de créer, puis créez les ! Si vous avez besoin de mettre des images dans votre article, n&#039;hésitez pas à demander à Léa les [[Lea_Linux:Groupe_Editeur|droit d&#039;éditeurs]]. &#039;&#039;&#039;Ne mettez pas&#039;&#039;&#039; des articles que vous désireriez voir écrits par quelqu&#039;un d&#039;autre que vous ! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=alert&amp;gt;&#039;&#039;&#039;Note :&#039;&#039;&#039; pour proposer un nouveau truc ou une nouvelle astuce, utiliser [[Trucs:Proposition_d&#039;un_truc|cette page]].&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit d&#039;insérer dans la section qui correspond à votre article, quelque chose du genre : &lt;br /&gt;
* exemple : &amp;lt;nowiki&amp;gt;[[Nom de l&#039;article]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
qui donnera : &lt;br /&gt;
* exemple : [[Nom de l&#039;article]] (SVP ne créez pas l&#039;article &#039;&#039;&#039;Nom de l&#039;article&#039;&#039;&#039;).&lt;br /&gt;
== Rubrique : Installation ==&lt;br /&gt;
* [[UBUNTU et eagle-usb]] [[Utilisateur: mujma|Marc UJMA]]&lt;br /&gt;
* [[Guide d&#039;installation Linux SuSE 10.0 pas à pas]] leibowitz 29 janvier 2006&lt;br /&gt;
* [[Guide d&#039;installation et de configuration de Fluxbox,Conky, Idesk, Fbpager]] pingadaroça 31/01/06&lt;br /&gt;
&lt;br /&gt;
== Rubrique : X Window ==&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Logiciels ==&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Matériel ==&lt;br /&gt;
[[Le X10 et Linux]]&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
&lt;br /&gt;
* [[Hardware-hard_plus-matos_bis]]&lt;br /&gt;
* [[AC775|Carte PCMCIA GPRS/EDGE Sierra Wireless AC775]]&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Le réseau ==&lt;br /&gt;
* [[Streaming mp3 avec Icecast2 et ices]]. --[[Utilisateur:CoKe|CoKe]] 4 avr 2006 à 16:04 (CEST)&lt;br /&gt;
* [[Debian GNU/Linux et IPv6]]. [[Utilisateur: Thomas Carlu|Thomas Carlu]] 25 oct 2005 à 1:15 (CEST)&lt;br /&gt;
* [[Sécurité des réseaux WIFI]]. --[[Utilisateur:Maston28|Maston28]] 13 nov 2005 à 16:30 (CET)&lt;br /&gt;
* [[Configurer le wifi avec une livebox, freebox etc...]] par Samiche, avril 2006&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
* [[Tunnels ethernet avec openssh]]. --[[Utilisateur:Misc|Misc]] 12 fév 2006 à 13:30 (CET)&lt;br /&gt;
* [[Créer un point d&#039;accès sécurisé avec hostAPd]] --[[Utilisateur:Glandos|Glandos]] 26 avr 2006 à 23:16 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Administrer ==&lt;br /&gt;
* [[Arrêter Windows et son routeur Linux]], [[Utilisateur:Vivecom|Vivecom]] 26 nov 2005 à 16:40 (CET)&lt;br /&gt;
* [[S&#039;identifier par une clé USB]], [[Utilisateur:thomas debay]] 28 fév 2006&lt;br /&gt;
* [[Les sauvegardes]], [[Utilisateur:oudoubah|oudoubah]] 05 sep 2006&lt;br /&gt;
&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
* [[Gestion des ACL]] (ou [[ACL]] pour le titre). [[Utilisateur:Vincent Ramos|Vincent Ramos]] 24 oct 2005 à 23:00 (CEST)&lt;br /&gt;
::Fait. Bien qu&#039;améliorable, l&#039;article me semble complet. [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 00:22 (CEST) ;&lt;br /&gt;
* [[Attributs étendus]] (&#039;&#039;chattr&#039;&#039; sur ext2 et ext3, outils efs2progs) [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 17:40 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Noyau et modules ==&lt;br /&gt;
&lt;br /&gt;
* [[RT2500]] : compilation et installation du modules RT2500 Pour les cartes wifi , essai avec la carte &#039;&#039;&#039;PCI PC54G2&#039;&#039;&#039; , Auteur: Laplaine Freddy, Alias mr_pupu[corbeille]&lt;br /&gt;
&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
* [[HOWTO Dkms]] : Utiliser dkms pour gérer ses drivers dynamiquement et facilement&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Développer ==&lt;br /&gt;
&lt;br /&gt;
* [[Ocaml]] : une présentation du langage ocaml&lt;br /&gt;
*[[FreePascal]] : Un langage familier pour nombre de développeurs [[Utilisateur: mujma|Marc UJMA]]&lt;br /&gt;
*[[Trucs:Obtenir le code HTML d&#039;un glyphe]] [[Utilisateur:Nicola|Nicola]] 2 jan 2006 à 19:10 (CET)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Léavancé ==&lt;br /&gt;
&lt;br /&gt;
* [[Virtualisation avec Xen]]&lt;br /&gt;
* [[OpenMosix]] axé Slackware mais applicable à d&#039;autres distributions&lt;br /&gt;
* [[Compilation Distribuée]] ou comment accélérer ses compilations&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13639</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13639"/>
		<updated>2006-09-05T19:25:51Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : /* la commande tar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par Oudoubah&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde total ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiésdepuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranche de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boitier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externalisé ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantitée données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
La commande tar permet de sauvegarder un ensemble de fichier dans une archive qui peut être compressée. Les fichiers ne seront donc pas directement lisibles.&lt;br /&gt;
Pour créer une archive, il suffit d&#039;utiliser la commande:&lt;br /&gt;
tar c nom_archive [fichier repertoire1] [fichier ou repertoire2]...&lt;br /&gt;
Différentes options peuvent s&#039;avérer utiles :&lt;br /&gt;
* -v : mode verbeux : liste les fichiers qui sont en cours d&#039;archivage&lt;br /&gt;
* -z (resp. j) : permet de compresser l&#039;archive avec le format gzip (resp bzip2). Le format bzip2 permet d&#039;avoir des fichiers plus petits au coût d&#039;un traitement plus long.&lt;br /&gt;
* --preserve : permet de sauvegarder les permissions. De plus, lors de la restauration, les fichiers seront &amp;quot;détarrés&amp;quot; dans le même ordre.&lt;br /&gt;
* --same-owner : permet de sauvegarder l&#039;appartenance du fichier&lt;br /&gt;
* -T fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à sauvegarder&lt;br /&gt;
* -X fichier : &#039;&#039;fichier&#039;&#039; est un fichier où chaque ligne correspond à un fichier ou répertoire à exclure parmis les répertoires à sauvegarder&lt;br /&gt;
* --exclude=fichier : &#039;&#039;fichier&#039;&#039; sera exclu de la sauvegarde&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; TODO : la restauration d&#039;un tar&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13637</id>
		<title>Les sauvegardes</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Les_sauvegardes&amp;diff=13637"/>
		<updated>2006-09-05T17:31:47Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : Début de rédaction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Les sauvegardes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Les plus de l&#039;administration]]&lt;br /&gt;
= Sauvegarder son système, ses données =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;Sauvegarder&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Par Oudoubah&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;&lt;br /&gt;
Sauvegarder son système ou ses données : que garder ? Quels logiciels utiliser ? Sur quel support ?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Que sauvegarder ==&lt;br /&gt;
&lt;br /&gt;
Avant d&#039;entamer les différentes manières et d&#039;apprendre les divers outils permettant d&#039;effectuer une sauvegarde, il est tout d&#039;abord nécessaire de définir ce que l&#039;on souhaite sauver. On peut soit choisir de sauvegarder uniquement ses données importantes (plus simple à mettre en place), soit son système entier.&lt;br /&gt;
&lt;br /&gt;
=== Les types de sauvegardes ===&lt;br /&gt;
&lt;br /&gt;
Il existe deux types de sauvegardes :&lt;br /&gt;
* &#039;&#039;&#039;Totales&#039;&#039;&#039; : avec une sauvegarde totale, on sauve l&#039;intégralité données que l&#039;on souhaite garder&lt;br /&gt;
* &#039;&#039;&#039;Partielles&#039;&#039;&#039; : Une sauvegarde partielle suit une sauvegarde total ou une sauvegarde partielle. Ici, nous allons seulement sauver les nouveaux fichiers ou ceux qui ont été modifiésdepuis la dernière sauvegarde. Cette sauvegarde est beaucoup plus rapide, mais peut demander beaucoup de manipulations en cas de restauration. Pour restaurer, il faudra partir de la dernière sauvegarde totale, puis passer dans l&#039;ordre chronologique les sauvegardes partielles.&lt;br /&gt;
&lt;br /&gt;
=== Les médias ===&lt;br /&gt;
&lt;br /&gt;
Les médias possibles sont :&lt;br /&gt;
* &#039;&#039;&#039;CD/DVD&#039;&#039;&#039; : ils permettent de stocker les données par tranche de 650 Mo, 700 Mo, 4.7 Go ou 8 Go. Ces médias optiques ont un support chimique, ce qui implique une déterioration avec le temps. Un CD gravé aujourd&#039;hui et stocké dans son boitier ne sera peut être pas lisible dans 10 ans! &lt;br /&gt;
* &#039;&#039;&#039;disque dur&#039;&#039;&#039; : ce disque peut être interne, usb, un disque réseau (NAS), ou un partage réseau (lufs/nfs/samba/ftp). Il présente d&#039;avoir l&#039;avantage d&#039;une capacité plus importante, voire la possibilité d&#039;externalisé ses sauvegardes (utile si la maison brûle).&lt;br /&gt;
* &#039;&#039;&#039;Clé usb&#039;&#039;&#039; : leurs capacités augmentent et peuvent être supérieures à celle d&#039;un CD. Un de ses avantages est que c&#039;est un média de stockage peu cher qui peut fonctionner sur d&#039;anciens ordinateurs (pas besoin de graveur). C&#039;est un des médias les plus pratiques : rapidité d&#039;écriture par rapport à un CD (pas d&#039;image à faire), peu encombrant, mais il est limité en cycles de lecture/écriture.&lt;br /&gt;
&lt;br /&gt;
Le choix du média sera dicté en partie selon la quantitée données à sauvegarder.&lt;br /&gt;
&lt;br /&gt;
== Les outils de sauvegarde ==&lt;br /&gt;
&lt;br /&gt;
Avant de sauvegarder, il faut commencer par recenser ce que l&#039;on souhaite garder. De plus, l&#039;idée serait que les utilisateurs n&#039;aient aucun fichier en cours de modification au moment de la sauvegarde. On ne pourra pas garantir, le cas contraire, que son fichier sera bien sauvegardé.&lt;br /&gt;
&lt;br /&gt;
=== la commande tar ===&lt;br /&gt;
&lt;br /&gt;
=== la commande rsync ===&lt;br /&gt;
&lt;br /&gt;
== Spécificités de la sauvegarde système ==&lt;br /&gt;
&lt;br /&gt;
== Les conseils ==&lt;br /&gt;
* Vérifier la sauvegarde après l&#039;avoir faite : test md5 par exemple. Ce n&#039;est pas lorsqu&#039;on en aura besoin qu&#039;il faut se rendre compte que le graveur ne gravait plus!&lt;br /&gt;
* Tester la restauration&lt;br /&gt;
* Vérifier régulièrement (tous les ans) que l&#039;on arrive bien à relire sa sauvegarde (voire refaire une sauvegarde sur un média neuf tous les 2 ans par exemple)&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Proposition_d%27article&amp;diff=13636</id>
		<title>Proposition d&#039;article</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Proposition_d%27article&amp;diff=13636"/>
		<updated>2006-09-05T17:09:40Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : /* Rubrique : Administrer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Proposition d&#039;article =&lt;br /&gt;
Indiquer ici les articles qui manquent et que vous vous proposez de créer, puis créez les ! Si vous avez besoin de mettre des images dans votre article, n&#039;hésitez pas à demander à Léa les [[Lea_Linux:Groupe_Editeur|droit d&#039;éditeurs]]. &#039;&#039;&#039;Ne mettez pas&#039;&#039;&#039; des articles que vous désireriez voir écrits par quelqu&#039;un d&#039;autre que vous ! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre type=alert&amp;gt;&#039;&#039;&#039;Note :&#039;&#039;&#039; pour proposer un nouveau truc ou une nouvelle astuce, utiliser [[Trucs:Proposition_d&#039;un_truc|cette page]].&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit d&#039;insérer dans la section qui correspond à votre article, quelque chose du genre : &lt;br /&gt;
* exemple : &amp;lt;nowiki&amp;gt;[[Nom de l&#039;article]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
qui donnera : &lt;br /&gt;
* exemple : [[Nom de l&#039;article]] (SVP ne créez pas l&#039;article &#039;&#039;&#039;Nom de l&#039;article&#039;&#039;&#039;).&lt;br /&gt;
== Rubrique : Installation ==&lt;br /&gt;
* [[UBUNTU et eagle-usb]] [[Utilisateur: mujma|Marc UJMA]]&lt;br /&gt;
* [[Guide d&#039;installation Linux SuSE 10.0 pas à pas]] leibowitz 29 janvier 2006&lt;br /&gt;
* [[Guide d&#039;installation et de configuration de Fluxbox,Conky, Idesk, Fbpager]] pingadaroça 31/01/06&lt;br /&gt;
&lt;br /&gt;
== Rubrique : X Window ==&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Logiciels ==&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Matériel ==&lt;br /&gt;
[[Le X10 et Linux]]&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
&lt;br /&gt;
* [[Hardware-hard_plus-matos_bis]]&lt;br /&gt;
* [[AC775|Carte PCMCIA GPRS/EDGE Sierra Wireless AC775]]&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Le réseau ==&lt;br /&gt;
* [[Streaming mp3 avec Icecast2 et ices]]. --[[Utilisateur:CoKe|CoKe]] 4 avr 2006 à 16:04 (CEST)&lt;br /&gt;
* [[Debian GNU/Linux et IPv6]]. [[Utilisateur: Thomas Carlu|Thomas Carlu]] 25 oct 2005 à 1:15 (CEST)&lt;br /&gt;
* [[Sécurité des réseaux WIFI]]. --[[Utilisateur:Maston28|Maston28]] 13 nov 2005 à 16:30 (CET)&lt;br /&gt;
* [[Configurer le wifi avec une livebox, freebox etc...]] par Samiche, avril 2006&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
* [[Tunnels ethernet avec openssh]]. --[[Utilisateur:Misc|Misc]] 12 fév 2006 à 13:30 (CET)&lt;br /&gt;
* [[Créer un point d&#039;accès sécurisé avec hostAPd]] --[[Utilisateur:Glandos|Glandos]] 26 avr 2006 à 23:16 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Administrer ==&lt;br /&gt;
* [[Arrêter Windows et son routeur Linux]], [[Utilisateur:Vivecom|Vivecom]] 26 nov 2005 à 16:40 (CET)&lt;br /&gt;
* [[S&#039;identifier par une clé USB]], [[Utilisateur:thomas debay]] 28 fév 2006&lt;br /&gt;
* [[Les sauvegardes]], [[Utilisateur:oudoubah]] 05 sep 2006&lt;br /&gt;
&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
* [[Gestion des ACL]] (ou [[ACL]] pour le titre). [[Utilisateur:Vincent Ramos|Vincent Ramos]] 24 oct 2005 à 23:00 (CEST)&lt;br /&gt;
::Fait. Bien qu&#039;améliorable, l&#039;article me semble complet. [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 00:22 (CEST) ;&lt;br /&gt;
* [[Attributs étendus]] (&#039;&#039;chattr&#039;&#039; sur ext2 et ext3, outils efs2progs) [[Utilisateur:Vincent Ramos|Vincent Ramos]] 26 oct 2005 à 17:40 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Noyau et modules ==&lt;br /&gt;
&lt;br /&gt;
* [[RT2500]] : compilation et installation du modules RT2500 Pour les cartes wifi , essai avec la carte &#039;&#039;&#039;PCI PC54G2&#039;&#039;&#039; , Auteur: Laplaine Freddy, Alias mr_pupu[corbeille]&lt;br /&gt;
&lt;br /&gt;
=== Publiés ===&lt;br /&gt;
* [[HOWTO Dkms]] : Utiliser dkms pour gérer ses drivers dynamiquement et facilement&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Développer ==&lt;br /&gt;
&lt;br /&gt;
* [[Ocaml]] : une présentation du langage ocaml&lt;br /&gt;
*[[FreePascal]] : Un langage familier pour nombre de développeurs [[Utilisateur: mujma|Marc UJMA]]&lt;br /&gt;
*[[Trucs:Obtenir le code HTML d&#039;un glyphe]] [[Utilisateur:Nicola|Nicola]] 2 jan 2006 à 19:10 (CET)&lt;br /&gt;
&lt;br /&gt;
== Rubrique : Léavancé ==&lt;br /&gt;
&lt;br /&gt;
* [[Virtualisation avec Xen]]&lt;br /&gt;
* [[OpenMosix]] axé Slackware mais applicable à d&#039;autres distributions&lt;br /&gt;
* [[Compilation Distribuée]] ou comment accélérer ses compilations&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Tenir_compte_de_la_s%C3%A9curit%C3%A9_au_quotidien&amp;diff=12902</id>
		<title>Tenir compte de la sécurité au quotidien</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Tenir_compte_de_la_s%C3%A9curit%C3%A9_au_quotidien&amp;diff=12902"/>
		<updated>2006-07-01T17:03:29Z</updated>

		<summary type="html">&lt;p&gt;Oudoubah (phorum) : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
Un ordinateur n&#039;est jamais en sécurité, quand bien même on croit qu&#039;il l&#039;est. Un dicton informatique ne dit-il pas que le maillon le plus faible dans un système informatique est l&#039;utilisateur ? D&#039;ailleurs il est courant d&#039;entendre dire que &amp;quot;l&#039;ordinateur le plus sécurisé, c&#039;est celui qui n&#039;est pas branché à un réseau, qu&#039;il soit ethernet ou électrique&amp;quot; ! Cette fiche est là pour connaître les différents risques que l&#039;on court en ayant un ordinateur, connecté à un réseau ou non, ainsi que pour se parer contre toute attaque et enfin pour savoir comment nettoyer l&#039;ordinateur d&#039;une attaque que l&#039;on vient de subir.&lt;br /&gt;
&lt;br /&gt;
Pour tout le document (et de manière générale), il est évidemment conseillé de lire les pages de manuel des commandes avant de poser des questions.&lt;br /&gt;
Lisez aussi les articles connexes en cliquant sur les hyperliens dans le texte car dans ce document je ne m&#039;étale justement pas sur les sujets pour lesquels il existe déjà un article.&lt;br /&gt;
&lt;br /&gt;
== Les bases ==&lt;br /&gt;
=== Connaître son système ===&lt;br /&gt;
D&#039;abord et avant tout il faut être à l&#039;aise avec les concepts essentiels de [http://fr.wikipedia.org/wiki/Linux linux]. Cela permettra d&#039;une part de mieux connaître et comprendre ce que nous faisons et d&#039;autre part de mieux réagir en cas d&#039;attaque. Donc documentez vous sur ce système et son langage de commande ([[Admin-admin_env-shell|shell]]).Lisez aussi la documentation expliquant ce que sont [[Admin-admin_boot-daemons|les démons et comment ils fonctionnent]]. Voyez comment fonctionne un réseau, ce que sont les ports réseau, les permissions des fichiers, ce que sont les failles de sécurité des logiciels, etc.&lt;br /&gt;
&lt;br /&gt;
=== Sécuriser son boot ===&lt;br /&gt;
&lt;br /&gt;
Si l&#039;accès physique à la machine est une faille, il faut d&#039;une part configurer son bios. Celui-ci ne doit autoriser que le boot sur disque dur, et doit être protégé par mot de passe.&lt;br /&gt;
Grub permettant d&#039;éditer manuellement le boot (périphérique de démarrage, noyau, options pour l&#039;init...), il est nécessaire de le protéger par mot de passe afin qu&#039;on ne puisse pas modifier les configurations prédéfinies.&lt;br /&gt;
&lt;br /&gt;
=== Partitionnement conséquent ===&lt;br /&gt;
À l&#039;installation du système, il faut bien réfléchir au partitionnement des disques. Les données statiques (binaires, fichiers de configuration, etc.) seront sur une partition montée en lecture seule pour éviter toute modification :&lt;br /&gt;
* /bin&lt;br /&gt;
* /boot&lt;br /&gt;
* /lib&lt;br /&gt;
* /sbin&lt;br /&gt;
* /usr&lt;br /&gt;
Eventuellement d&#039;autres dossiers, selon la distribution.&lt;br /&gt;
&lt;br /&gt;
Lorsque l&#039;accès physique à la machine est une faille potentielle de sécurité, il n&#039;est pas une mauvaise idée que de créer une partition dédiée à /etc , qui serait formatée en un système de fichiers chiffré (voir [http://www.tldp.org/HOWTO/Encrypted-Root-Filesystem-HOWTO/ Encrypted root filesystem howto]).&lt;br /&gt;
&lt;br /&gt;
=== Permissions ===&lt;br /&gt;
De manière générale, éviter autant que possible le &#039;&#039;sticky bit&#039;&#039;, qui permet d&#039;exécuter un programme avec les droits de root alors qu&#039;on est connecté en simple utilisateur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre&amp;gt;&#039;&#039;&#039;sticky bit :&#039;&#039;&#039; droit donné à un fichier exécutable d&#039;utiliser les droits de l&#039;administrateur.&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utiliser chroot pour les services et les utilisateurs distants qui doivent avoir un accès restreint à la machine : [[Admin-admin_env-chroot]]&lt;br /&gt;
&lt;br /&gt;
=== Utilisateurs ===&lt;br /&gt;
Vérifier que root n&#039;est pas autorisé à se connecter. Utiliser sudo pour les tâches d&#039;administration.&lt;br /&gt;
&lt;br /&gt;
=== N&#039;installer que le strict nécessaire ===&lt;br /&gt;
Chaque bout de code est potentiellement une faille. C&#039;est pour cela que moins il y a de logiciels installés, plus le risque d&#039;avoir une faille est réduit. Un exemple courant pour faire comprendre le principe est que sur un serveur il n&#039;est généralement nul besoin de serveur X. Un autre exemple, dans un environnement unix il n&#039;est nul besoin de serveur Samba.&lt;br /&gt;
Une fois le ménage fait dans votre installation, il faut bien configurer ses logiciels.&lt;br /&gt;
&lt;br /&gt;
== Bien configurer ses démons ==&lt;br /&gt;
[[Reseau-web-Apache_protec|Sécuriser Apache]].&lt;br /&gt;
&lt;br /&gt;
Utilisez [[Reseau-secu-ssh|ssh/sshd]] plutôt que &amp;lt;code&amp;gt;telnet&amp;lt;/code&amp;gt;. En effet, ce dernier ne chiffre pas ses flux de données, contrairement à ssh, ce qui permet grâce à un simple sniffeur réseau de voler identifiants et mots de passe via le réseau.&lt;br /&gt;
&lt;br /&gt;
Les serveurs de fichiers (ou apparents) tels &amp;lt;code&amp;gt;Samba&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NFS&amp;lt;/code&amp;gt; ou encore &amp;lt;code&amp;gt;FTP&amp;lt;/code&amp;gt; ne doivent accepter de connexion que des utilisateurs enregistrés : une section est prévue à cet effet dans le fichier de configuration de chaque serveur. Il est préférable de faire ceci, même si les services n&#039;autorisent que les connexions locales et même si l&#039;authentification des utilisateurs est déjà limitée : mieux vaut trop de sécurité que pas assez. Si vous cherchez à faire du transfert de fichiers de manière sécurisée, préférez &amp;lt;code&amp;gt;scp&amp;lt;/code&amp;gt; (qui est en fait une manière d&#039;utiliser le protocole ssh).&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez vnc, préférez le faire de manière sécurisée : [[Reseau-resau_plus-vnc|vnc au-dessus de ssh]].&lt;br /&gt;
&lt;br /&gt;
== Barrer la route aux connexions non souhaitées ==&lt;br /&gt;
Une fois limité les ports réseau attendant des connexions, il faut mettre en place un firewall filtrant grâce à iptables (ou autre). Netfilter est le nom de la couche du noyau qui permet de filtrer tout ce qui passe par les interfaces réseau, tandis que iptables est une interface permettant de piloter Netfilter. Ne pas confondre, donc.&lt;br /&gt;
Des articles ont déjà été écrits à ce propos :&lt;br /&gt;
* [[Reseau-secu-iptables|iptables par l&#039;exemple]]&lt;br /&gt;
* [[Reseau-secu-murdefeu|Mur de feu pas à pas]]&lt;br /&gt;
* [[Leapro-pro_reseau-qos|QoS via iptables]]&lt;br /&gt;
&lt;br /&gt;
De manière très succincte, il faut fermer tous les ports puis ouvrir ceux dont on a besoin : le port 80 (et le 443 pour du https) doit être ouvert si l&#039;on a un serveur web, le port 110 si l&#039;on a un serveur pop dont on veut qu&#039;il soit accessible d&#039;internet, etc.&lt;br /&gt;
&lt;br /&gt;
Voici un bon script de base qu&#039;on peut adapter :&lt;br /&gt;
&amp;lt;code&amp;gt;#!/bin/sh&lt;br /&gt;
# firewall v1.0.1 Oct 13 09:48:57 PDT 2003 written by : Kernel &amp;lt;kernel@trustonme.net&amp;gt;&lt;br /&gt;
# this script is free software according to the GNU General Public License (see [www.gnu.org])&lt;br /&gt;
# Start/stop/restart/status firewall:&lt;br /&gt;
&lt;br /&gt;
firewall_start() {&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[Démarrage du firewall]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
############################### REGLES PAR DEFAUT ###########################&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[Initialisation de la table filter]&amp;quot;&lt;br /&gt;
iptables -F&lt;br /&gt;
iptables -X&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[Politique par défaut de la table filter]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# On ignore tout ce qui entre ou transite par la passerelle&lt;br /&gt;
iptables -P INPUT DROP&lt;br /&gt;
iptables -P FORWARD DROP&lt;br /&gt;
&lt;br /&gt;
# On accepte, ce qui sort&lt;br /&gt;
iptables -P OUTPUT ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pour éviter les mauvaises suprises, on va autoriser l&#039;accès à la loopback :&lt;br /&gt;
iptables -A INPUT -i lo -j ACCEPT&lt;br /&gt;
iptables -A OUTPUT -o lo -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
############################### LOCAL-INTERNET ###########################&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[On autorise les clients à accéder à internet]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#On créé une nouvelle chaîne, le nom est indifférent&lt;br /&gt;
# appelons-la &amp;quot;local-internet&amp;quot;&lt;br /&gt;
iptables -N local-internet&lt;br /&gt;
&lt;br /&gt;
# On définit le profil de ceux qui appartiendront à &amp;quot;local-internet&amp;quot;&lt;br /&gt;
# &amp;quot;local-internet&amp;quot; concerne toutes les connections sauf celles venant d&#039;internet ( ! = non)&lt;br /&gt;
# En gros avec ça, vous rendez, vos serveurs inaccessibles depuis internet.&lt;br /&gt;
# Pas de panique, certains serveurs seront autorisés explicitement dans la suite.&lt;br /&gt;
# (Remplacer ppp0 en fonction de votre configuration)&lt;br /&gt;
iptables -A local-internet -m state --state NEW -i ! ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#Evidemment, une fois acceptées comme &amp;quot;local-internet&amp;quot;, les connections peuvent continuer&lt;br /&gt;
# et faire des petits :&lt;br /&gt;
iptables -A local-internet -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# On termine en indiquant que les connections appartenant à &amp;quot;local-internet&amp;quot;&lt;br /&gt;
# accèdent à internet de manière transparente.&lt;br /&gt;
iptables -A INPUT -j local-internet&lt;br /&gt;
iptables -A FORWARD -j local-internet&lt;br /&gt;
&lt;br /&gt;
############################### LES TABLES NAT ET MANGLE #############################&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[Initialisation des tables nat et mangle]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
iptables -t nat -F&lt;br /&gt;
iptables -t nat -X&lt;br /&gt;
iptables -t nat -P PREROUTING ACCEPT&lt;br /&gt;
iptables -t nat -P POSTROUTING ACCEPT&lt;br /&gt;
iptables -t nat -P OUTPUT ACCEPT&lt;br /&gt;
&lt;br /&gt;
iptables -t mangle -F&lt;br /&gt;
iptables -t mangle -X&lt;br /&gt;
iptables -t mangle -P PREROUTING ACCEPT&lt;br /&gt;
iptables -t mangle -P OUTPUT ACCEPT&lt;br /&gt;
&lt;br /&gt;
#################################### LE MASQUERADING ########################################&lt;br /&gt;
&lt;br /&gt;
# Commentez ces 2 lignes, si vous ne faîtes pas du masquerading (nat)&lt;br /&gt;
#echo &amp;quot;[Mise en place du masquerading]&amp;quot;&lt;br /&gt;
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
################################# ACTIVATION DE LA PASSERELLE ##################&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[Activation de la passerelle]&amp;quot;&lt;br /&gt;
#echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
################################# PAS DE SPOOFING ############################&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[Pas de spoofing]&amp;quot;&lt;br /&gt;
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ] ; then&lt;br /&gt;
for filtre in /proc/sys/net/ipv4/conf/*/rp_filter&lt;br /&gt;
do&lt;br /&gt;
echo 1 &amp;gt; $filtre&lt;br /&gt;
done&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
########################## PAS DE SYNFLOOD ####################&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[Pas de synflood]&amp;quot;&lt;br /&gt;
if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/tcp_syncookies&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
################################## PAS DE PING ###############################&lt;br /&gt;
&lt;br /&gt;
# commentez ces 6 lignes, si vous autorisez les pings sur votre passerelle&lt;br /&gt;
echo &amp;quot;[Pas ping]&amp;quot;&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_all&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts&lt;br /&gt;
if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ] ; then&lt;br /&gt;
echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
############# Priorisation de la bande passante et des connections - QoS ############&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[priorisation des connections ssh ...]&amp;quot;;&lt;br /&gt;
iptables -A PREROUTING -t mangle -p tcp --sport 443 -j TOS --set-tos Minimize-Delay&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[priorisation des connections http ...]&amp;quot;;&lt;br /&gt;
iptables -A PREROUTING -t mangle -p tcp --sport http -j TOS --set-tos Maximize-throughput&lt;br /&gt;
iptables -A PREROUTING -t mangle -p tcp --sport 3129 -j TOS --set-tos Maximize-throughput&lt;br /&gt;
&lt;br /&gt;
############################ Fonctionnalités serveurs #####################################&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[Etude des fonctionalités serveurs, visibles depuis internet]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# A ce stade, tous vos clients du réseau local et de la passerelle ont accès à internet. Mieux,&lt;br /&gt;
# vos clients du réseau local, ont accès à vos serveurs apache, proftp ... localement. Mais personne&lt;br /&gt;
# depuis internet ne peux accéder à l&#039;un des serveurs que vous hébergez.&lt;br /&gt;
&lt;br /&gt;
# Il est bien-sûr possible de dévérrouiller pontuellement l&#039;accès à un serveur depuis internet,&lt;br /&gt;
# en décommentant les 2 ou 3 lignes correspondantes.&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur ssh(22) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport ssh -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur smtp(25) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport smtp -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur http(80) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport www -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur https(443) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport 443 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur DNS(53) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p udp --dport domain -j ACCEPT&lt;br /&gt;
#iptables -A INPUT -p tcp --dport domain -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur irc(6667) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport ircd -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur cvs (2401) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport cvspserver -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur FTP(21 et 20) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport ftp -j ACCEPT&lt;br /&gt;
#iptables -A INPUT -p tcp --dport ftp-data -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ne pas décommenter les 3 lignes qui suivent.&lt;br /&gt;
# Plus généralement :&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur Mon_truc(10584) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport 10584 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur aMule (4662/tcp) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport 4662 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
#echo &amp;quot;[autorisation du serveur BitTorrent (6881-6889/tcp) ...]&amp;quot;&lt;br /&gt;
#iptables -A INPUT -p tcp --dport 6881:6889 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;[firewall activé !]&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
firewall_stop() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
iptables -F&lt;br /&gt;
iptables -X&lt;br /&gt;
iptables -P INPUT ACCEPT&lt;br /&gt;
iptables -P FORWARD ACCEPT&lt;br /&gt;
iptables -P OUTPUT ACCEPT&lt;br /&gt;
&lt;br /&gt;
iptables -t nat -F&lt;br /&gt;
iptables -t nat -X&lt;br /&gt;
iptables -t nat -P PREROUTING ACCEPT&lt;br /&gt;
iptables -t nat -P POSTROUTING ACCEPT&lt;br /&gt;
iptables -t nat -P OUTPUT ACCEPT&lt;br /&gt;
&lt;br /&gt;
iptables -t mangle -F&lt;br /&gt;
iptables -t mangle -X&lt;br /&gt;
iptables -t mangle -P PREROUTING ACCEPT&lt;br /&gt;
iptables -t mangle -P OUTPUT ACCEPT&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot; [firewall descativé!]&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
firewall_restart() {&lt;br /&gt;
firewall_stop&lt;br /&gt;
sleep 2&lt;br /&gt;
firewall_start&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&#039;start&#039;)&lt;br /&gt;
firewall_start&lt;br /&gt;
;;&lt;br /&gt;
&#039;stop&#039;)&lt;br /&gt;
firewall_stop&lt;br /&gt;
;;&lt;br /&gt;
&#039;restart&#039;)&lt;br /&gt;
firewall_restart&lt;br /&gt;
;;&lt;br /&gt;
&#039;status&#039;)&lt;br /&gt;
iptables -L&lt;br /&gt;
iptables -t nat -L&lt;br /&gt;
iptables -t mangle -L&lt;br /&gt;
;;&lt;br /&gt;
*)&lt;br /&gt;
echo &amp;quot;Usage: firewall {start|stop|restart|status}&amp;quot;&lt;br /&gt;
esac&amp;lt;/code&amp;gt;&lt;br /&gt;
Ce script est à mettre généralement dans un fichier du dossier &amp;lt;code&amp;gt;/etc/init.d/&amp;lt;/code&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
== La compromission des logiciels ==&lt;br /&gt;
=== Les logiciels binaires ===&lt;br /&gt;
Il faut savoir qu&#039;en informatique il existe des logiciels malveillants. Ils sont appellés généralement virus, vers ou encore chevaux de Troie mais aussi rootkits sous un système unix.&lt;br /&gt;
Ce type de logiciel ([http://fr.wikipedia.org/wiki/Logiciel_malveillant malware] en anglais) n&#039;existe quasi exclusivement que sous windows. Certains virus fonctionnent et infectent les systèmes linux, mais leur nombre est très réduit. De toute manière, se servant généralement de failles du système, ce genre de logiciel ne se propage que très peu sous linux, puisque dès la découverte d&#039;une faille celle-ci est corrigée très rapidement. Ce qui n&#039;est pas le cas des systèmes windows.&lt;br /&gt;
Enfin il faut être vigilant car les utilisateurs peuvent toujours recevoir des virus par e-mail et les lancer, parce-qu&#039;ils ne sont pas informés sur les risques. Cependant, ce n&#039;est généralement pas bien dangereux, puisque le virus étant exécuté avec les permissions de l&#039;utilisateur il ne peut pas faire plus que ce que l&#039;utilisateur en question ne pourrait (au pire, les données dudit utilisateur sont effacées par le virus).&lt;br /&gt;
&lt;br /&gt;
Un antivirus n&#039;est donc nécessaire que si l&#039;ordinateur est en dual boot avec windows. En revanche, il n&#039;est jamais mauvais d&#039;installer et de lancer régulièrement &#039;&#039;chkrootkit&#039;&#039;, qui vérifie la présence de [http://fr.wikipedia.org/wiki/Rootkit rootkits].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;cadre info&amp;gt;&#039;&#039;&#039;rootkits :&#039;&#039;&#039; logiciels permettant d&#039;utiliser une faille de sécurité pour obtenir les droits de l&#039;administrateur (root).&amp;lt;/cadre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le noyau étant aussi un binaire, le recompiler en ne laissant que le nécessaire n&#039;est pas une mauvaise initiative. De plus, cela permet d&#039;appliquer des patchs qui sécurisent le noyau à plusieurs niveaux -- on peut citer en exemple [http://fr.wikipedia.org/wiki/Grsecurity grsecurity] et [http://www.nsa.gov/selinux/ SELinux].&lt;br /&gt;
&lt;br /&gt;
=== Les logiciels interprétés (scripts) ===&lt;br /&gt;
Si la machine possède un serveur apache fournissant des pages dynamiques (cgi mais surtout php et autres langages de script web. En fait, cgi est parfois sous la forme d&#039;un binaire, mais souvent sous forme de script) il faut se méfier des attaques du type injection de code.&lt;br /&gt;
&lt;br /&gt;
Veillez aussi à ne pas avoir de script contenant un mot de passe codé en clair !&lt;br /&gt;
Parfois, lorsque votre mot de passe est demandé (en l&#039;occurence pour sudo) et que vous savez qu&#039;on va vous le demander, vous tapez celui-ci sans regarder l&#039;écran. Sauf que le terminal présente un prompt et non un &amp;quot;please type your password:&amp;quot;, car vous avez tapé la commande trop vite, ou mal. Donc si par malheur vous avez tapé votre mot de passe (alors en clair) et que vous avez validé -- le shell retournant naturellement &amp;quot;commande inconnue&amp;quot; -- il vous faut éditer votre fichier &amp;lt;code&amp;gt;~/.bash_history&amp;lt;/code&amp;gt; pour y supprimer le mot de passe.&lt;br /&gt;
&lt;br /&gt;
== Les méthodes des pirates ==&lt;br /&gt;
Vérifier la présence de [http://fr.wikipedia.org/wiki/Keylogger keylogger]. C&#039;est un logiciel chargé de détecter et logger les touches pressées au clavier. Vous imaginez donc aisément le problème : les identifiants et mots de passe tapés au clavier sont alors facilement accessibles pour l&#039;attaquant. Attention cependant : même si aucun logiciel de ce type n&#039;est détecté, la présence d&#039;un keylogger matériel est possible. Vérifiez en suivant le cordon du clavier jusqu&#039;à l&#039;ordinateur : s&#039;il est directement relié à celui-ci, c&#039;est bon. Sinon, s&#039;il y a un petit câble avec un petit boîtier, il est fort probable que c&#039;est un keylogger.&lt;br /&gt;
L&#039;[http://fr.wikipedia.org/wiki/Ing%C3%A9nierie_sociale ingéniérie sociale] est une méthode consistant à profiter de la crédulité des gens, qui souvent écrivent leurs mots de passe sur un bout de papier et le laissent à proximité de l&#039;ordinateur. D&#039;autres sont par exemple appelés par l&#039;attaquant, se faisant alors passer pour le service technique de l&#039;entreprise, qui prétend avoir besoin du mot de passe de l&#039;utilisateur pour faire des tests.&lt;br /&gt;
&lt;br /&gt;
== Que faire en cas d&#039;attaque ? ==&lt;br /&gt;
=== Détecter les intrusions, connaître les outils ===&lt;br /&gt;
==== logcheck ====&lt;br /&gt;
&amp;lt;code&amp;gt;logcheck&amp;lt;/code&amp;gt; est un outil qui scrute les logs, en fait un résumé et envoie un courriel à l&#039;administrateur (généralement root en local) régulièrement. Evidemment, il est possible de configurer le niveau de ce qui est rapporté.&lt;br /&gt;
&lt;br /&gt;
==== fcheck ====&lt;br /&gt;
C&#039;est un utilitaire qui notifie l&#039;administrateur en cas de modification de fichiers. On précise dans le fichier de configuration quels fichiers ou dossiers on veut surveiller et un mailest envoyé en cas de changement.&lt;br /&gt;
&lt;br /&gt;
==== chkrootkit ====&lt;br /&gt;
C&#039;est un logiciel important, puisqu&#039;il détecte la présence de rootkits. Son principe de fonctionnement est l&#039;écoute des ports réseau. Relativement souvent, cependant, des logiciels tels les clients peer2peer sont détectés comme une menace, bien qu&#039;ils soient innofensifs. En effet, ils utilisent des ports qui ne sont pas &amp;quot;officiellement&amp;quot; connus (contrairement au port 80, par exemple, qui est celui de tout serveur web). Donc pas d&#039;affollement.&lt;br /&gt;
&lt;br /&gt;
==== Les systèmes de détection d&#039;intrusion (IDS, pour &#039;&#039;Intrusion Detection System&#039;&#039;) ====&lt;br /&gt;
Un IDS est un logiciel qui a pour but de détecter de manière active toute intrusion dans le système. On peut citer par exemple snort et tiger mais il en existe d&#039;autres.&lt;br /&gt;
&lt;br /&gt;
==== who ====&lt;br /&gt;
La commande &amp;lt;code&amp;gt;who&amp;lt;/code&amp;gt; ou &amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt; permet de voir les utilisateurs actuellement connectés (loggés) au système. Attention cependant car un agresseur peut être -- et l&#039;est certainement si c&#039;est le cas -- connecté sous votre nom, s&#039;il est parvenu à s&#039;immiscer dans votre système.&lt;br /&gt;
&lt;br /&gt;
==== netstat ====&lt;br /&gt;
La commande &amp;lt;code&amp;gt;netstat&amp;lt;/code&amp;gt; est une commande qui liste toutes les connexions réseau actives sur votre machine ainsi que l&#039;état dans lequel elles sont (listening, connected, established, etc.) :&lt;br /&gt;
&amp;lt;code&amp;gt;Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat&lt;br /&gt;
tcp     0             0            0.0.0.0:3129               0.0.0.0:*                        LISTEN&lt;br /&gt;
tcp6   0             0            :::443                           :::*                                   LISTEN&amp;lt;/code&amp;gt;&lt;br /&gt;
On voit ici par exemple que le port 3129 écoute (LISTEN) sur la machine locale (0.0.0.0) et que le port 443 en fait de même.&lt;br /&gt;
Vérifiez les connexions actives, les ports ouverts, et faites le lien avec vos démons et autres programmes qui tournent. Si un port ne vous dit rien, informez-vous.&lt;br /&gt;
&lt;br /&gt;
==== lsof ====&lt;br /&gt;
La commande &amp;lt;code&amp;gt;lsof&amp;lt;/code&amp;gt; liste tous les fichiers ouverts actuellement. Elle indique aussi quel utilisateur utilise quel fichier.&lt;br /&gt;
&amp;lt;code&amp;gt;COMMAND     PID       USER   FD      TYPE     DEVICE     SIZE       NODE      NAME&lt;br /&gt;
init                    1            root       mem  REG      3,65           31432     1720343 /sbin/init&lt;br /&gt;
apache2         597        root      mem   REG      3,65           385484  25423      /usr/sbin/apache2&amp;lt;/code&amp;gt;&lt;br /&gt;
Les informations parlent d&#039;elle-mêmes. Ce sont deux cas précis parce-que le processus &amp;lt;code&amp;gt;init&amp;lt;/code&amp;gt; a le fichier &amp;lt;code&amp;gt;/sbin/init&amp;lt;/code&amp;gt; d&#039;ouvert (de même pour apache).&lt;br /&gt;
&lt;br /&gt;
==== ps ====&lt;br /&gt;
La commande &amp;lt;code&amp;gt;ps&amp;lt;/code&amp;gt; liste tous les processus actuellement en cours d&#039;exécution sur le système. S&#039;il en est un que vous ne connaissez pas, identifiez-le. Si vous ne savez toujours pas ce que c&#039;est, pas d&#039;affollement : utilisez la commande &amp;lt;code&amp;gt;lsof&amp;lt;/code&amp;gt; et voyez si vous trouvez des fichiers en rapport avec ce processus. Vous pouvez alors identifier le processus et déterminer si c&#039;est un processus &amp;quot;innofensif&amp;quot;. Si ce n&#039;est pas le cas, vous pouvez supprimer les fichiers qu&#039;il faut. Attention toutefois à bien être certain que ce soit un logiciel malveillant que vous supprimez ! En revanche, si c&#039;est un logiciel qui s&#039;est fait infecter (par exemple apache) il suffit de réinstaller celui-ci, après avoir vidé le cache des paquets de votre gestionnaire de packages. Vérifiez aussi la configuration après réinstallation. Nul besoin de redémarrer, sauf si évidemment c&#039;est le noyau qui est corrompu, chose qui est à mon avis très rare.&lt;br /&gt;
&lt;br /&gt;
=== Localiser le problème et nettoyer ===&lt;br /&gt;
Grâce aux outils précédents il est plus ou moins facile de localiser d&#039;où vient le problème. On peut alors agir en conséquence, à savoir tuer les processus incriminés et supprimer les logiciels correspondants. Au préalable on peut aussi, si l&#039;on est curieux, regarder ce qu&#039;a fait l&#039;attaquant : il a certainement laissé des traces que l&#039;on peut examiner pour mieux comprendre.&lt;br /&gt;
&lt;br /&gt;
== Voir aussi ==&lt;br /&gt;
[http://fr.wikipedia.org/wiki/Cat%C3%A9gorie:Logiciel_de_s%C3%A9curit%C3%A9_informatique La page des logiciels de sécurité informatique sur Wikipédia]&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Même si l&#039;on connaît les risques, il est toujours impératif de rester sur ses gardes. De nouvelles menaces apparaissent régulièrement, de nouvelles failles sont découvertes chaque jour, de nouveaux virus aussi, etc. L&#039;avenir nous dira si un jour on aura des ordinateurs sûrs à 100%, chose qui n&#039;est pas impossible mais cependant improbable.&lt;/div&gt;</summary>
		<author><name>Oudoubah (phorum)</name></author>
	</entry>
</feed>