script de shell de Carbon Copy Cloner para expulsar la unidad de origen

1

Creé un sistema de respaldo para un amigo, usando Carbon Copy Cloner. El sistema ha estado funcionando desde enero, pero necesita una intervención regular.

El problema principal es que los discos duros externos no se expulsan antes de desconectarse. Cuando está enchufado, el sistema no los reconoce, y ahí es cuando intervengo y hago que los reconozca de nuevo.

Al usar la función CCC "después de ejecutar tareas", que le brinda la opción de pedirle que desmonte la unidad de destino después de realizar la copia de seguridad, he podido resolver la mitad del problema. CCC está montando y desmontando automáticamente el destino solo cuando es necesario. Por lo tanto, cada vez que se extrae la unidad de destino, siempre se expulsa.

Me gustaría que esto también funcione para algunas de las unidades de origen. Por supuesto, no es necesario para la unidad principal de la computadora portátil, pero hay una serie de unidades externas que se usan frecuentemente fuera del sitio. Después de que se utilicen, me gustaría que realicen una copia de seguridad al final del día y que luego se expulsen cuando hayan terminado.

He encontrado el script de shell de CCC para expulsar el destino:

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

Creo que esto funcionaría igual para la unidad de origen, si lo cambio a:

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

No estoy completamente seguro de cómo funciona este script, así que, antes de probar esto, ¿alguien ve un problema?

    
pregunta Sarah 21.05.2016 - 20:03

2 respuestas

1

En Mac OS X Server 10.6.8, el reemplazo de Sarah de $ 2 por $ 1 en el script de shell para expulsar el destino funciona para expulsar la fuente.

    
respondido por el lava37 17.06.2017 - 03:58
0

Es mucho más simple para la fuente, lo siguiente debería ser suficiente:

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

Mike

    
respondido por el bombich 23.05.2016 - 14:24

Lea otras preguntas en las etiquetas