@christophe C :
En gros je suis d'accord avec toi, il vaut mieux faire simple et clair. Personnellement, pour mes sauvegardes, je préfère me prendre la tête une fois pour toutes pour avoir un script qui fait pas de fioritures, et qui se cantonne ensuite à se que je lui ai demandé.
D'un autre côté, tu sembles un peu trop virulent avec des commandes trop simplistes : imagine une sauvegarde de 500Go chaque semaine avec un
rm et un
cp, de quoi se tirer une balle !
Utilise au moins
rsync afin d'éviter de retransférer systématiquement les données déjà présentes sur ton disque.
rsync propose des tas d'options pour rendre 2 répertoires identiques (ajout de nouveaux fichiers, remplacement de fichiers modifiés, suppression ou pas d'anciens fichiers, ...).
Bref, sans rentrer dans les détails, et pour proposer quelque chose de simple mais d'un peu plus élaboré, voici ce que j'utilise personnellement.
J'ai déposé le script suivant à la racine de mon disque dur externe :
#!/bin/bash
DIR_ROOT="$(dirname $0)"
archive() {
local DIR_ARCHIVES="$DIR_ROOT/Archives/$(date +%y%m%d-%H%M)"
mkdir -p "$DIR_ARCHIVES"
cp -al "$DIR_ROOT/current"/* "$DIR_ARCHIVES"/
}
[ -d "$DIR_ROOT/current" ] && archive
mkdir -p "$DIR_ROOT/current"
chmod 755 "$DIR_ROOT/current"
synchro() {
echo "==============================================================================="
echo "Synchronisation de $1"
rsync -azH --delete --stats "$1" "$DIR_ROOT/current/" 2>&1 | tee "$DIR_ROOT/current/$(basename "$1").log"
}
synchro /home
synchro /data/freeftp
synchro /data/mysql
synchro /data/virtualBoxShare
synchro /data/vrac
synchro /data/www
synchro /data/sys
synchro /data/sauv
synchro /data/documents
Ainsi, quand je branche mon disque dur externe, je n'ai qu'à lancer ce script et il lance une synchro de ce qu'il a à sauvegarder et basta.
En fait, j'ai plusieurs disques durs externes de 500 Go. Chacun a donc sa version du script : certains synchronisent /home, d'autres synchronisent /data/grosFichiers (pour pas rentrer dans les détails 😉), bref, il suffit de paramétrer chaque script une fois pour toutes pour chaque disque dur, et après on oublie : chaque disque dur a sa synchro de configurée et on a juste à penser à lancer le script à la racine du disque externe quand on le branche...
Plus de détails sur le script en question :
Il décompose le disque en 2 répertoires :
current et
Archives.
Au premier lancement, il crée le répertoire
current et y synchronise ce qu'on lui demande.
Aux lancements suivants, il effectue une copie de
current dans un sous-répertoire daté du répertoire
Archives, puis synchronise
current.
Vous me direz qu'au bout de quelques copies de
current dans
Archives le disque sera plein ; c'est là la petite astuce : il s'agit d'une copie des fichiers en lien durs (hard links ; option
-l de la commande
cp) : en 2 mots, on duplique le fichier mais pas le i-nœud sur le disque, ce qui fait qu'une copie d'un fichier de plusieurs Gigas ne prend que quelques Kilos. Ainsi, on garde en plus l'évolution des sauvegardes dans le temps, et on ne perd aucun fichier.
Cela implique juste un disque dur formaté en
ext (2, 3 ou 4).
Pour les Windoziens que ça rebute et qui tiennent à leur disque dur en NTFS, vous désactiver juste l'archivage au sein du script (ligne 11) pour ne laisser que la synchro, et voilà...
Alors pour résumer, ce script ne fait pas la même chose que celui de Bazoo, car il ne pose pas de question, il n'y a pas de couleurs, et se cantonne à ce qu'on lui a demandé de faire une fois pour toutes.
A choisir selon ses besoins. 🙂