Si vous utilisez Mac OS X, rsync fait déjà partie de l'installation par défaut. Il en est probablement de même pour les distributions de Linux les plus populaires. Sur OpenBSD, vous pouvez l'installer avec la commande :
sudo pkg_add rsyncen supposant que vous avez déjà configuré sudo et que la variable d'environnement PKG_PATH est définie.
Alors voici, j'ai un Macbook qui fonctionnne sous Mac OS X et il est relié à deux disques durs externes : Hercule et Astro. Il y a plusieurs dossiers et quelques fichiers de configuration (les dotfiles) que je veux copier. Le script ressemble à ceci.
Mis à jour le 12 mars 2009:
#!/bin/sh
# This script makes a backup of important files in
# my home directory to two external hard drives,
# Hercule and Astro, using rsync.
OPTS="-avuzC --delete --exclude-from=$HOME/.rsync/excludes"
FOLDERS="Desktop Documents Music Movies Programmes Sites \
Applescripts Pictures Jeux Library/Colorsync \
Library/Thunderbird .rsync"
FOLDER1="Library/Application Support"
BACKUPDIR="Macbook backup"
DOTFILES="$BACKUPDIR/dotfiles"
FILES=".emacs .vimrc .profile"
VOLUMES="/Volumes/Astro /Volumes/Hercule"
for v in $VOLUMES; do
if [ -d "$v" ]; then
if [ ! -d "$v/$BACKUPDIR/Library" ]; then
mkdir -p "$v/$BACKUPDIR/Library"
echo "created directory" "$v/$BACKUPDIR/Library"
fi
for d in $FOLDERS "$FOLDER1"; do
rsync $OPTS "$HOME/$d/" "$v/$BACKUPDIR/$d/"
done
if [ ! -d "$v/$DOTFILES" ]; then
mkdir "$v/$DOTFILES"
echo "created directory" "$v/$DOTFILES"
fi
for f in $FILES; do
rsync $OPTS "$HOME/$f" "$v/$DOTFILES/$f"
done
else
echo "ERROR:" "$v" "not mounted"
fi
done
Et le fichier .rsync/excludes contient.DS_StoreTout d'abord, on définit les options pour rsync :
.depend
*.aplibrary
.localized
- a : le mode archivage (c'est ce qui convient le mieux pour les copies de sauvegarde)
- v : afficher les opérations effectuées à l'écran
- u : update, i.e. : si un fichier sur dans la copie de sauvegarde est plus récent que celui sur le Macbook, on ne le recopie pas
- z : compresser les données
- C : exclure tous les fichiers normalement exclus par CVS (e.g. : *.o, *~, *.a)
- --delete : si un fichier a été effacé du Macbook, l'effacer du dossier de sauvegarde
- --exclude-from : précise le nom du fichier contenant la liste des exclusions
Le dossier Library/Application Support a sa propre variable car j'obtiens des erreurs si je l'inclus dans la liste FOLDERS. J'ai essayé de l'inclure avec des guillemets, en échappant l'espace (Library/Application\ Support) mais rien ne fonctionnait. Si quelqu'un sait comment faire en sorte que je puisse include ce dossier dans la liste avec les autres, faites-moi le savoir.
Je mets les fichiers de configuration dans un dossier nommé dotfiles que je crée s'il n'existe pas déjà.
J'ai copié le script dans un dossier qui fait partie de mon $PATH. Voilà ! C'est fait ! Des copies de sauvegarde facile en tapant backup dans un terminal. La magie de rsync, c'est que le logiciel ne recopie que les fragments de fichiers qui ont été modifiés depuis la dernière sauvegarde. Donc le processus est très rapide en général (sauf la première fois que le script fonctionne puisqu'il doit alors copier l'ensemble des fichiers).
Prochaine étape : synchroniser mon Macbook et mon ordinateur de bureau roulant sous OpenBSD avec Unison...
Aucun commentaire:
Enregistrer un commentaire