Automatiser un script de sauvegarde

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

Automatiser un script de sauvegarde

Messagepar nono-mb » 17 Juin 2004 17:05

Bonjour à tous,

Je souhaite automatiser l'éxécution de mon script de sauvagarde chaque soir à 22h30. Pour cela créer dans /etc/cron.d/backupmonentreprise dans lequel on trouve :

# Ma sauvegarde quotidienne
30 22 * * 1-5 /root/backup.sh


j'ai donner les droits 750 à backup.sh et à backupdemonentreprise et le script se s'éxécute pas. J'ai parcouru un bon nombre de topic traitant ce cela mais sans succès. Je tourne avec une sme 6.01

Quelqu'un as-t-il la solution à mon problème ?

Merci
NONO
a bientôt - nono
Avatar de l’utilisateur
nono-mb
Aspirant
Aspirant
 
Messages: 122
Inscrit le: 17 Sep 2003 00:00
Localisation: Angers (France)

Messagepar Gaston » 17 Juin 2004 17:43

Bonjour,
bon ben bien que tu ais lu les autres post, on récapitule :?:

1) tes fichiers appartiennent tous les deux à "root" ?
2) si tu mets en place le logs ça donne quoi :
Code: Tout sélectionner
/etc/cron.d/backupmonentreprise
30 22 * * 1-5 /root/backup.sh >/tmp/log00 2>&1

et positionne un "#!/bin/sh -x " en tête de ton script "backupmonentreprise" + autant d'echo que tu veux
3) est-ce que ça change qquechse si tu met ton job dans la crontab de root (crontab -e) ?

Avec les traces on devrait y voir + clair (si tu ne veux pas lancer ton "vrai" script, fait un petit script bidon avec une commande qqueconque dedans - date, ls, echo, ...)

G.
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar Franck78 » 17 Juin 2004 17:59

ca marche lancé à la main.
ca marche plus lancé par cron.

=> envirronement absent. pas de path pour trouver tar... ou les autres !
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar Gaston » 17 Juin 2004 18:19

=> envirronement absent. pas de path pour trouver tar... ou les autres !
ça y ressemble :)
Laissons venir les traces, ca pourra devenir un [TUTORIAL] :roll:
G.
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar nono-mb » 17 Juin 2004 23:41

Gaston a écrit:
=> envirronement absent. pas de path pour trouver tar... ou les autres !
ça y ressemble :)
Laissons venir les traces, ca pourra devenir un [TUTORIAL] :roll:
G.


En effet tout foncitonne quand je l'éxécute ne ligne de commande ./backup.sh

ca doit venir du chemin de tar !

quel est son chemin d'ailleurs ?

Où est le log de cron.d ?

merci
nono
a bientôt - nono
Avatar de l’utilisateur
nono-mb
Aspirant
Aspirant
 
Messages: 122
Inscrit le: 17 Sep 2003 00:00
Localisation: Angers (France)

Messagepar Gaston » 18 Juin 2004 01:17

which tar - locate tar ...
contenu du fichier dans /tmp que je t"ai suggéré de rajouter dans la ligne de commande
mail de "root"

Dans ton .sh reprends le contenu de /etc/profile, voir de ton .bash_profile si tu as modifié les PATH, rajoute la définition de toutes variables d'environnement qui pourraient être utiles à ton prog
Mets les chemins en dur (ou en _semi_"dur" càd :
Code: Tout sélectionner
#!/bin/sh
#
# my_script.sh : perform backup of users home directories as well a s root's one
# created on : xxxxxxx
# last modification : xxxxx
#
## Environnement Settings
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
DATE=`/bin/date +%Y%m%d`
#
## commandes redefinition
#
TAR=/bin/tar
AWK=/bin/awk
CUT=/bin/cut
GREP=/bin/grep
#
#
BACKUP_DIR=/home/e-smith/file/users

$TAR -czvf /tmp/backup_home_dir${DATE} ${BACKUP_DIR} /root
RETURN=$?
if [ $RETURN = 0]
...............

Enfin bon c'est une façon de faire :) )

Après tu reviens avec les traces, et on examine le pourquoi du comment de la chose. Mais comme le soulignait Franck78, si ton environnement est bon, il y a pas de raison que ça marche pas :P

man 5 crontab pour une définition de la crontab et un zoli exemple :)
G.
Dernière édition par Gaston le 18 Juin 2004 11:24, édité 1 fois au total.
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar nono-mb » 18 Juin 2004 09:47

merci,
je vais tester tout ca lundi !
nono
a bientôt - nono
Avatar de l’utilisateur
nono-mb
Aspirant
Aspirant
 
Messages: 122
Inscrit le: 17 Sep 2003 00:00
Localisation: Angers (France)

Messagepar nono-mb » 22 Juin 2004 09:10

Bon j'ai essayer de suivre vos différents conseils sans succès. Il y a donc deux fichier :

/etc/cron.d/backupmonentreprise
# Sauvegarde quotidienne (du lundi au vendredi) de l'intranet et
# des boites mails
30 22 * * 1-5 root /root/backup.sh


et le script en question :

/root/backup.sh
#####################################################################
#!/bin/sh -x
PATH2DB=/var/lib/mysql
PATH2BACKUP=/mnt/backup/intranet
MY_USER='admin'
MY_PASSWD='MonMotDePasse'
DATE=`/bin/date -I`
echo $DATE

#Arret des services http pour la sauvegarde
/sbin/service httpd stop

#Montage du disque de sauvegarde

/bin/mount -t smbfs //serveur-data/users /mnt/backup -o username=admin,password=MonMotDePasse

#verifie si le ficier existe deja
if [ -f /mnt/backup/intranet/backup_$DATE.tar.gz ]
then
/bin/rm --force /mnt/backup/intranet/backup_$DATE.tar.gz
fi
#Cree l'archive du systeme
/bin/tar -czf /mnt/backup/intranet/backup_$DATE.tar.gz /home/e-smith/ /root/ /etc/e-smith/templates-custom/ /etc/e-smith/templates-user-custom/ /etc/samba/ /etc/ssh

#verifie si la base mysql existe
if [ -f /mnt/backup/intranet/backup-base-$DATE.sql ]
then
/bin/rm --force /mnt/backup/intranet/backup-base-$DATE.sql
fi

#Creation de la sauvegarde mysql
/usr/bin mysqldump -f --opt -u $MY_USER --password=$MY_PASSWD egroupware>$PATH2BACKUP/backup-base-$DATE.sql

#verification si le rapport existe deja
if [ -f /root/result ]
then
/bin/rm --force /root/result
fi

#verification si la sauvegarde a reussi et creation du rapport
if [ -f /mnt/backup/intranet/backup_$DATE.tar.gz -a -f /mnt/backup/intranet/backup-base-$DATE.sql ]
then
#si sauvegarde reussi...
echo "===== Rapport de sauvegarde =====" > /root/result
date >> /root/result
/bin/ls /mnt/backup/intranet/backup* >> /root/result
echo "La sauvegarde a bien reussie !" >> /root/result
else
#si sauvegarde echoue...
echo "===== Rapport de sauvegarde =====" > /root/result
/bin/date >> /root/result
/bin/ls /mnt/backup/intranet/backup* >> /root/result
echo "La sauvegarde a echouee" >> /root/result
fi
#Demontage du disque

/bin/umount /mnt/backup

#Lancement des services hddp et mysql
/sbin/service httpd start

#Envoi du resultat
/bin/mail -s Sauvegarde_$DATE admin intranet@monentreprise.local < /root/result

#Fin
exit


Les deux fichier appartiennent bien à root (vérifier avec "ls -l" et il ont les droit en 750.

Toute idée est la bienvenue
a bientôt - nono
Avatar de l’utilisateur
nono-mb
Aspirant
Aspirant
 
Messages: 122
Inscrit le: 17 Sep 2003 00:00
Localisation: Angers (France)

Messagepar Franck78 » 22 Juin 2004 10:01

# Sauvegarde quotidienne (du lundi au vendredi) de l'intranet et
# des boites mails
30 22 * * 1-5 root /root/backup.sh



La syntaxe est bizarre ? pourquoi root
normalement c'est

* * * * * script


Aussi, dans "/etc/cron.d" je n'ai pas d'exemple sur ma machine. Tu es sur de cette façon de faire.
Si tu as un rep "/etc/cron.daily" places-y directement le script.


Au fait c'est quoi qui ne marche pas ?
L'appel du script ou ce qu'il fait ?
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar nono-mb » 22 Juin 2004 12:03

Franck78 a écrit:# Sauvegarde quotidienne (du lundi au vendredi) de l'intranet et
# des boites mails
30 22 * * 1-5 root /root/backup.sh



La syntaxe est bizarre ? pourquoi root
normalement c'est

* * * * * script


Aussi, dans "/etc/cron.d" je n'ai pas d'exemple sur ma machine. Tu es sur de cette façon de faire.
Si tu as un rep "/etc/cron.daily" places-y directement le script.


Au fait c'est quoi qui ne marche pas ?
L'appel du script ou ce qu'il fait ?


oui mais si je le met dans cron.saily comment fais-je pour spécifier l'heure à laquelle je souhaite le éxécuter le script ?
a bientôt - nono
Avatar de l’utilisateur
nono-mb
Aspirant
Aspirant
 
Messages: 122
Inscrit le: 17 Sep 2003 00:00
Localisation: Angers (France)

Messagepar Franck78 » 22 Juin 2004 12:51

Tu peux pas. Et c'est tout les jours.
Tu n'as pas répondu:
Qu'est-ce qui ne fonctionne pas ?


rajoutes aussi un
PATH=/usr/bin:/usr/sbin:/bin:/sbin
dans ton script. Ca peut servir.
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar Gaston » 22 Juin 2004 14:09

Salut,
tu réponds pas aux questions et tu oublies certains des conseils :(

1) la syntaxe minute heure jour_du_mois mois jour_semaine user script est celle qui est utilisé dans les jobs cron.d

2) une crontab hors de cette architecture ne prend pas le user en paramètre - forcément puisque la crontab elle appartient à l'utilsateur ... (et l'entrée elle sera sauvegardé dans /var/spool/cron/crontabs/<nom_use> ou qque chose comme ça°


Donc je récapitule :
tu veux faire une crontab pour un utilisateur (root par exemple ...)
# crontab -e

avec l'entrée suivante dedans (les commentaires tu pourras les rajouter après)

30 22 * * 1-5 root /root/backup.sh > /tmp/LOG_DE_MON_SCRIPT 2>&1

tu veux faire une crontab gérée par le cron.d :
tu copies ton fichier dans le répertoire cron.daily, il sera traité lors du prochain déclanchement du cron.daily (voir le fichier /etc/crontab pour avoir l'info)

Quelque soit la solution merci de nous donner le résultat du log, on saura ce qui n'a pas marché et pour + d'infos : man 5 crontab et man crontab

G.
PS sinon rien à priori dans le script qui puisse géner ...
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar nono-mb » 28 Juin 2004 13:17

tout fonctionnne, l'erreur venait du faite que je programmait mon cron pas assez tôt avant son éxécution. Donc aucun test ne foncitonnais. J'en ai eut marre, le l'ai laissé à 22 heure et le lendemain surprise !

Merci pour votre aide à tous
a bientôt - nono
Avatar de l’utilisateur
nono-mb
Aspirant
Aspirant
 
Messages: 122
Inscrit le: 17 Sep 2003 00:00
Localisation: Angers (France)


Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité