1 votos

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

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?

1voto

bombich Puntos 1

Es mucho más simple para la fuente, el siguiente debe ser suficiente:

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

Mike

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X