Pages : 1
#1 Le 25/09/2005, à 16:16
- LR
[Résolu] Lancer un script à la fermeture
Salut,
J'aimerais créer un script pour faire un backup de mon dossier /etc sur une partition dédiée à chaque fois que j'éteins ma machine.
Le problème c'est que je n'ai jamais réalisé ce genre de script et que je ne sais pas où le mettre pour qu'il se lance automatiquement.
Quelqu'un pourrait m'orienter ?
Merci d'avance
Lilian
Dernière modification par LR (Le 28/09/2005, à 21:59)
Hors ligne
#2 Le 25/09/2005, à 17:01
- reboot62
Re : [Résolu] Lancer un script à la fermeture
ouais, c'est bien pratique cette manip
perso, je fais ça pour mon forum perso
je fais un 'dump' de ma base Mysql et je la copie avec lftp sur un serveur distant !
j'utilise cron, le truc c'est d'ajouter ton script dans la crontab "/etc/crontab"
pour les détails, regardes un peu dans la doc de cron...
Hors ligne
#3 Le 25/09/2005, à 19:55
- sksbir
Re : [Résolu] Lancer un script à la fermeture
désolé, mais utiliser le cron pour ça n'est pas la bonne méthode.
voici quelques idées pour te donner des pistes de départ:
- déterminer quelles sont les commandes à exécuter lors de l'arrêt de ta machine.
- créer un fichier dans /etc/init.d . Par exemple : /etc/init.d/persoCMD qui contiendra tes commandes . Ce fichier devra etre exécutable (voir chmod ), et devra contenir une structure pour accepter les ordres "start" et "stop" ( je te conseille de t'inspirer des autres scripts présents dans /etc/init.d )
- Utiliser la commande update-rc.d pour inclure ton script dans les scripts qui vont etre exécuté par ta machine lors d'un changement de level.
Hors ligne
#4 Le 25/09/2005, à 20:13
- jAr0d
Re : [Résolu] Lancer un script à la fermeture
Alors, voici un petit rappel concernant le démarrage / extinction d'une ubuntu :
Dans /etc, tu trouvereras une série de répertoires rc*.d dans lesquels se trouvent des liens symboliques vers des scripts qui sont présents dans le répertoire /etc/init.d
En fonction du niveau d'exécution, c'est à dire si t'a machine est en reboot, arret ou démarrage, les scripts présents dans le répertoire rc*.d et dont le lien commence par S****** seront exécutés dans l'ordre croissant de leurs noms.
Voici les différents niveaux d'exécutions :
0 -> concerne l'arrêt de la machine
1 -> démarrage en mode mono-utilisateur
2-5 -> modes multi-utilisateurs
6 -> redémarrage.
Dans ton cas par exemple, c'est le niveau 0 qui nous interresse. En effet tous les scripts pointés par les liens présents dans le répertoire /etc/rc0.d/S*** seront exécutés à l'extinction de ta machine, plus précisement appelés avec comme argument start
Ainsi, si tu créés un script de backup, que l'on nommera par exemple backup_home.sh, il faudra qu'il s'execute sur passage d'un argument start, alors tu le placeras dans /etc/init.d et tu devras créer un lien vers ce dernier dans le répertoire /etc/rc0.d
Par exemple :
ln -s /etc/init.d/backup_home.sh /etc/rc0.d/S37backup_home
Ainsi, à chaque extinction de ton système, ce script sera exécuté. Cependant, il faut que tu fasses attention à la manière de coder ton script, qui est très importante, notamment en ce qui concerne les valeurs de retour une fois ce script terminé, afin que la main soit correctement rendu au système pour qu'il puisse finir son extinction.
Encore une chose, si j'ai choisi S37**** c'est que ton script doit être exécuter avant celui qui démonte les différents systèmes de fichier... sinon le backup sera difficile
Voilà, j'espère avoir été clair, et surtout ne pas avoir dit trop de bêtises. Si tu as des problèmes pour écrire le script, continu de poster ici, on essaira de voir ça ensemble.
Yann.
Dernière modification par jAr0d (Le 25/09/2005, à 20:16)
Kubuntu 7.10
Toshiba Satellite A100-788
Linux, plus qu'un OS, une passion...
Hors ligne
#5 Le 25/09/2005, à 20:36
- LR
Re : [Résolu] Lancer un script à la fermeture
C'est parfait, c'est à la méthode de jAr0d à laquelle j'avais pensé mais je n'étais pas assez sur de moi.
Très bien, maintenant je sais comment lancer mon script au bon moment, je n'ai plus qu'à étudier les autres scripts pour voir comment coder le mien. C'est pas gagné
Merci pour votre aide, je viendrai poster ma solution ici
Hors ligne
#6 Le 25/09/2005, à 22:33
- jAr0d
Re : [Résolu] Lancer un script à la fermeture
Aucun problème
On est tous impatient de voir ça
Bonne soirée.
Yann.
Kubuntu 7.10
Toshiba Satellite A100-788
Linux, plus qu'un OS, une passion...
Hors ligne
#7 Le 28/09/2005, à 21:58
- LR
Re : [Résolu] Lancer un script à la fermeture
C'est fait, comme jarod l'a proposé. Voici mon fichier backup_etc.sh (j'ai copié samba et j'ai pas enlevé les commentaires, désolé) :
#!/bin/sh
#
# Script de Lilian.
# Backup du dossier de configuration /etc.
#
# 1. Monte /dev/md1 /mnt/etc_backup
# 2. Efface tout le contenu de /mnt/etc_backup
# 3. Copie /etc sur /mnt/etc_backup
# 4. Démonte /dev/md1
#
. /lib/lsb/init-functions
case "$1" in
stop)
log_begin_msg "Sauvegarde de /etc sur /dev/md1..."
# if ! start-stop-daemon --start --quiet --exec /usr/sbin/nmbd -- -D; then
# log_end_msg 1
# exit 1
# fi
# if [ "$RUN_MODE" != "inetd" ]; then
# if ! start-stop-daemon --start --quiet --exec /usr/sbin/smbd -- -D; then
# log_end_msg 1
# exit 1
# fi
# fi
#1. Monter /dev/md1 /mnt/etc_backup
mount /dev/md1 /mnt/etc_backup
#2. Effacer tout le contenu de /mnt/etc_backup
rm -rf /mnt/etc_backup/*
#3. Copier le /etc sur /mnt/etc_backup
cp -Pr /etc /mnt/etc_backup
#4. Démonter /dev/md1
umount /dev/md1
log_end_msg 0
;;
start)
# log_begin_msg "Stopping Samba daemons..."
# start-stop-daemon --stop --quiet --pidfile $NMBDPID
# Wait a little and remove stale PID file
# sleep 1
# if [ -f $NMBDPID ] && ! ps h `cat $NMBDPID` > /dev/null
# then
# Stale PID file (nmbd was succesfully stopped),
# remove it (should be removed by nmbd itself IMHO.)
# rm -f $NMBDPID
# fi
# if [ "$RUN_MODE" != "inetd" ]; then
# start-stop-daemon --stop --quiet --pidfile $SMBDPID
# # Wait a little and remove stale PID file
# sleep 1
# if [ -f $SMBDPID ] && ! ps h `cat $SMBDPID` > /dev/null
# then
# # Stale PID file (nmbd was succesfully stopped),
# # remove it (should be removed by smbd itself IMHO.)
# rm -f $SMBDPID
# fi
# fi
# log_end_msg 0
;;
# reload)
# log_begin_msg "Reloading /etc/samba/smb.conf (smbd only)..."
# start-stop-daemon --stop --signal HUP --pidfile $SMBDPID
# log_end_msg 0
# ;;
# restart|force-reload)
# $0 stop
# sleep 1
# $0 start
# ;;
# *)
# log_success_msg "Usage: /etc/init.d/samba {start|stop|reload|restart|force-reload}"
# exit 1
# ;;
esac
exit 0
Merci pour votre aide
Dernière modification par LR (Le 01/10/2005, à 09:18)
Hors ligne
#8 Le 28/09/2005, à 22:30
- jAr0d
Re : [Résolu] Lancer un script à la fermeture
Pas mal
Kubuntu 7.10
Toshiba Satellite A100-788
Linux, plus qu'un OS, une passion...
Hors ligne
#9 Le 28/09/2005, à 22:45
- LR
Re : [Résolu] Lancer un script à la fermeture
Merci
Bon, c'est mon premier script et déjà qu'il marche, je suis assez content. Mais je ne fais pas de récupération d'erreur ni rien alors si quelqu'un souhaite y apporter des amélioration
Hors ligne
#10 Le 01/10/2005, à 09:17
- LR
Re : [Résolu] Lancer un script à la fermeture
Correction :
En fait ce script s'exécute à chaque démarrage et à chaque fermeture. Si je veux que le backup se fasse lors de l'arrêt, c'est dans "stop" qu'il faut mettre le code. J'ai modifié mon message en conséquence.
Hors ligne
Pages : 1