Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

N'oubliez pas de cocher la case « Ajustement pour l'heure d'été » dans votre profil.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

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.

#1 Le 07/01/2018, à 16:52

0wen

[Résolu] Un script qui se teste lui-même ?

Bonjour camarades libristes,

Pour la sécurité de mon ordinateur, j'ai écrit un script de sauvegarde du home sur un DD externe.
Je souhaiterais qu'après une nouvelle sauvegarde, le script supprime l'ancienne, mais uniquement s'il a pu exécuter les commandes précédentes sans erreur.
En effet, il y a plusieurs commandes dans ce script, et certaines s'exécutent même si la précédente a bogué.

Existe-t-il une commande de test pour ça ?
Ou bien une option qui stoppe la procédure si tout n'est pas exécuté normalement ?

Merci de toute la considération que vous apporterez à ma demande.

Dernière modification par 0wen (Le 07/01/2018, à 19:17)

Hors ligne

#2 Le 07/01/2018, à 16:57

bruno

Re : [Résolu] Un script qui se teste lui-même ?

Bonjour,

Comme on dit en anglais : « Show us the code » (montre-nous ton code)

Il suffit de tester le retour de chaque commande dans ton script. Si une commande échoue on arrête le script et on envoie un message d'erreur, sinon on continue.

Hors ligne

#3 Le 07/01/2018, à 17:07

0wen

Re : [Résolu] Un script qui se teste lui-même ?

Merci d'avoir répondu aussi rapidement !
Voici mon code :

#!/bin/bash

thedate=$(date +%Y.%m.%d)

mkdir /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu-

cp /etc/apt/sources.list /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu-
dpkg --get-selections > /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu-/liste_des_paquets
cp -R -v /home /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu-

mv /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu- /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu-$thedate

Je voudrais placer un rm -r -f après la dernière commande (mv).

Hors ligne

#4 Le 07/01/2018, à 17:48

Hizoka

Re : [Résolu] Un script qui se teste lui-même ?

Salut, un truc dans ce genre ?

thedate=$(date +%Y.%m.%d)

mkdir /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu- || { echo "Une erreur est survenu avec mkdir"; exit 1; }

cp /etc/apt/sources.list /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu- ||  { echo "Une erreur est survenu avec le 1er cp"; exit 1; }
dpkg --get-selections > /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu-/liste_des_paquets ||  { echo "Une erreur est survenu avec dpkg"; exit 1; }
cp -R -v /home /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu- || { echo "Une erreur est survenu avec le 2e cp"; exit 1; }

mv /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu- /media/vsc/Elements/AMOI/Sauvegarde_Ubuntu-$thedate || { echo "Une erreur est survenu avec mv"; exit 1; }

rm -rf "le dossier à supprimer"

Dernière modification par Hizoka (Le 07/01/2018, à 17:49)

Hors ligne

#5 Le 07/01/2018, à 19:17

0wen

Re : [Résolu] Un script qui se teste lui-même ?

Hozika,
J'ai testé ta solution et ça m'a l'air de très bien faire ce que je demandais. Merci !
Il n'y a que le mkdir qui réagit parfois bizarrement : lorsque je lance le script 2 fois de suite, le 2e dossier Sauvegarde_Ubuntu- est créé dans le 1er Sauvegarde_Ubuntu-2018.01.07, et il n'y a pas d'erreur d’exécution.
À la 3e exécution j'ai bien un message d'erreur cependant.
Mais c'est dû soit à mon script soit à la commande elle-même.
Merci encore !

Hors ligne

#6 Le 07/01/2018, à 19:41

pingouinux

Re : [Résolu] Un script qui se teste lui-même ?

Bonsoir,
Ce n'est pas mkdir qui est en cause en cas d'exécution multiple, mais mv.
Si tu ajoutes les minutes et secondes dans la date, tu ne devrais plus avoir ce problème.

thedate=$(date +%Y.%m.%d.%M.%S)

Mais pourquoi ne pas écrire directement dans le bon répertoire (celui avec la date), pour éviter le mv ?

Remarque :
Si tu commences ton script ainsi

#!/bin/bash
set -e

il s'arrêtera à la première erreur.

En ligne

#7 Le 07/01/2018, à 20:00

0wen

Re : [Résolu] Un script qui se teste lui-même ?

Merci pingouinux pour ta remarque !
Concernant le mv tu as raison ; c'est juste qu'avant que je me soucie de faire ces tests d'erreur, je préférais que le fichier ne soit correctement nommé que si la copie du home s'était bien passée.

Hors ligne