Carbon Copy Cloner script di shell per espellere l'unità sorgente

1

Ho creato un sistema di backup per un amico, utilizzando Carbon Copy Cloner. Il sistema è attivo e funzionante da gennaio, ma necessita di un intervento regolare.

Il problema principale è che i dischi rigidi esterni non vengono espulsi prima della disconnessione. Quando viene collegato, il sistema non li riconosce, e in quel momento intervengo e gli chiedo di riconoscerli di nuovo.

Usando la funzione "after run tasks" di CCC, che ti dà la possibilità di chiedere di smontare l'unità di destinazione dopo il backup, sono stato in grado di risolvere la metà del problema. CCC sta automaticamente montando e smontando la destinazione solo se necessario. Quindi ogni volta che viene rimossa l'unità di destinazione, è sempre stata espulsa.

Mi piacerebbe che funzionasse anche per alcune delle unità sorgente. Naturalmente non è necessario per l'unità principale del portatile, ma ci sono un certo numero di unità esterne che vengono spesso utilizzate fuori dal sito. Dopo che sono stati utilizzati, mi piacerebbe che eseguissero il backup alla fine della giornata, e quindi espellere quando hanno finito.

Ho trovato lo script di shell di CCC per l'espulsione della destinazione:

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

Penso che funzionerebbe allo stesso modo per il disco di origine, se lo cambio in:

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

Non sono completamente sicuro di come funzioni questo script, quindi prima di provare questo, qualcuno ha riscontrato un problema?

    
posta Sarah 21.05.2016 - 20:03
fonte

2 risposte

1

Su Mac OS X Server 10.6.8, la sostituzione di Sarah di $ 2 con $ 1 nello script della shell per l'espulsione della destinazione funziona per espellere l'origine.

    
risposta data 17.06.2017 - 03:58
fonte
0

È molto più semplice per l'origine, il seguente dovrebbe essere sufficiente:

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

Mike

    
risposta data 23.05.2016 - 14:24
fonte

Leggi altre domande sui tag