He creado un sistema de copia de seguridad para un amigo, el uso de Carbon Copy Cloner. El sistema ha estado funcionando desde enero, pero es necesario regular la intervención.
El principal problema es que los discos duros externos no son expulsados antes de desconectar. Cuando se conecta, el sistema no los reconoce, y que cuando me intervenir y conseguir que se reconozca de nuevo.
Mediante el uso de la CCC "después de la ejecución de tareas" de la función, que le da la opción de preguntar a desmontar la unidad de destino después de la copia de seguridad, he sido capaz de resolver la mitad del problema. CCC es automáticamente montar y desmontar el destino sólo cuando sea necesario. Así que en cualquier momento la unidad de destino se retira, su siempre ya expulsado.
Me gustaría que esto funcione para algunos de el origen de las unidades. Por supuesto no es necesario para el ordenador portátil de la unidad principal, pero hay un número de unidades externas que se utilizan con frecuencia fuera de sitio. Después de que ellos están acostumbrados, me gustaría que al final del día, y, a continuación, se expulsa cuando se hayan terminado.
He encontrado la CCC de la secuencia de comandos de shell 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 este sería el mismo para la unidad de origen, si puedo cambiarlo 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 esta secuencia de comandos, así que antes de probar esto, ¿alguien ve un problema?