Pages : 1
#1 Le 12/05/2008, à 15:10
- Astier
Script sauvegarde sur clé USB
Bonjour,
Alors je viens de me créer un petit script perso pour sauvegarder manuellement ce que je ne veux pas perdre :
#!/bin/sh
#Date
Date="date +%d_%m_%y"
#Dossiers temporaires
TempDir="/home/bbrice/"Temp_$($Date)""
Temp="$TempDir/Sauvegarde"
#Sauvegarde Temp
SauvTemp="/home/bbrice/"Temp_$($Date)"/"Sauvegarde_$($Date).tar.gz""
#Dossier sauvegarde
Sauv="/media/CLE2/Sauvegarde"
#Création du répertoire temporaire
mkdir -p $Temp
#Copie des fichiers à sauvegarder
cp -Rv /home/bbrice/.mozilla $Temp ;
cp -Rv /home/bbrice/.mozilla-thunderbird $Temp ;
cp -Rv /home/bbrice/Documents $Temp ;
cp -Rv /home/bbrice/sandbox $Temp ;
cp -Rv /home/bbrice/.config/gmusicbrowser/ $Temp ;
cp -Rv /home/bbrice/texmf $Temp ;
cp -v /home/bbrice/.emacs $Temp ;
cp -v /home/bbrice/.bashrc $Temp ;
cp -v /home/bbrice/quote-from-bashfr.sh $Temp ;
cp -v /home/bbrice/.conkyrc $Temp ;
cp -Rv /home/bbrice/.ncmpc $Temp ;
cp -v /etc/fstab $Temp ;
cp -v /etc/apt/sources.list $Temp ;
cp -v /etc/mpd.conf $Temp ;
cp -v /etc/X11/xorg.conf $Temp ;
#Déplacement dans $Temp
cd $TempDir
#Création de l'archive
tar cvzf "Sauvegarde_$($Date).tar.gz" Sauvegarde
#Déplacement vers CLE2
mv -v $SauvTemp $Sauv
#Modification permissions
chmod -R +w $Temp
#Suppression des fichiers temporaires
rm -R $TempDir
Avant de poursuivre : la modification des permissions est nécessaire puisque certains fichiers me sont logiquement accessible en lecture seule. A moins que rm puisse prendre un argument afin d'ignorer les permissions (j'ai regardé le man mais n'ai pas trouvé ) ?
Alors j'ai surtout une question : j'aimerai que le script vérifie si la clé USB est bien présente avant de se lancer. Je précise que j'ai attribué un label (CLE2) à la clé en question. J'ai donc pensé à extraire le résultat de
15:59:06 bbrice@debian:~ $ mount | grep CLE2
/dev/sda1 on /media/CLE2 type vfat (rw)
mais j'ignore comment faire par la suite pour soit demander de monter la clé soit de poursuivre le script.
Sinon, est-il possible de faire en sorte que tous les résultats des commandes effectuées (option verbose) soient copiés dans un fichier qui lui ne serait pas effacé ? Pas de problème pour créer ce fichier avec la commande touch mais je ne vois pas comment intégrer les résultats dans ce fichier.
De plus, je suis loin d'être un spécialiste donc le code peut s'en doute être amélioré ; toute remarque et idée d'amélioration sera acceptée avec reconnaissance
Merci, à bientôt.
Hors ligne
#2 Le 12/05/2008, à 15:57
- toufalk
Re : Script sauvegarde sur clé USB
Pour le test, un truc du genre
if mount | grep CLE2 &>dev/null
then echo "la clé est montée"
else echo "la clé n'est pas montée"
fi
Pour le fichier de log, je pense que tee est ce que tu cherches...
Hors ligne
#3 Le 12/05/2008, à 16:35
- Astier
Re : Script sauvegarde sur clé USB
Pour le test, un truc du genre
if mount | grep CLE2 &>dev/null then echo "la clé est montée" else echo "la clé n'est pas montée" fi
Pour le fichier de log, je pense que tee est ce que tu cherches...
Ok mais pourrais-tu m'expliquer ce que l'on fait réellement avec la première ligne ? Il me semble que l'on renvoie l'information obtenue vers /dev/null (= "trou noir") : comment alors détermine-t-on le résultat (monté / pas monté) ?
Je vais regarder du côté de tee.
Merci, à+
Hors ligne
#4 Le 13/05/2008, à 13:48
- Astier
Re : Script sauvegarde sur clé USB
Pour le test, un truc du genre
if mount | grep CLE2 &>dev/null then echo "la clé est montée" else echo "la clé n'est pas montée" fi
Pour le fichier de log, je pense que tee est ce que tu cherches...
N'y aurait-il pas d'ailleurs une erreur dans la première ligne proposée ? Ne serait-ce pas plutôt
if mount | grep CLE2 &>/dev/null
, mais je vois mal encore comment le script récupère l'information On n'a pas besoin de traiter le résultat de la commande
mount | grep CLE2
ou ta commande fait cela ?
Merci encore. A+
Hors ligne
#5 Le 14/05/2008, à 02:37
- un passant
Re : Script sauvegarde sur clé USB
"if mount | grep CLE2 &>/dev/null" marche grace au code erreur de grep, c'est 0 => faux s'il na pas trouvé, et probablement 1=>vrai s'il a trouvé.
suggestions :
-Utiliser zenity pour afficher un dialogue :
while mount | grep CLE2 &>/dev/null ; do zenity --question --text "CLE2 non monté. Recommencer ?" || exit ; done
### faire le backup
- utiliser l'option -j au lieu de -z avec tar pour faire un .tar.bz2
- utiliser l'option -T avec tar pour mettre les fichiers à sauvegarder dans un fichier texte à part :
liste.txt:
/chemin/fichier
/autrechemin/dossier
tar cjvf "Sauvegarde_$($Date).tar.gz" -T liste.txt
#6 Le 14/05/2008, à 16:23
- Astier
Re : Script sauvegarde sur clé USB
Je comprends pas trop ce que tu écris à propos du fichier liste.txt (avec les chemins)
Sinon, je pensais à zenity en effet mais ça sera pour plus tard je pense.
J'aimerai en savoir plus sur les "boucles" : en effet, si la clé est montée le script doit se poursuivre, sinon il doit reprendre au début ou arrêter en fonction du choix de l'utilisateur. Comment intégrer le code proposé par toufalk et mon script.
Merci encore, à+
Hors ligne
#7 Le 15/05/2008, à 03:27
- un passant
Re : Script sauvegarde sur clé USB
liste.txt est juste un exemple, il suffit de mettre une liste de fichier et dossiers dedans et, avec l'option "-T liste.txt", ils seront mis dans l'archive.
sinon le script :
#!/bin/sh
Date="date +%d_%m_%y"
while ! mount | grep CLE2 &>/dev/null ; do zenity --question --text "CLE2 non monté. Recommencer ?" || exit ; done
tar cjvf /media/CLE2/Sauvegarde/"Sauvegarde_$($Date).tar.gz" -T /home/machin/A_Sauvegarder.txt
devrait marcher, en utilisant la liste de fichiers et dossier : /home/machin/A_Sauvegarder.txt
La boucle marche avec le while : l'instruction "! mount | grep CLE2 &>/dev/null" est répétée tant qu'elle ne trouve pas CLE2. Le '!' permet de faire une négation, sinon ça serait répéter tant que CLE2 est trouvée.
|| veut dire OU, l'instruction suivant || (ici exit) n'est executé que quand l'instruction précédente (zenity) renvoie 0, c'est à dire lorsqu'on répond non => exit => quitte le script. Si on répond oui, exit n'est pas exécuté et la boucle continue => execute "mount | grep CLE2 &>/dev/null" ...
Voilà, ça pourrait être plus clair, mais bon...
#8 Le 16/05/2008, à 13:46
- Astier
Re : Script sauvegarde sur clé USB
OK merci pour ces explications. C'est vrai aussi que de passer par un fichier texte pour créer l'archive me semble plus intelligent ; je ne connaissait pas cette possibilité.
Par contre comment faire par exemple pour faire un truc plus "interactif" du genre :
- lancement --> voulez-vous continuer ? --> Oui/Non
- vérification de la clé --> clé montée --> Poursuivre / Annuler
--> clé absente --> la monter / Annuler
Merci encore pour vos réponses. A bientôt.
Hors ligne
Pages : 1