Simplification de cet algorithme ?

Simplification de cet algorithme ? - Shell/Batch - Programmation

Marsh Posté le 13-04-2021 à 17:27:38    

Salut :hello:
 
Je suis en train de faire un script Bash/Shell permettant de faire une sauvegarde des données de mon conteneur Gitea.
Avant de lancer les commandes, je m'assure que les dossiers nécessaires existent bien, avec cet algorithme :

Si testA=faux OU testB=faux alors  
  Si TestA=faux alors
      On ecrit que le dossier A n'existe pas
  Fin  
  Si TestB=faux alors
      On ecrit que le dossier B n'existe pas
  Fin
  On quitte en donnant un message d'erreur
Sinon
  On écrit que tout va bien, les dossiers existent.
Fin


 
Est-ce qu'il y a moyen de simplifier ça ? (l'algorithme)
 
 
Voilà le code que j'ai fait :
 

Code :
  1. if [ ! -d "$GITEA_BACKUP_DIR" -o ! -d "$GITEA_DATA" ]; then    # Au moins un des dossiers n'existe pas
  2.   if [ ! -d "$GITEA_BACKUP_DIR" ]; then   # Le dossier $GITEA_BACKUP_DIR n'existe pas !
  3.     echo "le dossier $GITEA_BACKUP_DIR n'existe pas !"
  4.   fi
  5.   if [ ! -d "$GITEA_DATA" ]; then       # Le dossier $GITEA_DATA n'existe pas !
  6.     echo "le dossier $GITEA_DATA n'existe pas !"
  7.   fi
  8.   echo "Abandon. Code d'erreur 999"
  9.   exit 999
  10. else
  11.   echo "les dossiers $GITEA_BACKUP_DIR et $GITEA_DATA existent bien. On peut continuer."
  12. fi


 
 
Merci d'avance.
 :hello:


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 13-04-2021 à 17:27:38   

Reply

Marsh Posté le 13-04-2021 à 21:43:19    

Si testA=faux OU testB=faux alors  
  Si TestA=faux alors
      On ecrit que le dossier A n'existe pas
  SINON
      On ecrit que le dossier B n'existe pas
  Fin
  On quitte en donnant un message d'erreur
Sinon
  On écrit que tout va bien, les dossiers existent.
Fin


 
A part ça...

Reply

Marsh Posté le 13-04-2021 à 21:49:26    

rat de combat a écrit :

Si testA=faux OU testB=faux alors  
  Si TestA=faux alors
      On ecrit que le dossier A n'existe pas
  SINON
      On ecrit que le dossier B n'existe pas
  Fin
  On quitte en donnant un message d'erreur
Sinon
  On écrit que tout va bien, les dossiers existent.
Fin


 
A part ça...


Merci :)
Mais là, si jamais les deux dossiers n'existent pas, je ne le saurais pas puisque je n'aurais le message que pour l'un.


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 13-04-2021 à 21:50:57    

Ah euh oui, en effet. Je retire ce que je dis. :o :o

Reply

Marsh Posté le 15-04-2021 à 15:17:34    


foldersmissing = ""
si testA=faux alors
 foldersmissing = "A"
si testB=faux alors
 foldersmissing = foldersmissing + "B"
si foldersmissing != "" alors
 on écrit que foldersmissing est/sont manquants
 on quitte
sinon
 on écrit que tout va bien, les dossiers existent


 
Ca permet d'éviter de faire 2 appels systèmes pour chaque dossier

Reply

Marsh Posté le 15-04-2021 à 15:52:30    

Je@nb a écrit :


foldersmissing = ""
si testA=faux alors
 foldersmissing = "A"
si testB=faux alors
 foldersmissing = foldersmissing + "B"
si foldersmissing != "" alors
 on écrit que foldersmissing est/sont manquants
 on quitte
sinon
 on écrit que tout va bien, les dossiers existent


 
Ca permet d'éviter de faire 2 appels systèmes pour chaque dossier


Ha oui ! Super ça :D
Merci ;)
J'applique cet algorithme :)  :jap:  :jap:


---------------
Mes ventes : [FeedBack] http://forum.hardware.fr/hfr/Achat [...] 4599_1.htm
Reply

Marsh Posté le 15-05-2021 à 23:43:11    

Bonjour MilesTEG1,
 
à tester la présence des repertoires il y a rien d'important pour les copies,
d'accord tu t'assures de la présence ou existence des 'dossiers'.
 
Les 'dossiers' existent d'accord.
 
Quand tu lances tes copies, un disque dur laches, le réseau se déconnectes, le Pc prends une micro-coupure..
tout ce qui peut faire rater ta copie ... ( le pire cas ).
 
Tu lancerai tes copies avec la commande dédié,
sur le premier fichier,  
un défaut te renvoies 'false'
et les milles autres fichiers font la même chose,
l'ensemble des copies a foiré
et pourtant les 2 dossiers sont valides.
 
en fait, tu aura testé autant de fois que nécessaires,
des 'variables adresse de disque' pour constater qu'aucune copies n'a été correctement réalisée.
 
en bref :
 
fais une boucle et envoies toutes tes copies une par une.
sur une erreur , c'est 'false' qui sera retourné.
 
Dans tes vérifications avant de copier,
tu va faire ( tu peux compter sur tes doigts le nombre de tests ),
4 tests au moins , puis faire une liste  
pour ne faire aucune copie ( en cas d'indisponibilité )
 
donc :
boucle sur ta liste de fichiers,
compte les erreurs dans des logs.
 
et tu divise le nombre de if if fi if if fi fi  par 4 au moins.
 
c'est parmi les 'erreurs de logique' en algo.
Trop de code en fait.
 
foreach "file_from" in LIST
bRETurn = true
bRETurn = copy_to( file_to , file_from )
 
if bRETurn == false then
log ( fail copy :: file_from )
fi
 
next for
 
C'est des accès "lecture / écriture" en moins etc ....
 
A chaque ligne de code , il se passes 1000 test , assignation , création d'objet , chargement , déchargement , instanciation ...
 
avec tout ça ...  diviser par 4 le travail a faire par le CPU ...
ça fait un soft hyper rapide non ?


---------------
Nom : Prénom : Age : Adresse : Ville : Code Postal : Num Trois Tel
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed