Skrypt powłoki Carbon Copy Cloner do wysuwania dysku źródłowego

1

Stworzyłem system tworzenia kopii zapasowych dla znajomego, używając Carbon Copy Cloner. System działa od stycznia, ale wymaga regularnej interwencji.

Głównym problemem jest to, że zewnętrzne dyski twarde nie są wysuwane przed odłączeniem. Po podłączeniu system nie rozpoznaje ich, i wtedy interweniuję i każę je rozpoznać ponownie.

Korzystając z funkcji „po uruchomieniu zadań” CCC, która umożliwia poproszenie go o odmontowanie dysku docelowego po utworzeniu kopii zapasowej, udało mi się rozwiązać połowę problemu. CCC automatycznie instaluje i odmontowuje miejsce docelowe tylko w razie potrzeby. Dlatego za każdym razem, gdy dysk docelowy jest usuwany, zawsze jest już wysuwany.

Chciałbym, aby działało to również w przypadku niektórych napędów źródłowych. Oczywiście nie jest to konieczne w przypadku głównego dysku laptopa, ale istnieje wiele dysków zewnętrznych, które są często używane poza witryną. Po ich użyciu chciałbym, aby utworzyli kopię zapasową pod koniec dnia, a następnie wysunęli się, gdy skończą.

Znalazłem skrypt powłoki CCC do wysuwania miejsca docelowego:

source="$1"
dest="$2"
exitStatus=$3

####Inserted script to run only if backup successful (exitStatus=0)

if [ "$exitStatus" = "0" ]; then
    # foo
else
    # bar
fi

####Eject destination drive

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

Myślę, że to działałoby tak samo dla napędu źródłowego, jeśli zmienię go na:

source="$1"
dest="$2"
exitStatus=$3

if [ "$exitStatus" = "0" ]; then
    # foo
else
    # bar
fi

devID=`diskutil info "$1" | awk '/Device Identifier/ {print $NF}'`
if [ "$devID" != "" ]; then
    (sleep $delay; diskutil unmountDisk "$devID"; diskutil eject "$devID") &
else
    (sleep $delay; diskutil eject "$1"; if [ $? -ne 0 ]; then diskutil    unmountDisk "$1"; fi) &
fi

Nie jestem do końca pewien, jak działa ten skrypt, więc zanim wypróbuję to, czy ktoś widzi problem?

Sarah
źródło

Odpowiedzi:

1

Dla źródła jest to znacznie prostsze, wystarczą następujące:

#!/bin/sh
diskutil eject "$1"

Mikrofon

bombich
źródło
1

W systemie Mac OS X Server 10.6.8 zastąpienie przez Sarah 2 USD 1 USD w skrypcie powłoki w celu wysunięcia miejsca docelowego działa w celu wysunięcia źródła.

lawa37
źródło