Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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é hmm ) ?

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 smile


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

toufalk a écrit :

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

toufalk a écrit :

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 hmm 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) hmm

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