{{tag>fr fr:linux fr:serveur fr:sauvegarde}} ====== Sauvegardes ====== Cette page décrit la mise en place d'un serveur rsync. ===== Objectifs ===== * Dupliquer les données importantes de plusieurs ordinateurs * les données sont locales à chaque ordinateur * les sources sont des Linux et des Windows * Chaque source dispose d'un répertoire de sauvegarde indépendant * Une source ne doit pas pouvoir écraser une autre source * Une source ne doit pas pouvoir lire une autre source * Seule la source et root peuvent lire les données * Le script de sauvegarde tourne en super utilisateur sur la source pour pouvoir lire tous les fichiers * L'utilisateur destination a des droits restreints ===== Solutions ===== Rsync semble l'utilitaire adapté, en effet il est simple, léger, fonctionne en ligne de commande et dispose d'un portage sous windows. De plus, rsync est très flexible. Nous avons notamment plusieurs choix pour le protocole de transfert : - rsync - ssh Protocole rsync : * +facile à mettre en place * +définition de partages appelés modules * +authentification intégrée * -moins sécure que ssh (les mots de passe ne sont pas en clair) * -nécessite un démon appelé par inetd ou en standalone Protocole SSH : * +déjà fonctionnel si SSH est déjà installé * +sécurité * -nécessite la création d'utilisateurs sur le système * -difficile de restreindre les utilisateurs de sauvegarde aux seuls répertoires de sauvegarde (chroot) * -plus dur à mettre en place si chroot Dans mon cas, rsync est suffisant en terme de sécurité puisqu'il s'agit d'un réseau local. De plus je trouve cette solution plus propre. Pour plus d'informations sur la configuration de ssh, voir [[SSH]]. Détails de la solution * Tout est sauvegardé dans /sauvegardes * chaque source dispose d'un répertoire de sauvegarde * Droits sur les répertoires | ^ valeur ^ droits ^ ^utilisateur | root | r w X | ^groupe | root | - - - | ^autre | | - - - | * Un démon tourne sur le serveur * De plus, ///ftp// est publié par rsync en vue d'une sauvegarde sur un ordinateur distant ===== Installation ===== rsync client et serveur nécessite le paquet : * rsync ===== Sauvegarde locale ===== Voici un exemple d'utilisation de rsync pour une sauvegarde locale. ==== Commande simple ==== La commande de base de rsync est la suivante : rsync [OPTION] SOURCE DESTINATION Les options utiles sont : * --dry-run : ne pas réaliser l'action, uniquement indiquer ce doit être fait (très pratique pour tester au début) * -a : Mode archive (récursif, préserve les symlinks, préserve les droits, préserve les dates, préserve le propriétaire et le groupe, préserve les fichiers spéciaux) * -v : verbeux * --delete : supprime les fichiers en trop dans la destination * --numeric-ids : le numéros de user et group sont conservés * --files-from=file : indique un fichier contenant la liste des sources * --exclude-from=file : indique un fichier contenant la liste des exclusions à ne pas sauvegarder Exemple : rsync -av --delete --numeric-ids --files-from=list_file --exclude-from=exclude_file SOURCE DEST ==== Script local ==== Ce paragraphe décrit comment automatiser la tâche : Créer un répertoire pour y placer les fichiers, par exemple ///etc/rsync//, et créer les fichiers suivants : * list contenant la liste des répertoires à sauver * exclude contenant la liste des fichiers à ne pas sauver * sauve contenant le script : #!/bin/sh config_dir=/etc/rsync rsync -avr --delete --numeric-ids --files-from=$config_dir/list --exclude-from=$config_dir/exclude / /sauvegardes/bender Pour synchroniser, il suffit de lancer ///etc/rsync/sauve// === Exemple de liste des répertoires === //dirs// : /etc /var/lib/samba /home === Exemple de liste des exclusions === //exclude// : /home/matthieu/freevo2 Attention, ajouter un exclusion exclue le répertoire ou le fichier du traitement, il ne supprime pas les données précédement archivées. ===== Configuration du serveur ===== La mise en place d'un serveur permet d'effectuer une sauvegarde via le protocole rsync. ==== Paramètres globaux ==== Le fichier ///etc/default/rsync// contient les paramètres globaux. Par défaut aucun démon n'est démarré. Afin de lancer le serveur rsync au démarrage, il faut modifier le paramètre suivant : RSYNC_ENABLE=true ==== Configuration de rsyncd ==== Il faut ensuite définir la configuration du serveur rsyncd grâce au fichier ///etc/rsyncd.conf//.\\ === Paramètres globaux === La permière partie du fichier contient les paramètres globaux : # GLOBAL OPTIONS #motd file=/etc/motd log file=/var/log/rsyncd # for pid file, do not use /var/run/rsync.pid if # you are going to run rsync out of the init.d script. pid file=/var/run/rsyncd.pid #syslog facility=daemon #socket options= lock file = /var/lock/rsyncd uid=root gid=root hosts allow = 192.168.2.0/24 192.168.1.0/24 127.0.0.1 secrets file = /etc/rsyncd.secrets use chroot = yes read only=no * log file : emplacement des logs * pid file : fichier de pid * lock file : fichier de lock * uid : uid du démon * gid : gid du démon * hosts allow : ip autorisées à se connecter * secrets file : fichier des comptes rsync * use chroot : utilisation du chroot (l'accès au fichier est alors limité au répertoire du module) pour augmenter la sécurité * read only : limitation de l'accès à la lecture uniquement === Définition des modules === La deuxième partie définie les modules. Chaque module est une unité de sauvegarde. # MODULE OPTIONS [bender] path = /sauvegardes/bender comment = Sauvegarde de Bender auth users = bender [fry] path = /sauvegardes/fry comment = Sauvegarde de Fry auth users = fry [leela] path = /sauvegardes/leela comment = Sauvegarde de Leela auth users = leela [nibbler] path = /sauvegardes/nibbler comment = Sauvegarde de Nibbler auth users = nibbler [ftp] comment = FTP data path = /ftp uid = ftp gid = ftp read only = yes auth users = ftp La définition d'un module commence par son nom entre crochets, et contient les options suivantes : * path : répertoire de sauvegarde sur les disques * comment : commentaires * auth users : utilisateurs rsync autorisés à se connecter * uid : uid du démon (pour remplacer l'uid global) * gid : gid du démon (pour remplacer le gid global) * read only : limite l'accès au module en lecture seule === Exemple de configuration === ///etc/rsyncd.conf// # GLOBAL OPTIONS #motd file=/etc/motd log file=/var/log/rsyncd # for pid file, do not use /var/run/rsync.pid if # you are going to run rsync out of the init.d script. pid file=/var/run/rsyncd.pid #syslog facility=daemon #socket options= lock file = /var/lock/rsyncd uid=root gid=root hosts allow = 192.168.2.0/24 192.168.1.0/24 127.0.0.1 secrets file = /etc/rsyncd.secrets use chroot = yes read only=no # MODULE OPTIONS [bender] path = /sauvegardes/bender comment = Sauvegarde de Bender auth users = bender [fry] path = /sauvegardes/fry comment = Sauvegarde de Fry auth users = fry [leela] path = /sauvegardes/leela comment = Sauvegarde de Leela auth users = leela [nibbler] path = /sauvegardes/nibbler comment = Sauvegarde de Nibbler auth users = nibbler [ftp] comment = FTP data path = /ftp uid = ftp gid = ftp read only = yes auth users = ftp ///etc/rsyncd.secrets// bender:*** fry:*** leela:*** nibbler:*** ftp:*** ===== Configuration du client distant ===== ==== Ligne de commande ==== L'utilisation de rsync est globalement la même sur le poste client que lors d'une sauvegarde locale.\\ Les différences sont les suivantes : * la destination s'écrit sous la forme "utilisateur@serveur::destination" où destination commence par le nom du module * il faut saisir un mot de passe (ou le spécifier avec le fichier de mot de passe "--password-file" ) Exemple : rsync -avr --delete --numeric-ids /etc matthieu@bender::pc/backup1 ==== Script distant Linux ==== Voici l'adaptation du script de sauvegarde pour un client distant. Créer un répertoire pour y placer les fichiers, par exemple ///etc/rsync//, et créer les fichiers suivants : * list contenant la liste des répertoires à sauver * exclude contenant la liste des fichiers à ne pas sauver * password contenant le mot de passe * sauve contenant le script : #!/bin/sh config_dir=/etc/rsync rsync -avr --delete --numeric-ids --password-file=$config_dir/password --files-from=$config_dir/list --exclude-from=$config_dir/exclude / leela@bender::leela Pour synchroniser, il suffit de lancer ///etc/rsync/sauve// ==== Script distant Windows ==== Il existe plusieurs clients rsync pour Windows. Il est donc également possible de sauvegarder des ordinateurs sous Windows. Un des logiciels les plus simple est [[http://www.itefix.no/cwrsync/|cwRsync]] qui fournit la commande "rsync" en ligne de commande Windows.\\ Une fois cwRsync installé, son utilisation est identique à Linux. Voici l'adaptation du script de sauvegarde comme exemple : Créer un répertoire pour y placer les fichiers, par exemple //D:\scripts\rsync.fry//, et créer les fichiers suivants : * list contenant la liste des répertoires à sauver * exclude contenant la liste des fichiers à ne pas sauver * password contenant le mot de passe * rsync.fry.bat contenant le script : SET rsync_conf=/cygdrive/d/scripts/rsync.fry "C:\Program Files\cwRsync\bin\rsync.exe" -avr --numeric-ids --delete --files-from=%rsync_conf%/list --exclude-from=%rsync_conf%/exclude --password-file=%rsync_conf%/password /cygdrive/ fry@bender::fry @pause Pour synchroniser, il suffit de lancer //D:\scripts\rsync.fry\rsync.fry.bat// en double cliquant ===== Restauration ===== Pour restaurer un ou plusieur fichier il suffit d'utiliser l'emplacement de sauvegarde comme source.\\ Il est conseillé de restaurer dans un emplacement différent de la source car il n'est pas possible d'annuler. ===== Backup ===== * le répertoire des scripts /etc/rsync * /etc/rsyncd.conf * /etc/rsyncd.secrets ===== Links ===== * http://samba.anu.edu.au/rsync/ * http://samba.anu.edu.au/rsync/documentation.html * http://everythinglinux.org/rsync/ * http://www.itefix.no/cwrsync/