Shell: Volume von Datei auswerfen

leo-magic

Aktives Mitglied
Thread Starter
Dabei seit
24.12.2004
Beiträge
1.178
Reaktionspunkte
4
Hallo zusammen

ich kann von Carbon Copy Cloner einen Datei/Verzeichnis Pfad an ein Shell Script weitergeben.

Nun möchte ich im Shell Script das Volume auswerfen, auf dem diese Datei/dieses Verzeichnis liegt.

Wie komme ich an den Identifier des Volumen, auf dem die Datei aus dem Pfad liegt?

Danke und Gruss!

Léo
 
Code:
$ cd /Volumes/Media/Movies/
$ df . | tail -1  | awk '{ print $9 }'

Geht bestimmt auch effizienter.
 
Warum läßt du nicht den ccc das Volume auswerfen ?
CCC kann nur das Zielvolume auswerfen, ich möchte aber das zu kopierende Volume auswerfen. (CCC macht Backup von USB Stick beim Einstecken und wirft ihn wieder aus)

Werde das so mal probieren.

Danke und Gruss

Léo
 
$mountpath=$(echo $filename | cut -d/ -f1-3)
$disk=$(mount | grep $mountpath | cut -d" " -f1)
 
Shellscript im Terminal.....aber sorry, die beiden $ am Anfang waren zu viel:

mountpath=$(echo $filename | cut -d/ -f1-3)
disk=$(mount | grep $mountpath | cut -d" " -f1)

In der Variable filename muss dein Dateinamen stehen, in der Variablen disk landet dann das entsprechende /dev/diskxx
 
Hmm.. Klappt noch immer nicht.

Code:
mountpath=$("/Volumes/USB-LEO/DEMO\ BACKUP" | cut -d/ -f1-3)
disk=$(mount | grep $mountpath | cut -d" " -f1)
ergibt in Terminal:

line 4: /Volumes/USB-LEO/DEMO\ BACKUP: No such file or directory

usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]

[-e pattern] [-f file] [--binary-files=value] [--color=when]

[--context[=num]] [--directories=action] [--label] [--line-buffered]

[--null] [pattern] [file ...]
 
Also wenn es immer die gleiche Disk ist die ausgeworfen werden soll, dann kann das auch Applescript:
Code:
    do shell script "diskutil unmount NameDerHD"
 
Also wenn es immer die gleiche Disk ist die ausgeworfen werden soll, dann kann das auch Applescript:
Code:
    do shell script "diskutil unmount NameDerHD"
Es ist nicht immer die gleiche Disk... Und es funktioniert plötzlich nicht mehr, wenn der Name des Disks sich ändert...

Werde es heute nochmals versuchen, danke!
 
Mehrere Scripts erstellen und per Abfrage des Namen das richtige starten.

Du hast nicht erwähnt, daß es das zu sichernde Medium sein soll, zum auswerfen.:)
 
Bestens! Mit dem Script klappt es wunderbar, allerdings funktioniert die "Notification" nicht. Wenn ich das Script direkt im Terminal aufrufe, kommt die "Notification", wenn ich das Script durch Carbon Copy Cloner aufrufen lasse, nicht. Der Ton kommt immer.

Woran liegt das?

Danke und Gruss!
Léo

Code:
#!/bin/sh


mountpath=$(echo "$1" | cut -d/ -f1-3)
disk=$(mount | grep $mountpath | cut -d" " -f1)

if [ "$disk" != "" ]; then
    (diskutil unmountDisk "$disk"; diskutil eject "$disk"; osascript -e 'display notification "Der Stick kann nun wieder entfernt werden." with title "Backup"'; /usr/bin/afplay "/System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/system/burn complete.aif"
) &
else
    (diskutil eject "$disk"; if [ $? -ne 0 ]; then diskutil unmountDisk "$disk"; osascript -e 'display notification "Der Stick kann nun wieder entfernt werden." with title "Backup"'; /usr/bin/afplay "/System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/system/burn complete.aif"; fi) &
fi
 
if [ "$disk" != "" ]; then (......)
else (diskutil eject "$disk"; if [ $? -ne 0 ]; then diskutil unmountDisk "$disk"; osascript -e 'display notification "Der Stick kann nun wieder entfernt werden." with title "Backup"'; /usr/bin/afplay "/System/Library/Components/CoreAudio.component/Contents/SharedSupport/SystemSounds/system/burn complete.aif"; fi)
fi

In das else kommst du wenn $disk="" ist ..... was soll dann
diskutil eject "$disk" bringen?
 
Haha, ehrlich gesagt: keine Ahnung. Das ist ein Skriptteil von Carbon Copy Cloner. Das ist das Sample-Script von Carbon Copy Cloner (allerdings für ein Image als Backup-Ziel und nicht als Quelle.

Code:
#!/bin/sh

# the 60-second delay is intended to give OS X enough time to
# finish rebuilding any startup caches on the destination
# If your destination does not have an installation of OS X,
# you can drop the delay
delay=60


#### No edits required below this line ####

devID=`diskutil info "$2" | awk '/Device Identifier/ {print $NF}'`
if [ "$devID" != "" ]; then
    (sleep $delay; diskutil unmountDisk "$devID"; diskutil eject "$devID") &
else
    (sleep $delay; diskutil eject "$2"; if [ $? -ne 0 ]; then diskutil unmountDisk "$2"; fi) &
fi
 
Code:
osascript -e 'tell app "System Events" to display notification ...'

Leider auch nicht... Keine Notification beim Aufrufen aus Carbon Copy Cloner. Ausgeworfen wird das Volume und der Ton wird abgespielt. Aber keine Notification...

Code:
osascript -e 'tell app "System Events" to display notification "Der Stick kann nun wieder entfernt werden." with title "Backup"'
 
probier mal zum testen:
Code:
osascript -e 'tell app "System Events" to display dialog "test"'
dann müsste ein dialogfenster aufgehen.

wenn nicht, muss evtl. noch ein "delay 1" eingebaut werden.
 
Zurück
Oben Unten