Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1527 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Shell : besoin d'aide pour mon script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Shell : besoin d'aide pour mon script

n°1905854
nero27
Posté le 16-07-2009 à 15:35:38  profilanswer
 

Bonjour à tous,
 
Pour ma boite, je dois installer un site eCommerce démo utilisable par n'importe quel internaute. Comme ça risque d'être rapidement le bazar, je pense mettre en place un script exécuté quotidiennement qui écrasera les fichiers du site (afin de virer les images ou autres fichiers uploadés) et recréera une base de donnée propre.
 
Le problème, c'est que mes cours de shell sont loin et que j'aurais donc besoin de votre aide pour être sûr de ne pas faire de bêtise.
 
Voici ce que j'ai fait :

Code :
  1. cd /var/www/vhosts/site-demo/httpdocs     #chemin des fichiers du site
  2. rm -Rf *     #Supperssion de tous les fichiers et dossiers
  3. cd ..     #dossier parent
  4. tar xjvf httpdocs.tar.bz2     #décompactage de l'archive de sauvegarde


 
Trouvez-vous ceci correct pour l'instant ?
 
Maintenant, j'aimerais faire la même chose pour la base de donnée, mais je ne vois pas comment faire.
 
Voici les commandes mysql à faire pour commencer :

Code :
  1. drop database site-demo
  2. create database site-demo


 
Puis ensuite l'envoi de la sauvegarde dans la base :

Code :
  1. zcat sauvegarde.sql.gz | mysql --user=login --password=pass site-demo


 
Voilà, pourriez-vous m'éclairer ?
 
Merci d'avance :)

mood
Publicité
Posté le 16-07-2009 à 15:35:38  profilanswer
 

n°1905867
pataluc
Posté le 16-07-2009 à 15:52:59  profilanswer
 

déja pour le script, ca ne me parait pas très prudent... si un jour qqun déplace le site, ton cd se vautre, et il efface tout la ou il est... j'aurais plutot fait un

Code :
  1. rm -Rf /var/www/vhosts/site-demo/httpdocs

ou alors au moins vérifier que le répertoire existe bien avant...
 
et sinon pour la base, je ne vois pas ce qui te bloque... tu as tout dit... éventuellement, mets juste ton drop et ton create au début de ton fichier sauvegarde.sql.gz et ca devrait rouler...

n°1905875
nero27
Posté le 16-07-2009 à 16:00:39  profilanswer
 

Je n'étais pas vraiment bloqué mais plutôt pas confiant ;)
 
Effectivement, ta commande de suppression est bien plus efficace.
 
Je vais tester tout ça.
 
Merci à toi :)

n°1906248
Sve@r
Posté le 17-07-2009 à 19:58:24  profilanswer
 

pataluc a écrit :

déja pour le script, ca ne me parait pas très prudent... si un jour qqun déplace le site, ton cd se vautre, et il efface tout la ou il est... j'aurais plutot fait un

Code :
  1. rm -Rf /var/www/vhosts/site-demo/httpdocs

ou alors au moins vérifier que le répertoire existe bien avant...


 
La remarque est fondée (bien qu'on puisse remplacer "cd machin; rm -fr *" par "cd machin && rm -fr *" ce qui évite au rm de se lancer si le cd se vautre). Mais généralement j'évite moi-aussi de faire des cd dans mes scripts, je préfère travailler en indiquant où bosser. Toutefois ça peut aussi être dangereux car voici ce que j'ai fait un jour...
J'avais l'habitude, sur ma sun solaris, de purger régulièrement tmp. Je faisais donc

Code :
  1. cd /tmp
  2. rm -fr * .*


 
Ca marchait parfaitement. Puis un jour, j'ai voulu aller plus vite et j'ai tapé

Code :
  1. rm -fr /tmp/* /tmp/.*


Et là, la commande a commencé à durer... durer... Je regardais mon écran sans trop comprendre... puis soudain j'ai réalisé que dans ".*" il avait aussi "..". Et effectivement le rm était remonté à la racine et balayait toute l'arborescence. Total => réinstallation de ma machine. Pas grave car il n'y avait rien de primordial mais pas amusant non plus. Donc méfiance envers les rm *
 

nero27 a écrit :


Maintenant, j'aimerais faire la même chose pour la base de donnée, mais je ne vois pas comment faire.
 
Voici les commandes mysql à faire pour commencer :

Code :
  1. drop database site-demo
  2. create database site-demo


 
Puis ensuite l'envoi de la sauvegarde dans la base :

Code :
  1. zcat sauvegarde.sql.gz | mysql --user=login --password=pass site-demo


 

pataluc a écrit :

et sinon pour la base, je ne vois pas ce qui te bloque... tu as tout dit... éventuellement, mets juste ton drop et ton create au début de ton fichier sauvegarde.sql.gz et ca devrait rouler...



On peut mettre les lignes suivantes

Code :
  1. drop database IF EXISTS site-demo;
  2. create database site-demo;
  3. use site-demo;


au début du fichier sql. Le "if exists" a été rajouté à MySQL v5. Mais il semble que dans cet outil, le nom de la bdd n'est pas fixé à l'avance puisqu'on te demande de lancer une connexion sur "site-demo". Or si tu mets le nom de la bdd en dur dans le script sql, tu ne pourras plus le paramétrer ensuite.
 
Il y a aussi la solution de lancer les commandes en live depuis un script qui reçoit le nom de la bdd en paramètre. Un truc de ce style

Code :
  1. #!/bin/sh
  2. rep="/var/www/vhosts/site-demo"
  3. bdd=${1:-site-demo}
  4. cd "$rep"
  5. rm -Rf httpdocs
  6. tar xjpvf httpdocs.tar.bz2
  7. echo "drop database if exists $bdd;" |mysql --user=login --password=pass
  8. echo "create database $bdd;" |mysql --user=login --password=pass
  9. zcat sauvegarde.sql.gz | mysql --user=login --password=pass "$bdd"


Message édité par Sve@r le 17-07-2009 à 20:25:12

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Shell : besoin d'aide pour mon script

 

Sujets relatifs
Qt aide QRegExp[PHP/XML] Problème pour trouver le code PHP à partir du code VBS
Un script de 30000 lignes peut-il avoir un impact sur les performances[aide] Comment retiré une portion d'une TextBox ?
[VBA] Erreur out of range sur scriptBesoin d 'aide pour combiner 2 script Javascript.
besoin de vos aides[SQL SERVER 2005] Script de remplissage de table (BLUK INSERT & cie)
Plus de sujets relatifs à : Shell : besoin d'aide pour mon script


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR