Bonjour
fetchy et les autres.
Je viens de tomber par hasard sur ton post. Je suis dans le même processus que toi. Je n'ai pas trouvé ce qui me convient en matière de sauvagarde.
J'ai un portable et mon besoin est de pouvoir sauvegarder sur une ressource externe. Donc j'ai décidé de m'y coller. Pour l'instant j'ai travallé sur le fait de vérifier que la ressource qui recevra la destination est connecté au PC. Je vérifie également qu'on est bien en root au moment de l'execution de mon script.
Je veux pouvoir décider quand je fais une sauvegarde : lorsque j'ai produit un travail précieux par exemple. Je veux que ça gère les 'full' (complètes) et les incrémentales. Mais je veux aussi gérer des sauvegardes automatiques.
Si tu es intéressé, j'ai commencé à traiter le fait de controler que le media est réellement connecté, car si tu sauvegarde dans /media/disk1 (au hasard) qui est un point de montage et que rien n'y est connecté ça va écrire dans le répertoire en question sans produire de message d'erreur, et quand ce sera plein tu ne pourras plus démarer ta machine. Je te propose le script sur lequel je travaille qui n'est que le début. Avant que ne soit lancé la sauvegarde.
Le repérage du média se fait en utilisant la commande 'blkid'. Il faut être root pour la lancer.
#/bin/bash
####################################################################
# Script qui détermine le support de masse
# connecté à la machine.
# Ceci permet de déterminer si on peut
# lancer la sauvegarde dessus.
####################################################################
####################################################################
# Constantes
ID=471E-3340 # Identifiant de votre disque de sauvegarde (blkid)
Ok=0
FinOK=0
PasRoot=2 # Si pas lance par 'root'
DisqueConnecte=0 # Si disque de sauvegarde connecte
DisqueNonConnecte=1 # Si disque de sauvegarde non connecte
Debug=1 # 1 pour activer mode DEBUG (sinon 0)
####################################################################
# Nom : Debug
# But : Si la Constante est = à 1 affiche le message qui suit
# entre crochets. Permet de passer en mode debug ou non
# en modifiant la Constante 'Debug'
# Usage : Debug 'Message a afficher'
# Ex. : Debug 'Bonjour le monde'
function Debug {
if [ "$Debug" == "1" ]; then
echo $1
fi
}
####################################################################
# Nom : SiRoot
# But : Verifie que c'est root qui a lance le script. Si ce n'est
# pas le cas le script se termine en retournant un code de
# sortie = 1
# Usage :
# Ex. :
function SiRoot {
if [ "$(whoami)" != "root" ]; then
return $PasRoot
fi
echo $FinOk
Debug "C'est bien root qui a lancé"
}
####################################################################
# Nom : DisqueConnecte 'UUID du disque'
# But : Voir si le disque est connecte
# Usage :
# Ex. : DisqueConnecte 'Odb87c7-5624-465b-be26-50ca6fb392db'
function DisqueConnecte {
DisquePresent=$(blkid | grep $ID)
Retour=$?
if [ "$Retour" != "0" ]; then
echo $DisqueNonConnecte
else
echo $DisqueConnecte
fi
}
# Exemple de mise en oeuvre
SiRoot
RessourcePresente=$(DisqueConnecte)
if [ "$RessourcePresente" == "$Ok" ] ;then
Debug "La ressource de sauvegarde est connectee"
# On peut lancer la sauvergarde
else
Debug "La ressource de sauvegarde n'est pas connectee"
# On sort
fi
Ce qui est important c'est l'idée.
Je vais étudier ton code pour l'intégrer dans le mien. J'écris de façon ouverte, par fonction afin d'avoir un code documenté et lisible par tous.
A bientôt.
Linuxement ;O)