An Backups denkt man ausschließlich dann, wenn es mal wieder zu spät ist
Um dem vorzubeugen, habe ich mich jetzt endlich aufgerafft und eine Backup-Lösung auf meinem Ubuntu-Notebook eingerichtet. Bis alles komfortabel funktioniert hat, waren jedoch einige Hürden zu meistern:
- Funktionierendes Snapshot-Programm finden
- USB-Platte immer unter dem selben Namen einbinden
- Möglichst ohne manuellen Aufwand Backups/ Snapshots ziehen
Punkt 1 abzuhaken war gar nicht so einfach. Entweder hab ich nur Programme gefunden welche die üblichen Backup-Mechanismen unterstützen (Full, Incremental) oder sie haben nicht wirklich funktioniert. In einer der letzten Linux User war dann ein kleiner Test von Back In Time zu finden. Das Programm kommt mit 2 Deb-Paketen daher. Einmal die Basics (Common) und dann die entsprechende Gui für QT oder GTK. Zusätzlich steht noch eine Installationsquelle als APT-Source zur Verfügung.
Nachdem eine Vorauswahl getroffen war und das Programm zuverlässig seinen Dienst verrichtet hat, wollte ich jetzt meine externe USB-Platte so einbinden, dass diese nicht unter einem dynamischen Mount eingebunden wird (z.B. /media/disk-2) sondern mit einem festen. Dies gestaltet sich im Anfangsstadium etwas schwierig. Es gibt im Internet dutzende Anleitungen die alle mehr oder weniger funktionieren. Hier die für mich funktionierende:
- Device-Infos organisieren
udevinfo -a -p /sys/block/sda/
looking at device ‘/devices/pci0000:00/0000:00:1d.7/usb8/8-3/8-3:1.0/host7/target7:0:0/7:0:0:0/block/sdc’:
KERNEL==”sdc”
SUBSYSTEM==”block”
DRIVER==”"
ATTR{range}==”16″
ATTR{removable}==”0″
ATTR{ro}==”0″
ATTR{size}==”488397168″
ATTR{capability}==”12″
ATTR{stat}==” 81157 480 652166 1059444 712102 83965 155842712 284283688 0 3771912 285419732″
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb8/8-3/8-3:1.0/host7/target7:0:0/7:0:0:0/block’:
KERNELS==”block”
SUBSYSTEMS==”"
DRIVERS==”"
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb8/8-3/8-3:1.0/host7/target7:0:0/7:0:0:0′:
KERNELS==”7:0:0:0″
SUBSYSTEMS==”scsi”
DRIVERS==”sd”
ATTRS{device_blocked}==”0″
ATTRS{type}==”0″
ATTRS{scsi_level}==”0″
ATTRS{vendor}==”WDC WD25″
ATTRS{model}==”00BB-22GUC0 “
ATTRS{rev}==”0000″
ATTRS{state}==”running”
ATTRS{timeout}==”30″
ATTRS{iocounterbits}==”32″
ATTRS{iorequest_cnt}==”0xc1ab9″
ATTRS{iodone_cnt}==”0xc1ab9″
ATTRS{ioerr_cnt}==”0×0″
ATTRS{modalias}==”scsi:t-0×00″
ATTRS{evt_media_change}==”0″
ATTRS{queue_depth}==”1″
ATTRS{queue_type}==”none”
ATTRS{max_sectors}==”240″
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb8/8-3/8-3:1.0/host7/target7:0:0′:
KERNELS==”target7:0:0″
SUBSYSTEMS==”scsi”
DRIVERS==”"
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb8/8-3/8-3:1.0/host7′:
KERNELS==”host7″
SUBSYSTEMS==”scsi”
DRIVERS==”"
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb8/8-3/8-3:1.0′:
KERNELS==”8-3:1.0″
SUBSYSTEMS==”usb”
DRIVERS==”usb-storage”
ATTRS{bInterfaceNumber}==”00″
ATTRS{bAlternateSetting}==” 0″
ATTRS{bNumEndpoints}==”02″
ATTRS{bInterfaceClass}==”08″
ATTRS{bInterfaceSubClass}==”06″
ATTRS{bInterfaceProtocol}==”50″
ATTRS{modalias}==”usb:v04B4p6830d0001dc00dsc00dp00ic08isc06ip50″
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb8/8-3′:
KERNELS==”8-3″
SUBSYSTEMS==”usb”
DRIVERS==”usb”
ATTRS{configuration}==”"
ATTRS{bNumInterfaces}==” 1″
ATTRS{bConfigurationValue}==”1″
ATTRS{bmAttributes}==”c0″
ATTRS{bMaxPower}==” 0mA”
ATTRS{urbnum}==”13600061″
ATTRS{idVendor}==”04b4″
ATTRS{idProduct}==”6830″
ATTRS{bcdDevice}==”0001″
ATTRS{bDeviceClass}==”00″
ATTRS{bDeviceSubClass}==”00″
ATTRS{bDeviceProtocol}==”00″
ATTRS{bNumConfigurations}==”1″
ATTRS{bMaxPacketSize0}==”64″
ATTRS{speed}==”480″
ATTRS{busnum}==”8″
ATTRS{devnum}==”3″
ATTRS{version}==” 2.00″
ATTRS{maxchild}==”0″
ATTRS{quirks}==”0×0″
ATTRS{authorized}==”1″
ATTRS{manufacturer}==”Cypress Semiconductor”
ATTRS{product}==”USB2.0 Storage Device”
ATTRS{serial}==”DEF10000C753A4C”
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7/usb8′:
KERNELS==”usb8″
SUBSYSTEMS==”usb”
DRIVERS==”usb”
ATTRS{configuration}==”"
ATTRS{bNumInterfaces}==” 1″
ATTRS{bConfigurationValue}==”1″
ATTRS{bmAttributes}==”e0″
ATTRS{bMaxPower}==” 0mA”
ATTRS{urbnum}==”49″
ATTRS{idVendor}==”1d6b”
ATTRS{idProduct}==”0002″
ATTRS{bcdDevice}==”0206″
ATTRS{bDeviceClass}==”09″
ATTRS{bDeviceSubClass}==”00″
ATTRS{bDeviceProtocol}==”00″
ATTRS{bNumConfigurations}==”1″
ATTRS{bMaxPacketSize0}==”64″
ATTRS{speed}==”480″
ATTRS{busnum}==”8″
ATTRS{devnum}==”1″
ATTRS{version}==” 2.00″
ATTRS{maxchild}==”6″
ATTRS{quirks}==”0×0″
ATTRS{authorized}==”1″
ATTRS{manufacturer}==”Linux 2.6.27-12-generic ehci_hcd”
ATTRS{product}==”EHCI Host Controller”
ATTRS{serial}==”0000:00:1d.7″
ATTRS{authorized_default}==”1″
looking at parent device ‘/devices/pci0000:00/0000:00:1d.7′:
KERNELS==”0000:00:1d.7″
SUBSYSTEMS==”pci”
DRIVERS==”ehci_hcd”
ATTRS{vendor}==”0×8086″
ATTRS{device}==”0x293a”
ATTRS{subsystem_vendor}==”0×1025″
ATTRS{subsystem_device}==”0x015e”
ATTRS{class}==”0x0c0320″
ATTRS{irq}==”23″
ATTRS{local_cpus}==”ffffffff,ffffffff”
ATTRS{local_cpulist}==”0-63″
ATTRS{modalias}==”pci:v00008086d0000293Asv00001025sd0000015Ebc0Csc03i20″
ATTRS{broken_parity_status}==”0″
ATTRS{msi_bus}==”"
looking at parent device ‘/devices/pci0000:00′:
KERNELS==”pci0000:00″
SUBSYSTEMS==”"
DRIVERS==”"
Aus der ganzen Ausgabe muss jetzt ein möglichst eindeutiger String für die udev-Rule zusammen gebaut werden. Wichtig ist, dass ausschließlich ein parent device Block genommen wird.
Meine Regel sieht folgendermaßen aus:
jens@aspire:/$ cat /etc/udev/rules.d/60-wd250.rules
SUBSYSTEM==”block”, SUBSYSTEMS==”scsi”, ATTRS{vendor}==”WDC WD25″, ATTRS{model}==”00BB-22GUC0 “, SYMLINK+=”wd250“, NAME=”wd250”
Mit dieser Regel wird, sobald eine Platte mit dem Vendor “WDC WD25″ und dem Model “00BB-22GUC0 “ erkannt wird, automatisch ein neues Device /dev/wd250 angelegt. Wer mehrere Platten vom gleiche Typ hat, kann auch z.B. das Attribut “ATTRS{serial}==”DEF10000C753A4C”“ anstelle des Disk-Namens hernehmen.
Damit sollte nach dem anstecken der Platte automatisch ein neues Device generiert werden.
- Was jetzt noch fehlt ist eine kleine Erweiterung im HAL-Daemon, damit die Platte auch automatisch gemountet wird. Dazu wird einfach die Datei /etc/hal/fdi/policy/preferences.fdi um folgenden Eintrag erweitert:
<device>
<match key=”block.device” string=”/dev/wd250“>
<merge key=”volume.policy.should_mount” type=”bool”>true</merge>
<merge key=”volume.policy.desired_mount_point” type=”string”>wd250</merge>
</match>
</device>
Das wars im Schnelldurchlauf. Wird die Platte angesteckt, wird also automatisch ein neues Device /dev/wd250 generiert, was dazu führt, dass HAL das neue Device automatisch nach /media/wd250 mountet.
- Geschafft …
Dank geht an:
http://reactivated.net/writing_udev_rules.html#example-usbhdd