Bonjour,
Je cherche à lancer un script de sauvegarde (en root) quand j'allume un disque dur usb.
Est ce que quelqu'un a des pistes?
J'ai cherché du coté de Hotplug mais il semble que ca n'existe plus sous Suse ...
Merci de votre aide ^^
# s/hotplug/udev
Posté par Anonyme . Évalué à 2.
ca devrait éclairer ton chemin
[^] # Re: s/hotplug/udev
Posté par Siegfried . Évalué à 1.
Je viens de tester ca fonctionne nickel !!
[^] # Re: s/hotplug/udev
Posté par zx81 . Évalué à 1.
voir ici: http://linuxfr.org/forums/36/18113.html
[^] # Re: s/hotplug/udev
Posté par Siegfried . Évalué à 1.
J'ai vu ton post ...
D'autrepart mon script de sauvegarde ne va pas jusqu'au bout ...
Pourrais tu me montrer le tien?
Merci ;-)
[^] # Re: s/hotplug/udev
Posté par zx81 . Évalué à 2.
Dans ma règle udev, j'appelle un 1er script qui lance le deuxième en arrière plan. Le tout avec un verrou basé sur l'existence d'un fichier qui évite de le relancer si il tourne déja.
Désolé, mes scripts ne sont pas dispos car ils contiennent des dépendances vers d'autres scripts (et ce n'est pas libre ;-( car pas encore entièrement fini et dépoussiérés de choses "en dur")
Mais bon, voici quelques extraits:
-----------------------------------
la règle udev:
# detect exactly a given external usb disk (brand/model/serial)
# then launch backup to it
# to find sysfs{*} data:
# 1) udevinfo -q path -n /dev/sdX (or -q all to see all values)
# 2) udevinfo -a -p value_from_previous_command
# NOTE: run command must be given with full path
# variable ACTION can be tested (will be "add" or "remove")
# WARNING: script is called 2 times on disk insertion !!!
# In fact, one time for the disk and one time for each partition !!!
# WARNING: remove does not work, script will NOT be called on disk removal !!!
BUS=="usb", SYSFS{idProduct}=="xxxx", SYSFS{idVendor}=="xxxx", SYSFS{serial}=="xxxxxxxxxxxxxxxx", NAME="%k", SYMLINK+="diskusb4backup%n", OWNER="root", GROUP="root", MODE="0770", RUN+="/usr/local/sbin/backup_usbdisk.sh"
-----------------------------------
le 1er script:
#!/bin/bash
# this script will be called by the udev rule which detects a certain
# external usb disk based on manufacturer, model and serial number
#
# BUG: it is called many times (for disk and for each partitions)
logger -t xxx $0 started
# random delay 0..9
DELAY=$(($RANDOM % 10))
logger -t xxx $0 sleeping for ${DELAY} seconds...
sleep ${DELAY}
bash backup_usbdisk2.sh tag &
logger -t xxx $0 finished
-----------------------------------
le 2ème script:
#!/bin/bash
# backup_usbdisk2.sh
# called by backup_usbdisk.sh
set -x
CURR_DATETIME=$(date "+%F_%H:%M:%S_%N")
logger -t xxx "$0 started : udev action=${ACTION} at ${CURR_DATETIME} , user=$(whoami)"
# check tag argument
if [ "$1" != "tag" ]; then
logger -t xxx "$0 : Script should not be called directly !"
exit 1
fi
# source common functions
COMMFONC_FILE="common_funcs.sh"
which ${COMMFONC_FILE} >/dev/null 2>&1
if [ $? -eq 0 ]; then
. ${COMMFONC_FILE}
else
logger -t xxx "$0 : Script file with common functions (${COMMFONC_FILE}) not found !"
exit 1
fi
# source config file
CONFIG_FILE="/etc/xxx/backup.config"
which ${CONFIG_FILE} >/dev/null 2>&1
if [ $? -eq 0 ]; then
. ${CONFIG_FILE}
else
logger -t xxx "$0 : Config file (${CONFIG_FILE}) not found !"
exit 1
fi
# script execution is blocked ?
if [ "${USBDISK_RUNBLOCK}" == "1" ]; then
logger -t xxx "$0 : Script execution is actually blocked by config file option !"
exit 1
fi
# exit function
trap_exit () {
if [ "$MOUNTED" == "1" ]; then
umount ${DISK_PART} 2>/dev/null
fi
script_unlock >/dev/null
}
export -f trap_exit
trap trap_exit EXIT SIGINT SIGTERM
# lock execution (bug ? udev will call this script many times !)
if [ "$(test_script_lock)" == "1" ]; then
logger -t xxx "$0 is already running..."
sleep 1s
exit 1
fi
script_lock >/dev/null
# do one backup type
one_backup () {
# ici y'a le backup à proprement parler...
MOUNTED=0
sync
}
MOUNTED=0
if [ "${ACTION}" == "add" ]; then
one_backup
if [ "${ACTION}" == "remove" ]; then
# nothing to do ?
logger -t xxx "$0 : Remove done"
fi
script_unlock >/dev/null
exit 0
Quand j'aurais tout fini, je le mettrais à disposition car il permet de sauvegarder sur CD ou DVD en faisant automatiquement des "rondelles" de la bonne taille + des fichiers par2 pour l'ecc. Je n'ai rien trouvé de tout prêt pour faire ça donc je me suis lancé la dedans...
/
[^] # Re: s/hotplug/udev
Posté par Siegfried . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.