Archive for the ‘debian’ Category

Solution de sauvegarde locale et distante avec rsync

Samedi, février 16th, 2008

Qui n’a jamais perdu des fichiers lors d’un crash de disque dur ? ou de la machine tout entière ?
Dans cet article je vous expliquer quels sont les moyens que j’ai mis en œuvre pour sauvegarder les données qui se situent sur mon serveur de fichiers (qui contient mes documents personnels, ma musique, mes photos, etc..) dans mon appartement.
Rsync est un logiciel qui construit des sauvegardes incrémentales, c’est à dire qu’il transfert entre chaque sauvegarde que le delta observé entre les 2.
Les machines concernées sont sous Ubuntu Server 7.10 mais l’article reste valide pour toute Ubuntu ou Debian.

Sauvegarde locale

La sauvegarde locale consiste à sauvegarder certains répertoires d’un disque vers un autre disque, dans la même machine (mon serveur de fichiers en l’occurrence) de manière périodique (toutes les semaines).
En l’occurrence sur la partition /dev/hda1 j’ai les répertoires /home /var /etc à sauvegarder; pour cela j’ai la partition /dev/sda2 (sur un disque différent donc) qui est montée sur le pointe de montage /backup
Ainsi mon script cron (sauvegarde.sh, executable bien sûr) à lancer toutes les semaines est le suivant :

#!/bin/sh
#############################
# SAUVEGARDES LOCALES #
#############################
#sauvegarde du repertoire etc
rsync -avz –delete /etc /backup/
#sauvegarde du repertoire var
rsync -avz –delete /var /backup/
#sauvegarde du repertoire home
rsync -avz –delete /home /backup/

L’option “-avz” signifie que la sauvegarde (le transfert) des fichiers sera récursif; les fichiers seront tranférés en mode “archive” qui garantit que les les liens symboliques, les attributs,les permissions, les droits, etc… seront préservés lors du transfert; de plus une compression sera utilisée lors du tranfert (qui n’affectera pas vos fichiers)
l’option “–delete” signifie elle que lorsque l’on supprimera un fichier sur /etc par exemple, il devra être supprimé aussi de /backup/etc/ lors de la sauvegarde. (si vous ne mettez pas cette option, votre /backup risque de se remplir très rapidement !!!)

Mise en place du “job” cron

Pour appeler le script de sauvegarde sauvegarde.sh, il faut l’indiquer dans une table cron; pour cela je vous renvoie au tutoriel cron d’ubuntu-fr.org
En particulier, le script de sauvegarde doit être lancé par un utilisateur ayant accès à l’ensemble du système de fichiers.
Plutôt que d’utiliser root, nous allons créer un nouvel utilisateur , “sauvegarde” qui fera partie du groupe root, et autres groupes utilisateurs nécessaires pour qu’il puisse sauvegarder l’ensemble des répertoires spécifiés.
Son “home directory” sera /backup
% sudo useradd -d /backup -g root -G anthony sauvegarde
donnez lui l’appartenance de ce répertoire:
% sudo chown -R sauvegarde:root /backup
Ainsi, le script sauvegarde.sh doit être accessible et lancé par notre nouvel utilisateur sauvegarde; pour cela, créez une nouvelle crontab pour l’utilisateur sauvegarde :

% sudo crontab -u sauvegarde -e

Votre éditeur (vi ou emacs) se lance, insérez la ligne suivante :
@weekly /chemin_ou_situe/sauvegarde.sh #sauvegarde

çà y est !
votre sauvegarde locale est créée, vous être à l’abri du crash du disque contenant /home /etc et /var !!
Mais si votre machine est victime d’une surtension,et que tous les disques sont endommagés, vous perdrez tout !!!

Sauvegarde distante

Pour se prémunir d’un dégât, d’un vol, d’un incendie, il faut sauvegarder vos données vers une machine distante.
Si vous possédez un serveur dédié (ou si un ami ou autre personne de confiance vous donne accès à son serveur) vous pouvez alors mettre en place une solution de sauvegarde distante.
Pour cela, compléter le fichier sauvegarde.sh en y rajoutant ces lignes :

#############################
# SAUVEGARDES DISTANTES #
#############################
serveur=”mon.serveur.dedie.fr”
#sauvegarde du repertoire home
rsync -avz –delete /backup/home $serveur:/backup/
#sauvegarde du repertoire etc
rsync -avz –delete /backup/etc $serveur:/backup/
#…

Comme vous pouvez le constater, avec rsync, une sauvegarde locale ou distante est traitée de la même manière, la syntaxe est identique, au $serveur: près.
Bien entendu pour que tout ceci fonctionne, vous devez, sur la machine distante, créer un utilisateur sauvegarde , avec pour “home directory” /backup (répertoire à créer sur la machine distante).
% sudo useradd -d /backup sauvegarde
donnez lui l’appartenance de ce répertoire:
% sudo chown -R sauvegarde:sauvegarde /backup
donnez à votre utilisateur sauvegarde un mot de passe (fort de préférence) :
% sudo passwd sauvegarde
Aussi, pour permettre à votre machine locale de se connecter à la machine distante, sans intervention de votre part (sans demander de mot de passe donc) vous devez créer un couple de clés DSA.
Sur la machine locale, logguez vous en utilisateur sauvegarde :
% sudo su sauvegarde
et créez votre couple de clés DSA :

$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/backup/.ssh/id_dsa):
Created directory ‘/backup/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /backup/.ssh/id_dsa.
Your public key has been saved in /backup/.ssh/id_dsa.pub.
The key fingerprint is:
XXXXXXXXXXXXX sauvegarde@machine

Acceptez l’emplacement par défaut pour la création des clefs, et appuyez sur entrée lorsque l’on vous demande une “passphrase” (comme çà, nul besoin de saisir de mot de passe pour utiliser la clef).
Il n’y a plus qu’à partager la clef publique générée avec la machine distante :
toujours loggué en utilisateur sauvegarde sur la machine locale :
ssh-copy-id -i ~/.ssh/id_dsa.pub sauvegarde@machine_distante
C’est fini, votre utilisateur sauvegarde, sur la machine locale, pouvant se logguer sur la machine distante, votre script cron, sauvegarde.sh, sera lancé toutes les semaines sans problème afin de sauvegarder localement et à distance vos données importantes.
Vos commentaires sont les bienvenus !

Références :
le site officiel de Rsync
Formation Debian : accès par ssh

Créer une iso avec linux (à partir d’un répertoire)

Lundi, décembre 10th, 2007

Mise à jour ! mkisofs n’est plus maintenu depusi 2002, c’est un alias vers genisoimage (ce qui ne remet pas en question le tutorial ci-dessous)
Rien de plus simple !
Avec une Debian ou une Ubuntu bien configurée, on installe le paquet mkisofs (avec sudo ou directement en root):
% sudo apt-get install mkisofs
Pour créer une iso test.iso avec pour racine /home/anthony/test (et contenant donc tout ce qu’il y a dans ce répertoire) :
% mkisofs -o test.iso /home/anthony/test
et l’iso est créée dans le répertoire courant !
Pour vérifier que votre iso est valide, vous pouvez la tester en la montant sur votre système de fichiers :
% sudo mount -t iso9660 test.iso repertoire_test -o loop
Y a t’il tout ce que l’on y a mis ?
ls -al repertoire_test
OK ? alors on démonte
% sudo umount test.iso
et on grave ou stocke l’iso !!

Important !
Si vous volez suavegarder un répertoire avec des noms de fichiers longs et/ou de nombreux répertoires imbriqués, alors ces quelques options vous seront utiles :
% genisoimage -R -r -J -joliet-long --hide-rr-moved -iso-level 4 -V "UnLabelPourIso" -o monimage.iso rep_a_sauvegarder

Références :
La page du projet mkisofs
Monter une image Iso par Andesi
Graver en console par Formation Debian

Installation de Java 5 et Tomcat 5.5 sur Ubuntu avec apt

Mardi, septembre 4th, 2007

Avant la licence DLJ, pour installer Java sur Ubuntu il fallait télécharger un installateur binaire, ou utiliser un RPM (qu’il fallait auparavant “alieniser”); autant dire qu’on pouvait dire adieu au système de dépendance et de remise à jour de sa distrib linux préférée…
Mais les temps ont changé et Sun a choisi de libérer peu à peu son langage phare…
Aussi il existe désormais dans les dépôts multiverse le paquet “sun-java5-jdk”, que l’on installe le plus simplement du monde avec :
#apt-get install sun-java5-jdk
Ah oui, il faut accepter la fameuse licence DLJ à la fin de l’installation…
Par contre, pour Tomcat (dont les paquets sont dans le dépot universe), il faut faire attention…
Il se trouve que les dépendances du paquet “tomcat5.5″ référencent non pas la JDK de Sun, mais bien la JDK libre gij, aussi un malheureux :
#apt-get install tomcat5 tomcat5-admin tomcat5-webapps vous installera certes Tomcat 5.5 mais aussi gij, et sera configuré pour utiliser gij.
Si vous voulez, comme moi, utiliser Tomcat 5.5 avec la JDK Sun (je n’ai rien contre la gij, mais elle ne me semble pas encore mature, par exemple, il n’est pas possible d’utiliser le “security manager” de Tomcat avec gij), il vous faudra modifier certains fichiers.
A commencer par /etc/default/tomcat5, décommentez la ligne :
JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
Cela permettra à Tomcat de démarrer avec la JDK de Sun.
Pour le reste, mettez par défaut votre JAVA_HOME à /usr/lib/jvm/java-1.5.0-sun en exécutant :
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
Enfin, il existe un répertoire, /etc/alternatives , qui contient des liens symboliques vers des logiciels par défaut de votre distribution.
Repérez les liens vers tout ce qui commence par java :
ls -al /etc/alternatives/java*
vous verrez notamment que java et javac (le compilateur) pointent vers gij et gcj…
Il vous faut pour être sûr de toujours travailler avec la JDK de Sun, refaire ces liens en tapant, dans le répertoire /etc/alternatives :

#rm java
#ln -s /usr/lib/jvm/java-1.5.0-sun/bin/java
#rm javac
#ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javac

Après cela, vous ne devriez plus entendre parler de gij, et bénéficier des mises à jour de Tomcat5.5 et de la JDK Sun 5

Pour ce billet, je me suis beaucoup inspiré de la page Tomcat de Ubuntu-fr.org dont je vous recommande la lecture en cas de problème…