Linux Ubuntu 10.4 Lucid Lynx : script de sauvegarde et script d'installation idempotent
Par François Lasselin le mardi, avril 27 2010, 07:00 - Linux-Ubuntu - Lien permanent
Une nouvelle version d'Ubuntu linux est publiée tout les 6 mois. La 10.4: Lucid Lynx est attendue le 29 Avril 2010. Si la montée de version peut se réaliser grâce à une grosse mise à jour (avec plus ou moins de succès). Il n'est pas inutile d'installer ou de réinstaller en faisant place nette. Après tout, c'est la période du nettoyage de printemps. Sauvegarde des données, installation du système, installation des logiciels, configuration, rétablissement des données ... Ces opérations peuvent être automatisées pour permettre le déploiement d'une nouvelle machine en 1 heure. Démonstration et explication :
Dans ce blog, lisez également:
Attention : Une nouvelle version est disponible : Linux Ubuntu 10.10 Maverick Meerkat
Après les pc Windows et les Mac d'Apple, le système d'exploitation le plus répandu sur ordinateur est Ubuntu (environ 12 millions d'utilisateurs), basé sur le noyau linux, c'est un système d'exploitation open-source.
Ubuntu est une distribution linux. Pour faire simple, une distribution est une sélection d'applications linux emballées (dans des paquets) pour faciliter l'installation. Le but est de proposer aux utilisateurs un ensemble stable et cohérent. Ce système de paquet rend la distribution et le téléchargement d'application simple. Ubuntu hérite du système de paquet Debian (Ubuntu est une déclinaison de la distribution Debian). Le principe des "market place" en est une extension. On cherche dans un catalogue, on déclenche le téléchargement et l'application s'installe. A la différence des "market place", sous Ubuntu, on est dans un environnement ouvert :
- les sources qui alimentent le catalogue sont personnalisables
- chacun peut distribuer ces propres applications.
- on peut télécharger sans installer
On verra techniquement comment cela se concrétise.
Tout ça est séduisant, mais refaire plusieurs dizaine de recherche/téléchargement/installation pour installer les dernières versions des logiciels qu'on utilise ... un peu lourd comme opération. De nombreuses raisons justifient l'automatisation d'un script d'installation:
- gagner du temps
- installer les dernières versions pour plus de fonctionnalités et de sécurité
- ne rien oublier
La sauvegarde des données avec rsync
Rsync (remote synchronization) est un logiciel libre créé en 1996 par Andrew Tridgell. Andrew a mis au point un algorithme de compression longue distance capable de repérer les redondances dans des fichiers volumineux. Rsync est basé sur cet algorithme ce qui en fait un outil extrêmement efficace pour les opérations de sauvegarde ou de synchronisation. Il est donc tout à fait indiqué pour réaliser une sauvegarde de données avant un formatage ou (conseil) périodiquement.Le but du script est de sauvegarde des répertoires précis vers un volume de stockage externe (disque externe, ordinateur en réseau, ...)
Que sauvegarder ?
- le bureau : sur lequel a tendances à s'accumuler tout un bazar ...
- le profil du navigateur (favoris, mots de passe, historiques ...
- les mails
- gnupg pour ne pas perdre les clefs
- les répertoires documents, images, ...
- profil de messagerie instantanée
Le script suivant récupère en paramètre le chemin de destination de la sauvegarde, puis synchronise chacun des répertoires avec la cible.
Le paramètre "-- delete" est utilisé pour effacer de la destination ce qui n'est pas dans la source. Cela arrive quand on fait plusieurs sauvegardes espacées dans le temps. Des fichiers peuvent être supprimés suite à un nettoyage. Pour ne pas perdre le bénéfice de ce nettoyage, on supprime les fichiers de la sauvegarde ne se trouvant plus dans la source.
# utiliser -e pour un shell distant (pour une sauvegarde via réseau
#!/bin/sh
echo " -- Script a lancer sur l'ordinateur contenant les donnees -- "
while [ ! $CHEMIN ]
do
echo "Entrez le chemin de destination : "
echo "(exemple: user@ip:/home/user ou /media/disk-externe/save) "
echo "sans / final"
read CHEMIN
done
rsync -va --progress --stats --delete ~/Bureau/ ${CHEMIN}/Bureau/
rsync -va --progress --stats --delete ~/.mozilla-thunderbird ${CHEMIN}/.mozilla-thunderbird
rsync -va --progress --stats --delete ~/.gnupg/ ${CHEMIN}/.gnupg/
rsync -va --progress --stats --delete ~/.mozilla/ ${CHEMIN}/.mozilla/
rsync -va --progress --stats --delete ~/Documents/ ${CHEMIN}/Documents/
rsync -va --progress --stats --delete ~/Images/ ${CHEMIN}/Images/
rsync -va --progress --stats --delete ~/.purple/ ${CHEMIN}/.purple/
Le script peut-être réexécuté plusieurs fois. Rsync effectuant une synchronisation, la réexécution sera plus rapide. Le résultat est inchangé. Ce script est idempotent. Ce script est téléchargeable sur la page ressource.
Installation automatisée
Après avoir installé la dernière version d'Ubuntu, on peut maintenant se pencher sur la réinstallation.Si l'essentiel des paquets est présent dans les dépôts de Canonical, il reste néanmoins des applicatifs intéressants distribués sur d'autres dépôts. Il faut donc les ajouter. Problèmes, ajouter des lignes dans un fichier va créer des doublons si on exécute le script plusieurs fois. Or, on souhaite un script idempotent qui permette d'arriver à un résultat quelque soit la situation initiale. Il faut donc tester la présence d'un dépôt avant de l'ajouter. C'est le rôle de la fonction addifabsent. (Remerciement à Benjamin pour ce coup de main).
#!/bin/sh
# Usage : addifabsent 'line' 'file'
addifabsent() {
if ! grep -qFx "$1" "$2" 2>/dev/null
then
echo "$1" >>"$2"
fi
}
Pour donner une certaine pérennité au script, il convient de variabiliser le nom de la distribution. De cette manière, on pourra utiliser le script sur Karmic, sur Lucid puis sur Maverick. Cette variable est utilisée pour sélectionner les dépôts appropriés. Installer des applications à partir d'un dépôt d'une autre version donne généralement des comportements erratiques.
while [ ! $DISTRIBUTION ]
do
echo "Entrez le nom de la distribution dans les dépôts (karmic, lucid,...) : "
read DISTRIBUTION
done
Ensuite, on ajoute les dépôts :
# Pour Opera
wget -O - http://deb.opera.com/archive.key | sudo apt-key add -
addifabsent "deb http://deb.opera.com/opera/ stable non-free" /etc/apt/sources.list
addifabsent "deb http://ftp.crihan.fr/ubuntu/ ${DISTRIBUTION} main restricted" /etc/apt/sources.list
addifabsent "deb http://ftp.crihan.fr/ubuntu/ ${DISTRIBUTION}-updates main restricted multiverse" /etc/apt/sources.list
addifabsent "deb http://ftp.crihan.fr/ubuntu/ ${DISTRIBUTION} universe" /etc/apt/sources.list
addifabsent "deb http://ftp.crihan.fr/ubuntu/ ${DISTRIBUTION} multiverse" /etc/apt/sources.list
addifabsent "deb http://security.ubuntu.com/ubuntu ${DISTRIBUTION}-security main restricted" /etc/apt/sources.list
addifabsent "deb http://security.ubuntu.com/ubuntu ${DISTRIBUTION}-security universe" /etc/apt/sources.list
addifabsent "deb http://security.ubuntu.com/ubuntu ${DISTRIBUTION}-security multiverse" /etc/apt/sources.list
# Medibuntu
wget -q http://fr.packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add -
addifabsent "deb http://fr.packages.medibuntu.org/ ${DISTRIBUTION} free non-free" /etc/apt/sources.list
# pidgin avec les updates (pidgin n'est pas update dans les depots ubuntu):
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 67265eb522bdd6b1c69e66ed7fb8bee0a1f196a8
addifabsent "deb http://ppa.launchpad.net/pidgin-developers/ppa/ubuntu `lsb_release --short --codename` main" /etc/apt/sources.list.d/pidgin-ppa.list
Il faut ensuite, rafraichir la liste des paquets disponibles:
aptitude update
On peut ensuite installer:
echo "- Installation des autres packages:"
Notamment, pour la sauvegarde :
aptitude install -yq rsync
Il est intéressant de regrouper les installations en un nombre de commande minimum, on gagne le temps d'initialisation d'aptitude. Ce qui n'est pas négligeable. Sans tomber dans un catalogue d'applications recommandées, voici des exemples de packages à installer.
(au passage, on notera que l'installation explicite de Gimp n'est pas un hasard. Gimp n'est plus un paquet installé par défaut)
# libc++ pour thunderbird, les 2 ntfs pour gparted
aptitude install -yq python-gnome2-extras libstdc++5 ntfs-config ntfsprogs
# (avant thunderbird)
# desktop
aptitude install -yq language-pack-kde-fr ttf-mscorefonts-installer freemind krdc
ffmpeg unrar unace sunbird-locale-fr sunbird compizconfig-settings-manager
# internet reseau communication
aptitude install -yq firefox thunderbird lightning-extension lightning-extension-locale-fr
mozilla-firefox-locale-fr thunderbird-locale-fr enigmail enigmail-locale-fr pidgin filezilla
flashplugin-nonfree skype kopete opera
# Image son video
aptitude install -yq gimp gimp-help-fr imagemagick inkscape cups-pdf audacity mplayer
smplayer inkscape gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg gtk-recordMyDesktop
vlc kdenlive xsane sound-juicer avidemux
Pour cups-dpf, il faut aller dans Système->Administration->Impression pour ajouter une imprimante de type "Generic-CPS-PDF-Printer".
Ce script est à adapter par chacun en fonction de ses usages. Ce script est téléchargeable sur la page ressource.
La discussion continue ailleurs
URL de rétrolien : http://blog.nalis.fr/index.php?trackback/67
Commentaires
Je n'ai jamais compris pourquoi certains continuent de ne pas séparer / et /home sur deux partitions... On fait bien une partition swap, alors pourquoi se priver d'une home? Je change régulièrement de distro ou de version de distro, mais avec /home à part, mes documents/mail/... sont à l'abri en cas d'erreur du système.
Bonjour,,
En effet, une partition pour /home est une bonne solution mais c'est une stratégie différente. Dans l'optique de faire le ménage, j'y vois 2 inconvénients :
- Toutes les préférences applicatives sont conservées dedans (dans des répertoires cachés). Ainsi, l'intérêt d'une réinstallation complète est diminué. Conserver les paramétrages des anciennes versions avec les nouvelles n'est pas optimal... Sans parler de l'espace disque inutilement utilisé. Le but d'une réinstallation c'est de faire le ménage. Sinon, autant risquer la mise à jour qui si elle échoue n'aura pas d'impact sur le /home.
- Une partition est figée. Autant la taille de la swap optimale est déterminée en fonction de la taille de la RAM; mais déterminer l'espace précis nécessaire aux programmes à installer versus les données n'est jamais facile. Cela engendre nécessairement une marge d'espace inutilisé sur la partition système.
De plus, si avoir ses données sur une partition distincte de celle utilisée par le système prémunie effectivement des problèmes du système. Cela ne dispense pas d'avoir une vraie sauvegarde pour les nombreux autres problèmes potentiels (genre, une destruction du disque ou un formatage de la mauvaise partition à l'install du nouvel OS, etc ... ).
Bonne installation / migration ! :-)
pour palier au problème de dimensionnement de /home et compagnie, LVM est une solution redoutablement efficace.
quoiqu'il en soit, un chouette tuto qui en ravira plus d'un =)
Merci c'est plutôt pas mal.
Il serait bien que tu permettes de télécharger tout le script dans un fichier sans tes explications.
Salut FL,
pour info, dans les nouvelles bubuntu, il y a un /etc/apt/sources.list.d/ qui est un DOSSIER dans lequel on peut mettre plusieurs fichiers qui te permettent d'ajouter tes sources indépendemment les unes des autres.
Cela remplace et simplifie ton système de shell ... :) (et merci pour le lien ;) )
bjr,j installe un serveur ubuntu,version 10.4,mais je veux avoir un interface graphique,quand je lance la commande apt-get update,je recois des message d'erreurs