Script de sauvegarde en batch
Résolu/Fermé
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
-
28 oct. 2008 à 15:39
red - 24 nov. 2010 à 12:15
red - 24 nov. 2010 à 12:15
A voir également:
- Script de sauvegarde en batch
- Logiciel de sauvegarde gratuit - Guide
- Script vidéo youtube - Guide
- Fichier batch - Guide
- Sauvegarde android - Guide
- Sauvegarde facile - Télécharger - Sauvegarde
28 réponses
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
28 oct. 2008 à 16:52
28 oct. 2008 à 16:52
Pour linux
#!/bin/bash
cd /PATH
jour=sauv_$(date +%A)
mysqldump -h localhost -u user -ppassword -r$jour.sql base_de_donnée
#!/bin/bash
cd /PATH
jour=sauv_$(date +%A)
mysqldump -h localhost -u user -ppassword -r$jour.sql base_de_donnée
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
29 oct. 2008 à 09:45
29 oct. 2008 à 09:45
Plus compliqué....
je me suis fais exe:(que j'ai appelé jour.exe et qui te retourne le jour dans un fichier jour.txt)
#include <stdio.h>
#include <time.h>
int main ()
{ FILE*pfile;
char* jour[7]={"dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"};
pfile=fopen("c:\\TON_CHEMIN\\jour.txt","w");
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
fwrite (jour[timeinfo->tm_wday] , 1 ,strlen(jour[timeinfo->tm_wday])*sizeof(char) , pfile );
fclose(pfile);
return 0;
}
apres dans le batch:
cd\PATH
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a
TA_COMMANDE_POUR_LE_DUMP_AVEC_LA_VARIABLE_%JOUR%
del /Q jour.txt
La variable jour récupère le jour...
je me suis fais exe:(que j'ai appelé jour.exe et qui te retourne le jour dans un fichier jour.txt)
#include <stdio.h>
#include <time.h>
int main ()
{ FILE*pfile;
char* jour[7]={"dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"};
pfile=fopen("c:\\TON_CHEMIN\\jour.txt","w");
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
fwrite (jour[timeinfo->tm_wday] , 1 ,strlen(jour[timeinfo->tm_wday])*sizeof(char) , pfile );
fclose(pfile);
return 0;
}
apres dans le batch:
cd\PATH
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a
TA_COMMANDE_POUR_LE_DUMP_AVEC_LA_VARIABLE_%JOUR%
del /Q jour.txt
La variable jour récupère le jour...
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
28 oct. 2008 à 15:47
28 oct. 2008 à 15:47
Salut,
soit tu renommes avec la date du jour tes sauvegardes (ainsi jamais le même nom....) et pas écrasée;
soit le dimanche tu fait un bach qui copie les sauvegardes de la semaine dans un répertoire que nomme comme tu veux;
soit tu compresses toutes les sauvegardes de la semaine le dimanche,que tu nommes en fonction du jour, que tu copies dans un répertoire save par exemple.....
J'espère avoir bien compris ta question!!
@+
soit tu renommes avec la date du jour tes sauvegardes (ainsi jamais le même nom....) et pas écrasée;
soit le dimanche tu fait un bach qui copie les sauvegardes de la semaine dans un répertoire que nomme comme tu veux;
soit tu compresses toutes les sauvegardes de la semaine le dimanche,que tu nommes en fonction du jour, que tu copies dans un répertoire save par exemple.....
J'espère avoir bien compris ta question!!
@+
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
28 oct. 2008 à 15:53
28 oct. 2008 à 15:53
Ce que je veux justement, c'est que les sauvegardes de la semaine 1 soient écrasées par celles de la semaine 2. Qu'il n'y ai que 6 fichiers de sauvegarde, ni plus ni moins.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
28 oct. 2008 à 16:21
28 oct. 2008 à 16:21
Je viens de tester sur mon poste, si je lance un export de la base appelé 1.sql puis apres je relance un export avec comme nom 1.sql, j'ai bien qu'un fichier, le plus récent....
C'est sous linux ou windows?
Tu pourrais rajouter ,dans le pire des cas, une commande pour effacer la sauvegarde de la semaine précédente avant de lancer l'export...
@+
C'est sous linux ou windows?
Tu pourrais rajouter ,dans le pire des cas, une commande pour effacer la sauvegarde de la semaine précédente avant de lancer l'export...
@+
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
28 oct. 2008 à 16:25
28 oct. 2008 à 16:25
n'avoir qu'un seul fichier de sauvegarde je sais faire aussi, vu qu'il écrase automatiquement l'ancien fichier si le nom n'est pas modifié entre temps.
Mais moi je veux que le lundi il créé "sauv_lundi.sql", le mardi "sauv_mardi.sql" pour la semaine 1. Et pour la semaine 2, il écrase "sauv_lundi.sql" de la semaine 1, le lundi, puis, le mardi de la semaine 2, il écrase "sauv_mardi.sql" de la semaine 2 etc.
Dans mon répertoir backup, j'aimerais avoir 6 fichiers de sauvegarde, un pour chaque jours de la semaine sauf le dimanche.
C'est possible effectivement de faire un script qui supprime les fichiers vieux de plus de 7 jours, mais je ne sais pas faire non plus.
Mais moi je veux que le lundi il créé "sauv_lundi.sql", le mardi "sauv_mardi.sql" pour la semaine 1. Et pour la semaine 2, il écrase "sauv_lundi.sql" de la semaine 1, le lundi, puis, le mardi de la semaine 2, il écrase "sauv_mardi.sql" de la semaine 2 etc.
Dans mon répertoir backup, j'aimerais avoir 6 fichiers de sauvegarde, un pour chaque jours de la semaine sauf le dimanche.
C'est possible effectivement de faire un script qui supprime les fichiers vieux de plus de 7 jours, mais je ne sais pas faire non plus.
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
29 oct. 2008 à 09:32
29 oct. 2008 à 09:32
Et pour windows ?
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
29 oct. 2008 à 10:04
29 oct. 2008 à 10:04
j'ai copié la première partie sur dev c++. Lors de la compilation il me met une erreur :
`strlen' undeclared (first use this function)
pour cette ligne :
fwrite (jour[timeinfo->tm_wday] , 1 ,strlen(jour[timeinfo->tm_wday])*sizeof(char) , pfile );
Je pense qu'il faut déclarer la variable strlen, mais je ne suis pas sûr, et je ne sais pas de quel type elle est.
`strlen' undeclared (first use this function)
pour cette ligne :
fwrite (jour[timeinfo->tm_wday] , 1 ,strlen(jour[timeinfo->tm_wday])*sizeof(char) , pfile );
Je pense qu'il faut déclarer la variable strlen, mais je ne suis pas sûr, et je ne sais pas de quel type elle est.
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
29 oct. 2008 à 10:08
29 oct. 2008 à 10:08
rajoute la librairie sting.h
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
29 oct. 2008 à 10:13
29 oct. 2008 à 10:13
J'ai la même erreur.
C'est bien #include <sting.h> ? Après tout je peux mal avoir tapé ^^
edit : je viens de voir cette ligne d'erreur : sting.h: No such file or directory.
Pour le batch, j'aimerais savoir si mon fichier est bon :
@ECHO OFF
@ECHO Vous avez choisis de sauvegarder la base menagerie
cd\PATH
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a
mysqldump -u root -proot menagerie > %JOUR%
del /Q jour.txt
SET REUSSI=Sauvegarde de menagerie reussi
SET ECHEC=Sauvegarde de menagerie echouee
@if %ERRORLEVEL% EQU 0 echo %REUSSI% le %JOUR% >> D:\backupmysql\log.txt
@if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %JOUR% code erreur : %ERRORLEVEL% >> D:\backupmysql\log.txt
C'est bien #include <sting.h> ? Après tout je peux mal avoir tapé ^^
edit : je viens de voir cette ligne d'erreur : sting.h: No such file or directory.
Pour le batch, j'aimerais savoir si mon fichier est bon :
@ECHO OFF
@ECHO Vous avez choisis de sauvegarder la base menagerie
cd\PATH
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a
mysqldump -u root -proot menagerie > %JOUR%
del /Q jour.txt
SET REUSSI=Sauvegarde de menagerie reussi
SET ECHEC=Sauvegarde de menagerie echouee
@if %ERRORLEVEL% EQU 0 echo %REUSSI% le %JOUR% >> D:\backupmysql\log.txt
@if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %JOUR% code erreur : %ERRORLEVEL% >> D:\backupmysql\log.txt
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
29 oct. 2008 à 10:15
29 oct. 2008 à 10:15
Le batch semble correct!! Il faudra bien mettre le jour.exe dans le repertoire où tu lance le batch...
DSL c'est string.h...
DSL c'est string.h...
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
29 oct. 2008 à 10:23
29 oct. 2008 à 10:23
bon, la sauvegarde se fait. Mais il y a quelques soucis.
Pour que tu comprenne je vais te donner mon architecture
D:\
------backupmysql
-------------menagerie
-------------<emplacement_où_je_voudrais_mes_fichiers_de_sauvegarde.sql>
------jour.exe
------sauv_jours.bat
donc, le fichier "sauv_mercredi" se créé bien, mais directement dans le répertoire "backupmysql". De plus, il lui manque l'extension ".sql". par conséquent, la restauration sera impossible.
J'ai cherché où je pouvais modifier cela dans l'exécutable, mais j'avoue que j'ai un peu du ma
Pour que tu comprenne je vais te donner mon architecture
D:\
------backupmysql
-------------menagerie
-------------<emplacement_où_je_voudrais_mes_fichiers_de_sauvegarde.sql>
------jour.exe
------sauv_jours.bat
donc, le fichier "sauv_mercredi" se créé bien, mais directement dans le répertoire "backupmysql". De plus, il lui manque l'extension ".sql". par conséquent, la restauration sera impossible.
J'ai cherché où je pouvais modifier cela dans l'exécutable, mais j'avoue que j'ai un peu du ma
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
29 oct. 2008 à 10:27
29 oct. 2008 à 10:27
cd\PATH
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a.sql
mysqldump -u root -proot menagerie > menagerie \%JOUR%
del /Q jour.txt
je pense que cela devrait faire l'affaire!!
Dit moi si oui ou non...
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a.sql
mysqldump -u root -proot menagerie > menagerie \%JOUR%
del /Q jour.txt
je pense que cela devrait faire l'affaire!!
Dit moi si oui ou non...
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
29 oct. 2008 à 10:33
29 oct. 2008 à 10:33
ça marche.
Mais lors de l'exécution du batch j'ai une erreur :
le chemin spécifié est introuvable.
la sauvegarde se fait correctement et il ne me retourne pas d'erreur dans mon fichier log.
Mais lors de l'exécution du batch j'ai une erreur :
le chemin spécifié est introuvable.
la sauvegarde se fait correctement et il ne me retourne pas d'erreur dans mon fichier log.
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
29 oct. 2008 à 10:38
29 oct. 2008 à 10:38
@ECHO OFF
@ECHO Vous avez choisis de sauvegarder la base menagerie
d:
cd\backupmysql
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a.sql
mysqldump -u root -proot menagerie > menagerie\%JOUR%
del /Q jour.txt
SET REUSSI=Sauvegarde de menagerie reussi
SET ECHEC=Sauvegarde de menagerie echouee
@if %ERRORLEVEL% EQU 0 echo %REUSSI% le %JOUR% >>log.txt
@if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %JOUR% code erreur : %ERRORLEVEL% >>log.txt
Ton batch ressemble bien à cela?
@ECHO Vous avez choisis de sauvegarder la base menagerie
d:
cd\backupmysql
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a.sql
mysqldump -u root -proot menagerie > menagerie\%JOUR%
del /Q jour.txt
SET REUSSI=Sauvegarde de menagerie reussi
SET ECHEC=Sauvegarde de menagerie echouee
@if %ERRORLEVEL% EQU 0 echo %REUSSI% le %JOUR% >>log.txt
@if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %JOUR% code erreur : %ERRORLEVEL% >>log.txt
Ton batch ressemble bien à cela?
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
29 oct. 2008 à 10:44
29 oct. 2008 à 10:44
maintenant oui.
Comme un idiot j'avais oublié de changer le cd\path
j'ai fait quelques tests, notamment pour voir si, lorsqu'il y a une erreur lors de la sauvegarde, celle ci s'inscrit bien dans le fichier "log.txt"
J'ai donc lancé la sauvegarde après avoir mis un nom de base qui ne correspond pas à la mienne. Il me met une erreur comme quoi il trouve pas la table.
Je vais vérifier le fichier de sauvegarde de la table : l'ancien a bien été écrasé par le nouveau, la sauvegarde n'a pas été faite. jusque là, rien d'anormal.
Je vais voir mon fichier de log et la je vois la ligne : Sauvegarde de menagerie reussi le sauv_mercredi.sql
C'est un peu embêtant qu'il me dise qu'elle est réussit alors qu'elle a échouée.
Comme un idiot j'avais oublié de changer le cd\path
j'ai fait quelques tests, notamment pour voir si, lorsqu'il y a une erreur lors de la sauvegarde, celle ci s'inscrit bien dans le fichier "log.txt"
J'ai donc lancé la sauvegarde après avoir mis un nom de base qui ne correspond pas à la mienne. Il me met une erreur comme quoi il trouve pas la table.
Je vais vérifier le fichier de sauvegarde de la table : l'ancien a bien été écrasé par le nouveau, la sauvegarde n'a pas été faite. jusque là, rien d'anormal.
Je vais voir mon fichier de log et la je vois la ligne : Sauvegarde de menagerie reussi le sauv_mercredi.sql
C'est un peu embêtant qu'il me dise qu'elle est réussit alors qu'elle a échouée.
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
29 oct. 2008 à 10:50
29 oct. 2008 à 10:50
d:
cd\backupmysql
SET REUSSI=Sauvegarde de menagerie reussi
SET ECHEC=Sauvegarde de menagerie echouee
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a.sql
mysqldump -u root -proot menagerie > menagerie\%JOUR%
@if %ERRORLEVEL% EQU 0 echo %REUSSI% le %JOUR% %date% %time%>>log.txt
else echo %ECHEC% le %JOUR% %date% %time%code erreur : %ERRORLEVEL% >>log.txt
del /Q jour.txt
essaie cela...j'ai rajouter la date et l'heure pour avoir un peu plus d'info...
cd\backupmysql
SET REUSSI=Sauvegarde de menagerie reussi
SET ECHEC=Sauvegarde de menagerie echouee
jour.exe
for /F %%a in (jour.txt) do set jour=sauv_%%a.sql
mysqldump -u root -proot menagerie > menagerie\%JOUR%
@if %ERRORLEVEL% EQU 0 echo %REUSSI% le %JOUR% %date% %time%>>log.txt
else echo %ECHEC% le %JOUR% %date% %time%code erreur : %ERRORLEVEL% >>log.txt
del /Q jour.txt
essaie cela...j'ai rajouter la date et l'heure pour avoir un peu plus d'info...
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
29 oct. 2008 à 10:56
29 oct. 2008 à 10:56
Donc, lorsque la sauvegarde reussi j'ai droit à la ligne :
auvegarde de menagerie reussi le sauv_mercredi.sql 29/10/2008 10:53:32,95
en revanche, j'ai aussi droit à l'erreur :
'else' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
par conséquent, lorsqu'il y a une erreur, rien ne s'écrit dans le fichier log.txt.
edit :
j'ai remplacé la ligne avec "else" par :
@if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %JOUR% code erreur : %ERRORLEVEL% >> D:\backupmysql\log.txt
et ça fonctionne.
auvegarde de menagerie reussi le sauv_mercredi.sql 29/10/2008 10:53:32,95
en revanche, j'ai aussi droit à l'erreur :
'else' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.
par conséquent, lorsqu'il y a une erreur, rien ne s'écrit dans le fichier log.txt.
edit :
j'ai remplacé la ligne avec "else" par :
@if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %JOUR% code erreur : %ERRORLEVEL% >> D:\backupmysql\log.txt
et ça fonctionne.
chuka
Messages postés
965
Date d'inscription
samedi 11 octobre 2008
Statut
Membre
Dernière intervention
29 juillet 2010
378
29 oct. 2008 à 11:11
29 oct. 2008 à 11:11
Cool!!
Tout marche alors??
Tout marche alors??
Dikmas
Messages postés
376
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
3 mai 2012
63
29 oct. 2008 à 11:12
29 oct. 2008 à 11:12
Tout marche
Merci beaucoup. Sans toi je n'aurais pas beaucoup avancé.
Merci beaucoup. Sans toi je n'aurais pas beaucoup avancé.