Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Usb dumper


Para que toda la magia sea posible hay que seguir varios pasos:

  • Crear la regla UDEV para ejecutar el script de backup en cuanto se detecte un usb
  • Realizar el backup
  • Notificarnos la finalización del backup

 

vi /etc/udev/rules.d/10-usbmount.rules
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", RUN+="/usr/bin/UsbDumper.sh"

El script de backup será:

vi /usr/bin/UsbDumper.sh
#! /bin/bash
USER="XXXX"
DATE=$(date +%d-%m-%Y)
echo -e "--------------- $DATE --------------" >> /tmp/usb_dumper
echo -e "ID: $(id)" >> /tmp/usb_dumper
echo -e "-- Making necesary directories for device: $DEVNAME" >> /tmp/usb_dumper
DRIVE=$(echo $DEVNAME|awk -F "/" '{print$3}')
echo -e "DRIVE: $DRIVE" >> /tmp/usb_dumper
for PARTITION in $(cat /proc/partitions |grep -E $DRIVE'[0-9]'|awk '{print$4}'); do
    echo -e "PARTITION: $PARTITION" >> /tmp/usb_dumper
    mkdir -p /var/UsbDumper/$ID_SERIAL_SHORT'_'$DATE/$PARTITION 2>/dev/null
    mkdir -p /mnt/$ID_SERIAL_SHORT 2>/dev/null
    mount /dev/$PARTITION /mnt/$ID_SERIAL_SHORT
    echo -e "-- Copying files" >> /tmp/usb_dumper
    rsync -a /mnt/$ID_SERIAL_SHORT/ /var/UsbDumper/$ID_SERIAL_SHORT'_'$DATE/$PARTITION
    echo -e "-- Umounting drive" >> /tmp/usb_dumper
    umount /mnt/$ID_SERIAL_SHORT
done
echo -e "++ Finished" >> /tmp/usb_dumper

su $USER -c "/home/$USER/.scripts/UsbNotify.sh"

NOTA: USER debe ser asignado al usurio al que se le quiere enviar las notificaciones

Y finalmente el script de notificación que se integra con awesome, el texto a mostrar está vacío a proposito de este modo cuando termine la copia de los datos nos aparecerá un pequeño cuadrito casi inapreciable para quien no esté atento, de este modo ya sabremos cuando podemos sacar el usb.

vi /home/XXXX/.scripts/UsbNotify.sh
#!/bin/bash
USER="XXX"
AWESOME_PID=$(pidof awesome)
export $(xargs --null --max-args=1 echo < /proc/$AWESOME_PID/environ|grep DBUS_SESSION_BUS_ADDRESS)
export XAUTHORITY='/home/$USER/.Xauthority'
export DISPLAY=':0.0'
echo 'naughty.notify({ text = "" })' | awesome-client -

Nos aseguramos de que awesome fué lanzado con el parámetro dbus-launch:

vi .xinitrc
exec ck-launch-session dbus-launch --sh-syntax --exit-with-session awesome

Autor: Kr0m -- 11/03/2016 22:03:51