 installer un serveur de sauvegardes sous linux but de ce document ce document me sert de mémo pour installer et configurer un serveur de sauvegardes les sauvegardes seront effectuées sur des disques durs externes connectés en usb2 chaque jour le disque dur sera déconnecté mis au coffre ignifugé et remplacé par un autre disque usb installation d une debian testing etch de base j ai choisi une debian testing etch pour avoir une gestion des périphériques amovibles plus récente que celle actuellement disponible sous debian sarge j ai donc commencé par installer ma debian testing en suivant ce mémo  http wwwcoagulorg articlephp3 idarticle 158 montage du disque dur usb j ai commencé par vérifier que mon disque dur était correctement reconnu par le système en regardant les messages lors de la connexion et déconnexion du disque dur de plus la lecture de ces messages permet de connaître le nom du périphérique qui est dans mon cas   dev sda  tail f var log syslog cette commande permet de connaître les différentes partitions et le système de fichier utilisé fdisk l dev sda comme la partition sda1 était formatée en ntfs j ai commencé par la reformater en ext2 mke2fs dev sda1 remarque 1  je ne pense pas qu un système de fichier journalisé comme ext3 soit nécessaire pour ce type d utilisation  remarque 2  le formatage d un disque de 500go prend plusieurs minutes ensuite j ai créé un dossier pour recevoir le montage de la partition mkdir mnt sda1 et j ai monté la partition mount dev sda1 mnt sda1 pour des raisons de sécurité je souhaite laisser l accès à cette partition uniquement au seul utilisateur du serveur ex tony pour cela il faut définir les droits sur la partition une fois celleci montée chown tony mnt sda1 chmod 700 mnt sda1 remarque  les commandes précédentes ne fonctionnent pas si le système de fichiers est de type fat  montage automatique du disque dur au démarrage de l ordinateur pour des raisons de sécurité je ne souhaite pas que le montage automatique se fasse au moment de la connexion du disque mais au moment du redémarrage de l ordinateur j ai donc ajouté cette ligne dans le fichier   etc fstab  dev sda1 mnt sda1 ext2 rw auto 0 0 remarque  j ai volontairement précisé le type de système de fichiers ext2 pour que le montage échoue en cas d utilisation d un disque non formaté en ext2 ensuite avant de lancer les sauvegardes je lance un redémarrage de l ordinateur automatique avec la crontab de root crontab e pour être sur que tout est dans un fonctionnement optimum 50 17 sbin reboot installation du serveur ssh la sauvegarde des différents serveurs se fera uniquement en passant par ssh de plus étant donné que ce serveur sera administré à distance l installation d un serveur ssh est donc obligatoire installation du serveur ssh aptitude install opensshserver remarque  lors de la mise au point de ce serveur de sauvegarde j ai comparé le temps de sauvegarde en passant par un partage samba par rapport à l envoi de fichiers via ssh et il s est avéré que l envoi via ssh était deux fois plus rapide de plus cette méthode est mieux sécurisée et est plus fiable car j ai rencontré quelques soucis de compatibilité entre les différentes versions de samba de mes serveurs mise en place des clés publiques ssh sur le serveur de sauvegarde pour pouvoir automatiser la sauvegarde via ssh il faut éviter la saisie du mot de passe lors de la connexion pour cela il faut mettre en place une clé privée sur le serveur à sauvegarder et la clé publique correspondante sur le serveur de sauvegarde création d une clé privée et d une clé publique sur le serveur à sauvegarder sshkeygen t dsa mise en place de la clé publique sur le serveur de sauvegardes depuis le serveur à sauvegarder sshcopyid i root ssh iddsapub root serveursauvegarde ensuite il est possible de tester que la connexion au serveur de sauvegarde se fasse désormais sans la saisie du mot de passe ssh root serveursauvegarde script de sauvegarde voici le script que j utilise pour sauvegarder les différents répertoires de mes serveurs dans cet exemple je ne sauvegarde que les répertoires etc home et root bin bash function save heure date h m s taille du sh 1 cut f1 taille du dossier à sauvegarder echo heure sauvegarde 1 taille j date w serveur hostname destination mnt sda1 j serveur ssh tony pglinux01 mkdir p destination tar czf 1 2 errlog ssh tony pglinux01 cat destination 2tgz rm errlog heure date h m s echo heure debut de la sauvegarde du serveur save etc etc save home home save root root heure date h m s echo heure fin de la sauvegarde du serveur echo détail des erreurs pendant la sauvegarde cat errlog sauvegarde en automatique pour automatiser la sauvegarde j ajoute simplement dans la crontab de root la ligne suivante 30 20 15 root mesdocuments saveserveursshsh mail s hostname sauvegarde serveur tg monserveur cette ligne lance le programme de sauvegarde à 20h30 du lundi au vendredi et envoie par mail le résultat de celleci sauvegarde et archivage des fichiers avec rsync les sauvegardes précédentes ne concernaient que les fichiers systèmes pour les fichiers utilisateurs il est préférable de garder un historique plus long que 5 jours le programme rsync est tout approprié pour cette opération car il permet de synchroniser un dossier source avec un dossier de destination tout en créant des backup des fichiers modifiés l installation consiste à installer ce programme sur le serveur à sauvegarder la source et sur le serveur de sauvegarde la destination aptitude install rsync ensuite comme précédemment il faut que le serveur de sauvegarde dispose d un serveur ssh opérationnel que la clé publique du serveur à sauvegarder soit placée sur le serveur de sauvegarde pour éviter la saisie des mots de passe voici un exemple de script de sauvegardes utilisant rsync bin bash serveur 1 if serveur then echo serveur à sauvegarder obligatoire en paramètre exit fi date date y m d heure date h m s echo heure début de la sauvegarde des fichiers de serveur source mnt reseau serveur destination mnt sda10 serveur fichiers destinationbackup mnt sda10 serveur backup date heure montage et test que la source est correctment montée mount source test df h grep serveur wc l if test 0 then echo mail s serveur sauvegarde impossible tony mondomainecom exit fi si le serveur est innacessible un message est envoyé ssh tony pglinux01 mkdir p destination 2 dev null ssh tony pglinux01 mkdir p destinationbackup 2 dev null if 1 then echo mail s serveur impossible de sauvegarder tony mondomainecom else rsync rt delete backup backupdir destinationbackup source tony pglinux01 destination 2 tmp serveurlog fi cat tmp serveurlog problèmes rencontrés avec rsync rsync refusait de me faire un backup d un dossier particulier alors que tout fonctionnait pour les autres dossiers après recherche il s est avéré que l attribut lecture seule partition ntfs partagée en réseau était activé le propriétaire de ce dossier n existait plus l attribut a est déconseillé en cas de sauvegarde sur un autre système de fichiers ex ext3 vers fat car rsync n arrivera pas à sauvegarder tous les attributs et renverra des messages d erreurs et en plus il fera un backup de tous les fichiers dans ce cas il faut simplement utiliser rt en cas de sauvegarde d un système ext3 sur un système fat il faut également ajouter l option mdash modifywindow 1 pour laisser une tolérance d une seconde entre la date du fichier source et la date du fichier sauvegardé car un système fat a une tolérance dans l heure de deux secondes et un système ext3 d une seconde toujours dans le cas d une sauvegarde d un système ext3 sur un système fat certains caractères dans le nom des fichiers ne sont pas reconnus ex le signe dans ce cas une solution consiste à renommer les fichiers avant de les sauvegarder avec par exemple cette commande find name print exec rename s g il est important que le poste original et le poste de destination soient synchronisés sur la même heure car en cas de différence cela peut poser des problèmes redémarrage du serveur avant de lancer les sauvegardes par mesure de sécurité je préfère redémarrer automatiquement le serveur avant de lancer les sauvegardes pour au moins une raison être sur que le disque dure amovible est reconnu comme dev sda et non pas dev sdb ou autre chose sauvegarde de mysql pour la sauvegarde d une base de données il est conseillé de ne pas sauvegarder les fichiers directement mais d utiliser les outils spécifiques à la base de données il est même conseillé mais pas obligatoire d arrêter la base de données pendant la sauvegarde voici un exemple de script permettant de sauvegarder dans un fichier chaque table de chaque base de données et par mesure de sécurité supplémentaire j ai même un fichier contenant chaque base de données complète for labase in echo show databases mysql do if labase database then heure date h m s echo heure sauvegarde de labase mysqldump q c c adddroptable addlocks quick labase nt sdb1 sauvegardes mysql labasesql for latable in echo use labase show tables mysql do if latable tablesin labase then echo sauvegarde de labase latable mysqldump q c c adddroptable addlocks quick labase latable mnt sdb1 sauvegardes mysql labase latablesql fi done fi done remarque  il aurait été beaucoup plus simple de sauvegarder toutes les bases de données dans un seul fichier avec le paramètre mdash alldatabases mais comme mes bases de données sont très importantes j ai préféré avoir un fichier séparé pour chaque table sauvegarde d openldap la commande suivante permet d exporter dans un fichier texte le contenu de la base de données ldap pour être sur de faire une sauvegarde dans de bonnes conditions slapcat mnt sdb1 sauvegardes openldap openldapldif test d écriture de gros fichiers la taille maximum qu un fichier peut avoir dépend de beaucoup de choses version du noyau linux système de fichiers utilisés le mieux pour être sûr que le système accepte de gros fichiers ex 10go est de créer un fichier de test avec la commande suivante dd if dev zero of testfile2 bs 1024k count 10000 10000 0 records in 10000 0 records out 10485760000 bytes 10 gb copied 526987 seconds 199 mb s remarque  cette commande permet également de connaître la vitesse d enregistrement historique des modifications version date commentaire 02 010906 création par tony galmiche 05 030407 mise à jour suite à mise en place disque de 500go mise en ligne  installer un serveur de sauvegardes sous linux salut c est un bon article ca remplit bien le rôle de mémo comme les petits precis concis d en ce qui concerne le chown sur la partition fat c est possible il suffit d indiquer les options uid et gid lors du montage pour connaître l id de ton usager il suffit de faire id u tony  installer un serveur de sauvegardes sous linux bonjour oui mais non car dans ce cas tu ne change pas les droits des fichiers en eux même mais seulement le droit affecté au montage ce qui n est pas tout à fait pareil  installer un serveur de sauvegardes sous linux ca doit te prendre une place énorme sur le disque ca soit tu n as pas beaucoup d historique soit tu n as pas beaucoup de donné mais faire une sauvegarde complète tous les soirs pourquoi tu ne fais pas une sauvegarde complete par semaine incrémentale   installer un serveur de sauvegardes sous linux si tu parles de la sauvegarde système avec tar comme je fais une sauvegarde sur 5 jours et que la compréhension divise la taille par deux il me faut environ le double de place sur le disque dur que la taille totales de mes serveurs à sauvegarder concernant rsync il ne sauvegarde que la différence c est donc une sauvegarde incrémentale et cela me permet de tenir plusieurs mois avant que le disque ne soit saturé donc je conserve un historique sur plusieurs mois de tous les fichiers supprimé ou modifiés avec le disque de 500go que je viens de mettre en place je sauvegarde 5 serveurs qui représente environ au total entre 100 et 200go de données  archlinux  