PDA

Bekijk de volledige versie : Externe Festplatte vor abziehen unmounten?



wolder
14-06-2010, 14:04
Hallo zusammen,

meine externe Festplatte ist fast zuhause und soll am Router angeschlossen werden. Jetzt mache ich mir aber schon gedanken, wie ich die Platte am besten mal vom Router trennen kann, um sie mal mitzunehmen.

Dabei bin ich auf http://wl500g.info/showthread.php?t=22306&highlight=externe+festplatte gestossen.

Ich wollte das jetzt mit einem USB-Stick ausprobieren.

Es ist doch richtig, dass ich die Platte erst unmounten muss, damit ich sie sicher vom Router trennen kann oder kann ich sie einfach abziehen?

getestet mit diesem Code in /usr/local/sbin/ez-setup

#!/bin/sh

mounted='mount | grep /tmp/mnt/disc1_1'
if [ "$mounted" ]; then
unmount /tmp/mnt/disc1_1

else
/opt/etc/init.d/rc.unslug start
fi


Ausführbar hab ich das schon gemacht.

Folgende Meldung kommt:

/usr/local/sbin/ez-setup: line 9: unmount: not found


ist der unmount-befehl falsch?

gruß wolder

wolder
14-06-2010, 14:35
So,
erster Fehler gefunden.

Es muss nicht unmount sonder umount heissen.....

Wenn ich jetzt ez-setup ausführe, dann ist zwar /tmp/mnt/disc1_1 vorhanden, aber ich kann nicht drauf zugreifen bzw. ist leer. Sollte eigentlich soweit ok sein.
Wenn ich aber ez-setup wieder ausführe, dann sollte doch der Stick wieder gemounted werden oder nicht?

Als Fehlermeldung kommt immer

umount: can't umount /tmp/mnt/disc1_1: Invalid argument


Ich glaube, ich habe einen Denkfehler bzw. das Script nicht verstanden.

gruß wolder

bauerj
14-06-2010, 19:17
Also erstmal speichert man die Ausgaben von Befehlen mit backticks (`) und nicht mit ';)

Das ist vllt schon der Fehler? kann es grad nicht testen, sonst musst halt mal gucken was echo $mounted ausgibt.

Achja, ich würde lazy umounten (umount -l) weil es sonst meist Probleme mit Programmen gibt.

LG

newbiefan
14-06-2010, 22:03
Der Teil nach else ist völlig falsch und bringt gar nichts, ausser dass die gesamte Optware beendet wird.


Ich würde es zum unmounten so machen:
(Erfordert aber zuerst: ipkg install lsof)



#! /bin/sh

mts=0
hd2mounted=`cat /proc/mounts | awk '/disc1/{print($1)}'`

if [ "$hd2mounted" ] ; then
for i in `cat /proc/mounts | sort -r | awk '/disc1/{print($1)}'`
do
[ -n "`/opt/sbin/lsof -t "$i"`" ] &&
/opt/sbin/lsof -t "$i" | sort -nr | xargs kill -9
sleep 2s
/bin/mount -oremount,ro $i #man kann auch umount nehmen
done
logger -t "HDD $hd2mounted sauber entfernt und auf read only gesetzt"
else #hier muss gemounted werden, da nichts gemounted ist
for mtp in `ls /dev/discs/disc1/ | awk '/part/{print($10)}'`
do
let mts=$mts+1
/bin/mount -t ext3 -o rw /dev/discs/disc1/$mtp /tmp/mnt/disc1_$mts
logger -t "HDD wurde auf /tmp/mnt/disc1_$mts gemountet."
done
#hier könnte ein eigener Startscript wie rc.unslung auf der zweiten Platte aufgerufen werden
fi



Das beendet alle eventuelle Programme auf der zweiten Harddisk und remounted sauber auf read only - das ist sicher.
Wenn du z.Bspl. mehrere Partitionen darauf hast, ist das ein riesiger Vorteil, es werde alle disc1 umounted bzw. auf read only gestellt.
Natürlich kannst du das auch für die disc0 verwenden usw.....

Das neue mounten setzt voraus, dass das Betriebssystem die Platte auch richtig als Device einträgt - da bin ich allerdings nicht ganz sicher, ob das Betriebssystem das auch sauber durchführt (also ein und austrägt).

Das Ganze habe ich nicht getestet, es sind letztlich Codeschnipsel aus diesem Forum (hauptsächlich russischen Teil)

Ja und wie du den Script nennen willst, bleibt natürlich Dir überlassen - aber Sinn macht ohnehin nur der EZ-Button.
Viel Spass

wolder
16-06-2010, 09:32
Jo danke.

hat soweit funktioniert, zumindest das meiste.

Danke und Gruß
wolder