Monday, December 3, 2007

Configuring a USB EXT HDD to mount using udev.

PURPOSE - When I plug in my ext USG hdd I want it to autmatically start a backup. Backup should be incremental. And the file system should un mount at the end so it won't get rooted when it finishes....

1 - setup fstab to locate usb hdd at /srv/extusbhdd

# /etc/fstab: static file system information.
#
#
/dev/vg1/public /srv/ArchivedData ext3 defaults,noatime,errors=remount-ro 0 1
/dev/vg2/activedata /srv/ActiveData ext3 defaults,noatime,errors=remount-ro 0 1
/dev/InitioUSBHDD /media/usbexthdd ext3 defaults,errors=remount-ro 0 0

2 - Configure UDEV to set off a event when a usb drive is connected




sgoggin@Orangutang:/etc/udev$ ls

rules.d udev.conf
sgoggin@Orangutang:/etc/udev$ cd rules.d
sgoggin@Orangutang:/etc/udev/rules.d$ ls

00-init.rules 25-iftab.rules 65-persistent-storage.rules 85-ifupdown.rules 99-udevmonitor.rules
05-options.rules 30-cdrom_id.rules 80-programs.rules 85-lvm.rules README
10-local.rules 40-permissions.rules 85-alsa.rules 85-mdadm.rules
20-names.rules 60-symlinks.rules 85-hdparm.rules 85-pcmcia.rules
25-dmsetup.rules 65-persistent-input.rules 85-hwclock.rules 90-modprobe.rules

sgoggin@Orangutang:/etc/udev/rules.d$ cat 10-local.rules


BUS=="usb", SYSFS{manufacturer}=="Initio", KERNEL=="sd?1", NAME="InitioUSBHDD", SYMLINK="usbdevices/InitioUSBHDD", RUN+="/usr/local/bin/udevmountusb"


3- Script to do backup

vi exthddbak_goggin_incremental
#!/bin/sh

tmp=/tmp/ELBGstatus-report-`date +%F`
touch $tmp && chmod 600 $tmp

date=`date "+%Y-%m-%dT%H:%M:%S"`

logger ORANGUTANG ExtUSB Goggin Backup - $date START

echo "Subject: Status of ORANGUTANG ExtUSB Goggin Backup - $date \n" > $tmp

logger ORANGUTANG ExtUSB Goggin Backup - $date START RSYNC
rsync -aP --link-dest=/srv/extusbhdd/Backups/current /srv/ActiveData/Goggin /srv/extusbhdd/Backups/back-$date >> $tmp

rm /srv/extusbhdd/Backups/current
ln -s back-$date /srv/extusbhdd/Backups/current

logger ORANGUTANG ExtUSB Goggin Backup - $date SENDMAIL
sendmail -f penelopy stuart.goggin@gmail.com < $tmp

logger ORANGUTANG ExtUSB Goggin Backup - $date CLEANUP
rm $tmp

logger ORANGUTANG ExtUSB Goggin Backup - $date DONE



4 - Script to be called to do automount when usb drive plugged in.

Located /usr/local/bin/udevmountusb
#!/bin/sh -e

logger USB HDD Detected
mount /dev/InitioUSBHDD
logger exthddbak_goggin_incremental
exthddbak_goggin_incremental
logger umount /dev/InitioUSBHDD
umount /dev/InitioUSBHDD


RESULTS
- Works - But I need some way to indicate when the drive can be removed.

No comments: