SYSTEME D’EXPLOITATION UNIX Chapitre 6. System Maintenance - Construction et installation de programmes à partir du code source - Opérations de sauvegarde 1
SYSTEME D’EXPLOITATION UNIX
Chapitre 6. System Maintenance - Construction et installation de programmes à partir du code source
- Opérations de sauvegarde
1
Objectif du cours
Objectif 1
• Gestion des logs
Objectif 2
• (Re)Construire ses propres packages
Objectif 3
• Les sauvegardes sous Linux
2
Chapitre 1
Gestion des logs
Objectif 1 Présentation de Syslog
La configuration
La Source
Le filtrage
Les message LOG
Lire ses fichiers de logs
3
Gestion des logs Présentation de Syslog
Syslog-ng est en quelque sorte la version améliorée de syslog. La grande nouveauté est
la possibilité d'appliquer des filtres sur les messages de log générés. La partie log réseau
a également été améliorée.
Sysklog est une implémentation du protocol syslog plus ancienne mais encore utilisée
sous certains UNIX.Composé de deux daemons: syslogd qui s'occupe du logging du
système et klogd qui s'occupe du logging du noyau.
4
Configuration
Le fichier de configuration de syslog-ng est /etc/syslog-ng/syslog-ng.conf.
5 mots clés définissent le comportement de syslog-ng :
• options : définit les options de syslog-ng
• source : définit les sources d'où syslog-ng récupèrera les messages de log
• destination : définit l'emplacement d'écriture final des messages de log
• filter : les filtres à appliquer à la source
• log : élément qui va lier les sources, un ou plusieurs filtres et une ou plusieurs
destinations
5
La source Ce mot clé va nous permettre de définir une ou plusieurs "entrée" dans le système de
traitement de syslog-ng.
Cette source contient plusieurs entrées de types différents. Tout d'abord, une entrée "internal()"
spécifique à syslog-
ng. Nous pouvons ensuite lire l'intégralité des messages de log depuis le fichier /dev/log qui
n'est rien d'autre que le point d'entrée et de sortie des messages envoyés par la fonction
syslog() des librairies C.
6
Le kernel fournit un point de lecture de ses propres messages grâce au fichier /proc/kmsg.
Si nous souhaitons que notre daemon syslog-ng agisse en tant que serveur réseau de logs, il
suffit alors de placer la fonction "udp()". Comme indiqué dans le commentaire, ce
paramètre agit comme l'option -r de l'ancien daemon syslogd.
7
Le filtrage Cette section est très importante et fait la force de syslog-ng.C'est ici que nous
définissons les filtres qui seront appliqué (plus tard) aux messages sources. Il faut préciser
ou non un ou plusieurs levels séparés par des "," qui correspondent au niveau du
message (debuggage, warning, information..etc.) à une facility précisée.
L'exemple suivant permet de récupérer tous les messages en provenance de la facility
cron et applique une restriction sur le niveau du message en ne récupérant que les
erreurs :
8
Le filtrage
Les propriétés de filtrage
9
Les messages LOG
Cette section permet tout simplement de relier les différents éléments de la
configuration . Cette section fait une liaison avec les deux dernières sections
c'est à dire la source, le filtre et la destination :
10
Lire ses fichiers de logs
Pour lire les fichiers de logs d'un système, on peut utiliser n'importe quelle
commande vue précédemment comme cat, head, less, more, etc ... Vous pouvez
aussi utiliser votre éditeur de texte préféré qu'il soit en disponible en CLI ou en
mode graphique.
Certaines commandes peuvent aussi se révéler plus pratiques que d'autres pour
lire les fichiers de logs comme tail qui permet d'afficher uniquement la fin du fichier
de log.
Vous pouvez aussi voir les logs en temps réel grâce à l'option -f de la commande
tail.
11
Chapitre 2 (Re)Construire ses propres packages
Objectif 2 Objectifs
Avec le gestionnaire de packages RPM
Créer un package avec les sources d'un programme
12
(Re)Construire ses propres packages
Objectifs
Pourquoi construire ou reconstruire ses packages ? Tout d'abord savoir construire ses
paquets est un moyen d'intégrer dans son système Linux une application non
supportée par défaut. Par exemple si je possède une distribution linux debian et que
je souhaite installer un lecteur vidéo mais que je ne dispose que des sources de ce
dernier, la meilleure solution est de générer un package DEB et de l'ajouter ensuite
avec la commande dpkg. Les avantages sont nombreux, on peut ensuite facilement
le désinstaller, le mettre à jour, le distribuer, ...
13
Avec le gestionnaire de packages RPM
Introduction
Le format Red hat Package Manager (RPM), est une archive contenant les binaires
d'un programme ainsi que des scripts d'installation pour ce dernier. Ces RPM sont
créés à partir des sources d'une application qui est d'abord décompressée, patchée
puis compilée. Le résultat de cette compilation est donc notre fameux fichier RPM
ainsi qu'un fichier RPM source, par exemple :
Binaire RPM : mc-4.6.1.i586.rpm. Ici l'archive RPM contient les binaires compilés
pour une architecture i586 du programme mc.
Source RPM : mc-4.6.1.src.rpm. Ici l'archive RPM contient les sources du
programme mc ainsi que tous les fichiers, toute la configuration nécessaire pour la
création du package RPM contenant les binaires.
14
Pour finir il est interressant de savoir que lors de la création d'un package RPM, divers scripts sont exécutés pour automatiser la compilation et toutes les étapes qui l'accompagnent . Voici donc les différents répertoires et dossiers qui contiennent ces librairies, scripts :
/var/lib/rpm : Ce dossier contient plusieurs petites base de données fichiers qui indexent tout les packages rpm du système. Voici quelques exemples :
/var/lib/rpm/Packages : Base de données des packages installés
/usr/lib/rpm : Contient les librairies et scripts utilisés par les archives rpm, contient également la configuration par défaut utilisée pour la création de packages.
/usr/lib/rpm/rpmrc : configuration par défaut utilisé pour la création des packages RPM. On peut y définir l'architecture de sortie, par exemple i386, ou i586 ou 64 bits, ...
/usr/lib/rpm/macros : contient l'ensemble des macros (scripts), variables, appelés par défaut lors de la création d'un package.
/usr/lib/rpm/* tout le reste des fichiers sont des scripts et des librairies utilisés par le gestionnaire de package rpm.
15
Recompiler un package RPM
A présent que tout est prêt nous pouvons enfin créer des packages rpms. Notre premier
test va être de recompiler un package RPM ce qui est très simple car il nous suffit d'utiliser
le rpm source et pour cela, 2 choix s'offrent à nous. Soit simplement recompiler le package
sans rien modifier ni patcher, à ce moment là on fera appel à la commande rpmbuild :
Soit nous souhaitons modifier un peu le package avant de le recompiler, à ce moment là
nous installons d'abord
le package rpm source :
16
Une fois installé, votre package de source est éclaté dans tous les dossiers que nous avons précédemment créé. Un fichier "package.spec" doit apparaître dans le dossier SPECS ainsi qu'une archive et tous les patchs du programme dans le dossier SOURCES. Admettons à présent que nous souhaitons intégrer un nouveau patch à notre programme :
1. Copiez le dans le dossier SOURCES
2. Modifier le fichier package.spec pour ajouter ci-dessous les lignes qui sont en gras :
3. Enfin dernière étape, la compilation :
17
Créer un package avec les sources d'un programme
Dans cette dernière partie nous allons détailler comment générer un package rpm à partir des sources d'un programme. L'objectif est donc de créer nous-même un fichier de spec pour la commande rpmbuild. Ce dernier est organisé en plusieurs sections que voici:
Une section globale qui renseigne le nom du package, le fichier contenant les sources, sa version, ...
Une section où l'on précise les étapes de compilation et les éventuels patches
Une section où l'on précise comment installer le programme sur le système, les répertoires de destinations, les permissions, ...
Des sections post et pré installation où l'on peut lancer des scripts, effectuer diverses actions
Une section description et une section changelog pour renseigner le maximum d'informations à propos du package.
18
La section globale du fichier de spec
Voici toutes les options que l'on peut retrouver dans cette section :
Name : le nom du package sans la version
BuildRequires : la liste des packages nécessaires uniquement lors de la compilation
Group : Utile pour le gestionnaire de package afin de classer le package dans un groupe (dépend de votre distribution).
Requires : liste des packages requis uniquement pour l'utilisation de la forme compilé du package
Version : version du programme que l'on souhaite compiler
Release : version du package ( patchs, ... )
BuildRoot : répertoire utilisé pour la compilation du package
Source : Url utilisé pour récupérer puis extraire le package dans le BuildRoot. On peut préciser une adresse ftp, http ou locale à la machine.
19
Chapitre 1
opérations de sauvegarde
Objectif 3
Concepts
Types de sauvegarde :
les utilitaires de sauvegarde :
Solutions de souvegarde :
20
1-concepts :
La sauvegarde est une tâche importante. Elle doit être effectuée périodiquement sur des machines
comportant des données sensibles.
Les opérations de sauvegarde sont réalisées afin de pouvoir :
restaurer la totalité d'un système en état de fonctionnement suite à un incident (disque
en panne, feu, …) ;
restaurer une partie du système (un fichier ou un répertoire) suite à une fausse
manipulation telle qu’une suppression accidentelle d'un fichier de configuration.
21
2-types de sauvegarde :
Les sauvegardes sont de trois types :
sauvegarde complète : consiste à sauvegarder la totalité du système.
sauvegarde différentielle : consiste à ne sauvegarder que les fichiers modifiés en se
référant à une sauvegarde complète précédemment effectuée.
sauvegarde incrémentale : consiste à ne sauvegarder que les fichiers modifiés depuisla
dernière sauvegarde.
22
3-Utilitaires de sauvegarde :
Commande mt :
La commande mt contrôle une bande magnétique.
Syntaxe :
Avec :
périphérique : le lecteur de la bande, par défaut c'est /dev/tape
parmi les opérations possibles :
rewind : rembobiner ;
status : afficher l'état de la bande ;
erase : effacer la bande ;
offline : embobiner et éjecter ;
fsf [n] : avancer de n fichiers ;
bsf [n] : reculer de n fichiers.
23
mt [-f périphérique] opération
Commande tar :
La commande tar sauvegarde des fichiers et des répertoires .
Syntaxe :
Avec :
-c, --create : crée une archive ;
-x, --extract : extrait une archive ;
-t, --list : liste tous les fichiers de l'archive ;
-f, --file Fichier : précise le fichier archive qui peut être un fichier ordinaire ou un
périphérique ;
-z, --gzip : (dé)compacte l'archive tar avec gzip ;
-j, --bzip2 : (dé)compacte l'archive tar avec bzip2 ;
-M, --multi-volume : crée une archive tar multivolumes ;
-v, --verbose : active le mode d'affichage détaillé.
24
tar cvf nom_archive Fichier
Commande cpio :
La commande cpio sauvegarde sur la sortie standard les fichiers dont les noms sont
fournis par l'entrée standard.
Syntaxe :
Avec :
-i : extrait les fichiers de l'archive ;
-o : crée une archive ;
-t : affiche une table du contenu de l'entrée ;
-B : utilise une taille de bloc d'entrée/sortie de 5120 octets ;
-c : utilise un vieux format d'archive portable ;
-v : active le mode d'affichage détaillé.
25
cpio -option
Utilitaire rsync :
rsync (remote synchronization) est un utilitaire de synchronisation de fichiers entre l’hôte
local et un hôte distant.
Syntaxe :
Avec :
-v : active le mode d'affichage détaillé ;
-a : active le mode archive, identique à -rlptgoD ;
-z : compresse les données à envoyer ;
-e commande : spécifie un shell distant ;
-n : simule le fonctionnement de la commande ;
--delete : supprime les fichiers qui n'existent pas sur l’hôte émetteur.
26
rsync -option
Commandes dump :
La commande dump sauvegarde un système de fichiers de type Ext2/Ext3.
Syntaxe :
Avec :
-Niveau : spécifie le niveau de l'archive. La valeur 0 précise une sauvegarde complète,une valeur différente de 0 précise une sauvegarde incrémentale ;
-u : mise à jour du fichier dumpdates ;
-f fichier : spécifie le fichier archive. Par défaut c'est /dev/st0. La valeur « - » est
utilisée pour la sortie standard ;
-L étiquette : ajoute une étiquette dans l'en-tête de l'archive ;
-A fichier : crée un fichier contenant la liste des fichiers de l'archive.
27
dump -option
Commande restore :
La commande restore extrait des fichiers, des répertoires ou la totalité du système de
fichiers d'une archive créée par dump.
Syntaxe :
Avec :
-i : lance la commande en mode interactif ;
-f fichier : spécifie le fichier archive ;
-r : extrait le contenu de toute l'archive dans le répertoire courant ;
-t : liste le contenu du fichier archive.
28
restore -option
Commande dd
La commande dd permet de faire une copie bloc par bloc. Elle est adaptée pour la
duplication des périphériques de stockage tels qu'un disque, une partition, etc.
Syntaxe :
Avec :
if : spécifie le fichier source, par défaut c'est le fichier entrée standard ;
of : spécifie le fichier destination, par défaut c'est le fichier sortie standard ;
bs : spécifie la taille des blocs, par défaut c'est 512 octets ;
count : spécifie le nombre de blocs à copier, par défaut c'est autant de blocs qu’en
contient fichier-entrée.
dd if=fichier-entrée of=fichier-sortie bs=taille count=nb
29
4-Solutions de sauvegarde :
Les solutions de sauvegarde gèrent les opérations de sauvegarde, de restauration et de
vérification de données de différents systèmes tels que Linux, MacOS, Windows, etc. Elles
fonctionnent en réseau selon le modèle client/serveur en utilisant des protocoles de
transfert de fichiers tels que NFS, SSH, SMB, etc.
Ces solutions sont relativement faciles à utiliser, efficaces et offrent de nombreuses
fonctions avancées de gestion de sauvegarde.
Bacula, Amanda et BackupPC sont des solutions de sauvegarde libres distribuées sous
licence GPL. Elles sont considérées comme des alternatives viables aux solutions de
sauvegarde propriétaires.
30