Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1
  • 2

THEMA: Kombination des Mount-Skriptes mit rsync

Kombination des Mount-Skriptes mit rsync 30 Jun 2012 06:17 #246

  • dockschorsch
  • OFFLINE
  • Junior Boarder
  • Beiträge: 21
  • Karma: 1
Hallo,

ich nutze meine Dockstar als zentralen Datenspeicher in der Familie, wo alle Eigenen Dateien abgelegt bzw über die lokalen Rechner synchronisiert werden.

Nun will ich eine Backuplösung einrichten, die sich so verhält:

-ich stecke eine Festplatte an die Dockstar
-es werden alle relevanten Daten gesichert

Im Augenblick gehe ich noch so vor:
-ich schliesse die Festplatte an die Dockstar an
-ich gehe per SSH auf die Dockstar
-dann mounte ich die Platte mit mount /media/hddbackup_a
-dann sichere ich mit rsync - a /media/hdd/backup /media/hddbackup_a
-und die Sicherung beginnt

Nun habe ich aber das Mountskript hier im Wiki entdeckt und ich dachte mir, ich erweitere das einfach so:

#!/bin/bash
    ###
    #Konfig
    ###
     
    log="/var/log/automount.log"    ##logfile
     
    p1="/media/hddbackup_a"    #mountpoint platte 1

    rs_source="/media/hdd/backup"   #rsync Quellverzeichnis

    rs_target="/media/hddbackup_a"  #rsync Zielverzeichnis
     
    device="Western Digital Technologies, Inc."    #wie wird die platte erkannt (lsusb)
     
    ####nicht verändern####
    test -d  $log || touch $log
     
    if mount | fgrep $p1 > /dev/null 2>&1 ; then echo "$(date) bereits gemountet" >> $log && exit
    else     
    	if lsusb | egrep "$device" > /dev/null 2>&1 ; then 
    	 mount $p1 && echo "$(date) $p1 gemounted" >> $log
         rsync -a $rs_source $rs_target
         umount $p1 && echo "$(date) $p1 unmounted" >> $log
            else echo " $(date) keine Platte" >> $log && exit 1
    	fi
    fi



Er soll also nicht nur mounten, sondern auch gleich den rsync-Befehl ausführen und danach wieder unmounten. Ist das wirklich so einfach, wie ich mir das vorstelle, oder hab ich etwas wichtiges übersehen?

Und bekomme ich Probleme mit meinen USB-Geräten?

-die permanent angeschlossene Sicherungsplatte ist:
Bus 001 Device 004: ID 1058:1003 Western Digital Technologies, Inc.

da ich zwei Festplatten nutzen will (die Sicherung soll identisch auf 2 verschiedenen Platten abgelegt werden), habe ich folgende Wechselplatten:
-Sicherungsdatenträger A:
Bus 001 Device 010: ID 1058:1010 Western Digital Technologies, Inc.
-Sicherungsdatenträger B:
Bus 001 Device 011: ID 1058:1010 Western Digital Technologies, Inc.

Muss dazu das Skript noch angepasst werden? Derzeit ist die fstab so aufgebaut, dass beide (unterschiedlichen) UUIDs auf jeweils ein anderes Verzeichnis zeigen.
Wäre es auch denkbar, dass beide Platten auf dasselbe Verzeichnis zeigen und das Skript so tut, als gäbe es nur eine Platte? Oder gibt es mit so einem Konstrukt Probleme?
Letzte Änderung: 30 Jun 2012 10:07 von dockschorsch.

Aw: Kombination des Mount-Skriptes mit rsync 30 Jun 2012 10:37 #247

  • chrisge
  • OFFLINE
  • Administrator
  • Beiträge: 113
  • Karma: 4
dockschorsch schrieb:

Wäre es auch denkbar, dass beide Platten auf dasselbe Verzeichnis zeigen und das Skript so tut, als gäbe es nur eine Platte? Oder gibt es mit so einem Konstrukt Probleme?
Das wird so wahrscheinlich nur funktionieren, wenn die Partitionen auf beiden Platten die gleiche UUID haben und so lange du nicht beide Platten auf einmal dranhängst.

Ich würde eher mit usbmount (schau mal im Wiki bei Mounten) + einem bash Skript in folgender Art arbeiten (läuft bei mir so seit über 2 Jahren):
#!/bin/bash
#Cron:
#* * * * * /pfad/zum/script.sh
log="/var/log/syncit.log"
device="ID 1058:1010 Western Digital Technologies, Inc." 
lock="/var/run/syncit.lock"

test -r  $log || touch $log

if lsusb | egrep "$device" > /dev/null 2>&1 ; then echo "$(date) Festplatte angeschloßen -> fahre fort" >>$log
        if test -r $lock; then echo "$(date) es läuft bereits eine Instanz -> beende" >>$log
        else echo "$(date) Festplatte angeschloßen und gemountet -> beginne" >>$log && touch $lock >>$log && sleep 20
          #Hier muss dein Backup rein
          #+ umount
        fi
else echo "$(date) Festplatte nicht angeschloßen -> prüfe Lockfile" >>$log 
        if test -r $lock; then echo "$(date) lösche altes Lockfile -> beende" >>$log  && rm -v $lock >>$log
        else echo "$(date) kein Lockfile vorhanden -> beende" >>$log 
        fi
fi

Evtl. wäre es aber besser die Skripte über Udev Regeln direkt beim Anschließend der Platten ausführen zu lassen.
»my /home is my castle«
Letzte Änderung: 30 Jun 2012 10:39 von chrisge.

Aw: Kombination des Mount-Skriptes mit rsync 02 Jul 2012 07:44 #248

  • dockschorsch
  • OFFLINE
  • Junior Boarder
  • Beiträge: 21
  • Karma: 1
Hi,

vielen Dank, das funktioniert ganz ausgezeichnet! Nur stelle ich mir jetzt die Frage, wie ich die zweite (leider baugleiche Platte) eingebunden bekomme.

In der fstab ist es ja kein Problem, weil die Platte eine andere UUID hat, aber für das Skript wären die Platten doch identisch oder?

Bus 001 Device 010: ID 1058:1010 Western Digital Technologies, Inc.
Bus 001 Device 011: ID 1058:1010 Western Digital Technologies, Inc.

Aw: Kombination des Mount-Skriptes mit rsync 02 Jul 2012 11:04 #249

  • chrisge
  • OFFLINE
  • Administrator
  • Beiträge: 113
  • Karma: 4
dockschorsch schrieb:
In der fstab ist es ja kein Problem, weil die Platte eine andere UUID hat, aber für das Skript wären die Platten doch identisch oder?.

Wenn du die Variante mit usbmount nimmst, kannst du das Duplikat (mit anderer UUID) in der fstab lassen. Usbmount mountet dann immer die Platte, die gerade angeschloßen ist. Das Script hat damit auch keine Probleme ...so lange du nicht beide Platten auf einmal ansteckst!

Sicherer wäre es dem nach entweder udev zu verwenden oder das Skript noch durch einen Aufruf für blkid zu erweitern, wodurch die UUID dann nochmal gecheckt wird.
»my /home is my castle«

Aw: Kombination des Mount-Skriptes mit rsync 03 Jul 2012 20:48 #253

  • dockschorsch
  • OFFLINE
  • Junior Boarder
  • Beiträge: 21
  • Karma: 1
Das würde bedeuten, dass ich:

1. usbmount deinstallieren
apt-get remove usbmount


2. ein neues skript für das backup bauen, diesmal wesentlich simpler:
#!/bin/bash
mount /media/hddbackup_a
rsync -rl --log-file=/media/skript/backup_rsync_neu.log /media/hdd/backup /media/hddbackup_a
umount /media/hddbackup_a


3. eine neue udev-Regel erstellen (in /etc/udev/rules.d, Dateiname "10-usb-backup.rules):
SUBSYSTEMS=="usb", KERNEL=="sd?1", SYSFS{serial}=="57442D575837314137303332373235",SYMLINK+="backup",RUN+="/media/skript/udevskript"


4. fstab anpassen:
/dev/backup /media/hddbackup_a vfat noauto,utf8,umask=007,gid=46  0  0


Damit hängt die Udev-Regel den Datenträger fest an /dev/backup, damit stimmt der Link in der fstab immer und ich kann im Skript die Platte komfortabel mounten und umounten.

Das teste ich am Wochenende, wenn ich den Server wieder in den Fingern habe
Letzte Änderung: 03 Jan 2013 18:41 von dockschorsch. Begründung: Pfad zu udev war falsch

Aw: Kombination des Mount-Skriptes mit rsync 05 Jul 2012 21:06 #254

  • dockschorsch
  • OFFLINE
  • Junior Boarder
  • Beiträge: 21
  • Karma: 1
Läuft, herrlich

Damit ich auch mitbekomme, dass das Skript fertig ist, habe ich mir zusätzlich sendemail installiert, welches mir eine Email incl dem Log verschickt. Sobald die Mail da ist, piept mein Handy und ich kann die Platte abziehen. Die Dockstar kann ja nicht piepen und ein Blinken sehe ich nicht.
  • Seite:
  • 1
  • 2
Ladezeit der Seite: 0.78 Sekunden
Copyright © 2009-2018 mein.homelinux.com

Creative Commons License