| Autor | 
    Nachricht | 
   
  
    | 
      
     | 
    
      
        
					
            Titel: Auto Backup auf Usbstick mit udev 
             Verfasst am: 29.04.2007, 20:17 Uhr
           | 
				 
       
     | 
   
  
    
      
        
          
             
            
  
            Anmeldung: 12. Mar 2005 
            Beiträge: 368 
             
            
            
           | 
         
       
     | 
    
      
        
          Da ich mich nach dem Problem hier zwangsweise mit udev, hal und co beschäftigt habe,
 
kam mir beim Lesen diverser Artikel die Idee, das es doch möglich sein müßte,
 
beim Einstöpseln eines bestimmten Usbsticks automatisch ein Backup wichtiger
 
Ordner und Dateien auszulösen und auf dem Stick zu speichern.
 
Die 4 Schritte, die zum Erfolg geführt haben, hab ich parallel notiert und poste das Ganze mal.
 
1. Usbstick vorbereiten
 
2. Usbstick eindeutig benennen
 
3. Udev Regel schreiben
 
4. Backup script erstellen
 
 
1. Usbstick vorbereiten
 
Usbstick einstecken, das KDE-Fensterchen was nun aufgeht,
 
mit 'nichts unternehmen' und 'dauerhaft speichern' beantworten.
 
Gerätedatei mit 'dmesg' herausfinden, oder einfach mit der Maus über das entsprechende Icon fahren
 
In meinem Fall ist der Usbstick als '/dev/sdg1' erkannt worden, bitte an die eigenen Gegebenheiten anpassen.
 
Formatieren mit einem Linuxdateisystem, um die Rechte beim Backup beizubehalten,
 
hab mich für ext2 entschieden, Dateisystem erstellen:
 
Code: 
mke2fs /dev/sdg1
 
 
Usbstick kurz rausziehen und wieder einstecken, auf das Icon klicken, um ihn zu mounten
 
Mount Ordner ist z.B.: /media/disk
 
Backup Ordner erstellen und ihm Schreibrechte für alle geben,
 
letzteres ist vielleicht nicht nötig, aber was solls.
 
Code: 
mkdir /media/disk/backup
 
chmod 777 /media/disk/backup
 
 
Damit ist der Stick bereit Daten aufzunehmen
 
 
2. Dem Usbstick einen eindeutigen Namen (z.B.: backup2904) geben,
 
zur einwandfreien Identifizierung später im script:
 
Code: 
e2label /dev/sdg1 backup2904
 
 
3. Udev Regel schreiben
 
Informationen über den Stick abfragen:
 
Code: 
udevinfo -a -p $(udevinfo -q path -n sdg1)
 
 
Ausgabe (stark verkürzt) sieht ungefähr so aus
 
Code: 
    KERNEL=="sdg1"
 
    SUBSYSTEM=="block"
 
    ATTRS{serial}=="5B7312001005"
 
 
Falls der Stick eine Seriennummer hat, kann man sich die o.g. Namensgebung sparen,
 
er liesse sich hierüber wahrscheinlich einwandfrei identifizieren, hat aber leider nicht jeder,
 
also werte ich hier auch nur KERNEL und SUBSYSTEM aus und lass dann das backup script laufen,
 
die entsprechende udev -Regel schreiben, als root:
 
Code: 
echo 'KERNEL=="sd[g-i]1", SUBSYSTEM=="block", IMPORT{program}="vol_id --export %N", ACTION=="add", ENV{ID_FS_LABEL}=="backup2904", RUN+="/usr/local/bin/backup2904 %k"' > /etc/udev/rules.d/00_backup.rules
 
 
Der Dateiname der Regel sollte schon mit '00...' anfangen, damit sie als erstes ausgeführt wird
 
und natürlich auch die Endung '.rules' haben.
 
"sd[g-i]1" begrenzt die Devicenamen der Sticks auf sdg1, sdh1 und sdi1
 
IMPORT{program}="vol_id --export %N" das Programm 'vol_id' wird ausgeführt und gibt einige Variablen zur Auswertung zurück,
 
dies ist in einer root Konsole leicht nachvollziehbar mit dem Befehl
 
/lib/udev/vol_id --export /dev/sdg1
 
ACTION=="add" sorgt dafür das das Skript nur nach Einstecken des Sticks ausgeführt wird
 
ENV{ID_FS_LABEL}=="backup2904" hier wird nachgefragt, ob es der "richtige" Stick ist
 
RUN+="/usr/local/bin/backup2904 %k Skript ausführen, %k ist der Devicename, der dem Skript als Parameter mitgegeben wird
 
Nach Ändern oder Neuerstellen einer udev -Regel, sollte oder muß das System neugestartet werden.
 
 
4. ausführbares script /usr/local/bin/backup2904 erstellen:
 
der user sollte der Gruppe 'staff' angehören, sonst müssen die nächsten Schritte als root gemacht werden:
 
Code: 
echo '#!/bin/sh' > /usr/local/bin/backup2904
 
chmod 755 /usr/local/bin/backup2904
 
 
Datei mit kwrite editieren:
 
Code: 
kwrite /usr/local/bin/backup2904
 
 
Zunächst nachfragen ob das Backup durchgeführt werden soll,
 
dann wird der Stick gemountet, der Mountordner erfragt und der Zielordner festgelegt, zuletzt gibt es eine Vollzugsmeldung.
 
Es folgen einige Beispiele (natürlich selber anpassen) zum Sichern mit 'rsync'.
 
Code: 
#!/bin/sh
 
 
export XAUTHORITY=/home/blauweiss/.Xauthority
 
export DISPLAY=:0.0
 
Xdialog --yesno "Backup auf /dev/$1 durchführen?" 5 40
 
if [ $? -gt 0 ]; then
 
   exit 0
 
fi
 
 
pmount /dev/$1
 
MOUNTORDNER="$(grep "/dev/$1 " /etc/mtab | awk '{print $2}')/backup"
 
rsync -a /home/blauweiss/.bashrc "$MOUNTORDNER/home/" 2>/dev/null
 
rsync -a /home/blauweiss/.gimp-2.2/{plug-ins,scripts,brushes} "$MOUNTORDNER/home/.gimp-2.2/" 2>/dev/null
 
rsync -a --delete /home/blauweiss/.mozilla "$MOUNTORDNER/home/" 2>/dev/null
 
rsync -a --delete /home/blauweiss/.mozilla-thunderbird "$MOUNTORDNER/home/" 2>/dev/null
 
   # Hab mir angewöhnt unwichtige Dateien und Ordner in /home/blauweiss/tmp
 
   # mit einem Unterstrich als erstes Zeichen zu benennen,
 
   # diese werden im nächsten Befehl von der Sicherung ausgenommen:
 
rsync -a --delete --exclude "_*" /home/blauweiss/tmp "$MOUNTORDNER/home/" 2>/dev/null
 
rsync -a /etc/fstab "$MOUNTORDNER/etc/" 2>/dev/null
 
rsync -a /etc/apt/sources.list "$MOUNTPUNKT/etc/apt/" 2>/dev/null
 
sync
 
pumount /dev/$1
 
Xdialog --msgbox "Backup durchgeführt! \nStick kann abgezogen werden" 7 40
 
 
 
Da rsync wohl nicht mehr als einen Ordner zugleich im Zielverzeichnis erstellen kann,
 
es sind keine zusätzlichen Unterordner gleichzeitig möglich?,
 
ist auch hierbei eine gewisse Reihenfolge einzuhalten,
 
oder man behilft sich so, wenn man z.B. das Backup-script selbst sichern möchte:
 
Code: 
mkdir -p $MOUNTPUNKT/usr/local/bin
 
rsync -a /usr/local/bin/backup2904 "$MOUNTPUNKT/usr/local/bin/" 2>/dev/null
 
 
Das wars, zur Sicherheit das System nochmal neustarten (Änderungen am Script erfordern keinen Neustart)
 
Beim nächsten Einstöpseln dieses "Backup-Sticks", sollte auf Nachfrage ein Backup eingeleitet werden.
 
Vor dem Abziehen warten bis das Lämpchen am Stick aus bleibt.
 
Quellen:
 
http://www.tu-chemnitz.de/urz/kurse/unt ... vices.html
 
http://www.reactivated.net/writing_udev_rules.html
 
http://forums.gentoo.org/viewtopic-t-350769.html
 
http://wiki.ubuntuusers.de/udev?highlight=%28udev%29 | 
         
        
          
          
            
          
             _________________ Gruss an alle Kanotix-Fans, blauweiss
            
  Zuletzt bearbeitet von blauweiss am 05.06.2007, 18:23 Uhr, insgesamt 3 Male bearbeitet
           | 
         
         
	        |     | 
	       
       
     | 
   
  
    | 
      
      
     | 
   
  
      | 
   
  
    | 
      
     | 
    
      
        
          
             
           | 
					
            Titel: Auto Backup auf Usbstick mit udev 
             Verfasst am: 30.04.2007, 09:13 Uhr
           | 
				 
       
     | 
   
  
    
      
        
          
             
             
  
            Anmeldung: 17. Dez 2003 
            Beiträge: 700 
            Wohnort: Berlin 
            
            
           | 
         
       
     | 
    
      
        
          | 
 Zitat: 
 
Vor dem Abziehen warten bis das Lämpchen am Stick aus bleibt. 
 
 
 
Besser vorher "sync" ausführen oder Rechtsklick->Sicher entfernen
 
Der Befehl "sync" könnte z.B. auch im Skript stehen.
 
 
Ciao Martin | 
         
        
          
          
            
          
             _________________ omnia vincit pecunia
            
           | 
         
         
	        |     | 
	       
       
     | 
   
  
    | 
      
      
     | 
   
  
      | 
   
  
    | 
      
     | 
    
      
        
					
            Titel:  
             Verfasst am: 30.04.2007, 10:04 Uhr
           | 
				 
       
     | 
   
  
    
      
        
          
             
            
  
            Anmeldung: 12. Mar 2005 
            Beiträge: 368 
             
            
            
           | 
         
       
     | 
    
      
        
          Danke für den Hinweis, denk mir mal der 'sync' Befehl sollte als letztes
 
ausgeführt werden, ändere das mal und auch die 'if' Abfrage war in der
 
Syntax falsch. | 
         
        
          
          
            
          
             _________________ Gruss an alle Kanotix-Fans, blauweiss
            
           | 
         
         
	        |     | 
	       
       
     | 
   
  
    | 
      
      
     | 
   
  
      | 
   
  
    | 
      
     | 
    
      
        
					
            Titel:  
             Verfasst am: 30.04.2007, 12:49 Uhr
           | 
				 
       
     | 
   
  
    
      
        
          
             
            
  
            Anmeldung: 12. Mar 2005 
            Beiträge: 368 
             
            
            
           | 
         
       
     | 
    
      
        
          Nochn paar kleine Änderungen:
 
ACTION=="add" der udev Regel hinzugefügt und
 
und eine Sicherheitsabfrage, ob das Backup ausgeführt werden soll. | 
         
        
          
          
            
          
             _________________ Gruss an alle Kanotix-Fans, blauweiss
            
           | 
         
         
	        |     | 
	       
       
     | 
   
  
    | 
      
      
     | 
   
  
      | 
   
  
    | 
      
     | 
    
      
        
					
            Titel:  
             Verfasst am: 05.06.2007, 18:25 Uhr
           | 
				 
       
     | 
   
  
    
      
        
          
             
            
  
            Anmeldung: 12. Mar 2005 
            Beiträge: 368 
             
            
            
           | 
         
       
     | 
    
      
        
          Man lernt ja nie aus...
 
Hab den ersten Post nochmals geändert:
 
Die 'if then' Abfrage im Skript, ob es sich um den backup2904 USB-Stick handelt,
 
kann man sich sparen, auch dies läßt sich mit einer udev-Regel erfassen
 
IMPORT{program}="vol_id --export %N"
 
und anschl.
 
ENV{ID_FS_LABEL}=="backup2904"
 
und noch eine Vollzugsmeldung hinzugefügt. | 
         
        
          
          
            
          
             _________________ Gruss an alle Kanotix-Fans, blauweiss
            
           | 
         
         
	        |     | 
	       
       
     | 
   
  
    | 
      
      
     | 
   
  
      | 
   
  
  
    | 
      
     | 
   
 
					 | 
				 
			 
		 | 
	 
 
  |  
  |