|  |  | # Esecuzione di azioni Prima e Dopo le operazioni di Backup

Spesso, quando si ha backup che viene eseguito in base ad una programmazione, si possono associare azioni da eseguire prima o dopo che i file vengono effettivamente copiati. CCC offre la possibilità di eseguire script di shell prima e dopo un backup, smontare o impostare la destinazione come disco di avvio, e le opzioni di gestione di risparmio energia come lo stop, il riavvio e lo spegnimento

## Attivare il volume di origine o di destinazione prima dell'inizio di un attività di backups

Senza alcuna configurazione aggiuntiva, CCC tenterà di montare volumi di origine e di destinazione prima di iniziare un'operazione programmata di backup. Questo vale per molti diversi tipi di volume,- volumi normali su hard disk collegati localmente, immagini disco, volumi di rete e volumi criptati (solo Lion). Se il volume origine o destinazione é su un disco che è fisicamente collegato al Mac (ad esempio via Firewire o USB), ma non è montato, CCC può "vedere" quel dispositivo e tenterà di attivarlo. Se l'origine o la destinazione è un volume di rete, CCC otterrà le credenziali che si utilizzano per montare tale dispositivo quando si crea l'operazione pianificata, e utilizzare tali credenziali per montare il volume prima che il backup abbia inizio.

Ciò vale anche per i volumi nidificati. Ad esempio, supponiamo che si esegua il backup su una immagine disco, su un volume di rete. CCC per prima cosa tenta di montare il volume di rete, poi tenterà di montare l'immagine del disco. Allo stesso modo, si supponga di avere un'operazione programmata configurata per eseguire il backup del contenuti di una cartella su un volume crittografato. CCC sbloccherà e attiverà il volume crittografato prima dell'inizio del backup.

Il tentativo di montare i volumi di origine e di destinazione viene eseguito automaticamente prima di tutti gli altri compiti, tra cui script di shell di verifica preliminare (descritti sotto), quindi non è necessario implementare uno script di shell per pre-attivare l'origine o la destinazione.

## Opzioni del volume Destinazione

Se volete che CCC smonti il volume di destinazione al termine dell'attività di backup, scegliere "Disattivare il volume di destinazione" dal menu di gestione del volume di destinazione. Se la vostra destinazione è una cartella, il testo sarà "disattivare il volume selezionato". Se la destinazione è un immagine disco, CCC smonta sempre il volume dell'immagine disco, quindi questa impostazione si riferirà al volume fisico selezionato su cui risiede l'immagine disco.

CCC non forza la disattivazione del volume di destinazione. Se un'applicazione ha file aperti sul volume di destinazione, il tentativo di CCC di smontare il volume avrà esito negativo. CCC non presenta una finestra di errore per questa condizione, ma verrà annotato nel file CCC.log.

Se si desidera impostare il volume di destinazione come disco di avvio, ad esempio per automatizzare un regolare test del volume di backup, scegliere "Impostare come disco di avvio" dal menu di gestione del volume di destinazione.

Le opzioni di gestione del volume di destinazione vengono applicate solo quando la fase di backup termina con successo. Se vengono segnalati errori, il volume di destinazione non sarà smontato o impostato come disco di avvio.

## Opzione di Gestione Energia

Se si sceglie una delle opzioni di gestione dell'alimentazione, dal menu, CCC metterà in stop, riavvierà o spegnerà il Mac al termine di una corretta operazione di Backup. Il riavvio o lo spegnimento del sistema non sono azioni forzate. Se c'é un documento aperto con modifiche non salvate, per esempio, l'applicazione chiede prima di salvare il documento. Se non é gestita una finestra di salvataggio, la richiesta di arresto o di riavvio scadrà.

Le opzioni di risparmio energia vengono applicate solo quando il backup termina con successo.

## Esecuzione di script di shell prima e dopo l'attività di backup

Se aveste bisogno di una funzione che non esiste all'interno di CCC, la shell di pre e post clone script può essere la soluzione che fa per voi. Ad esempio, si supponga di voler eseguire il backup dell' Open Directory Master con CCC a intervalli regolari, ma si sa che una semplice copia a livello di file non produrrebbe un corretto backup di un database aperto. Il seguente script di shell pre-clone archiviera' la vostra OD in un'immagine disco per un successivo ripristino attraverso il Server Admin. Ed elaborrera' anche le copie di configurazione del Server Admin * così come fa il vostro database MySQL:

`#!/bin/sh
# Path to recovery directory (permissions should be 700 -- read-only root or admin)
recover="/etc/recover"
# mysqldump the databases
echo "Dumping MySQL databases"
mysqldump --user=root --password='s3kr!t' -A > $recover/mysql.dump
# grab the server configuration plists (only specify services that are enabled,
# use "serveradmin list" for a list of services)
echo "Generating serveradmin configuration plists"
services="afp dhcp dns ipfilter nat network swupdate vpn web"
for service in $services; do
serveradmin -x settings $service > $recover/serverconfig/$service.plist
sleep 1
done
# Backup Open Directory (if it's Thursday)
day=`date ''+%u''`
if [ $day != 4 ]; then exit 0; fi
od_backup=$recover/od_backup
ts=`date ''+%F''`
echo "dirserv:backupArchiveParams:archivePassword = s3kr!t" > $od_backup
echo "dirserv:backupArchiveParams:archivePath = $recover/od_$ts" >> $od_backup
echo "dirserv:command = backupArchive" >> $od_backup
serveradmin command < $od_backup`

* I file di configurazione Server Admin plist sono preziosi come documentazione delle vostre impostazioni, ma non possono essere importati direttamente dal Server Admin.

Script di shell "pre-clonazione" vengono eseguiti dopo che CCC ha eseguito un controllato di "integrità" (che, ad esempio, i volumi di origine e destinazione siano presenti, la connessione ad un Macintosh remoto sia stata stabilita), ma prima di tutti gli altri compiti (ad esempio il montaggio di una immagine disco di destinazione, la copia dei file). Gli script di shell "post-clonazione" vengono eseguiti dopo che tutti gli altri compiti sono stati completati, con successo o meno. CCC passa agli script di shell diversi parametri . Vediamo il seguente esempio di script di shell:

`#!/bin/sh
echo "Running $0"
echo `date`
echo "Source: $1"
echo "Destination: $2"
echo "Exit status: $3" # Applicabile solo a script post-clone
echo "Disk image file: $4" #` `Applicabile solo a script post-clone`

Dovrebbe produrre il seguente output (solitamente in /Libreria/Logs/CCC.log, sebbene si possa reindirizzarlo dove si vuole):

`Running /etc/postaction.sh
Wed Aug 14 21:55:28 CDT 2007
Source: /Volumes/Home
Destination: /Volumes/Offsite Backup
Exit status: 0
Disk image file:`

Se un backup ha come destinazione un'immagine disco, il parametro di destinazione per un pre-script sarà il percorso per l'immagine disco. Per un post-script, il parametro di destinazione sarà il percorso del volume attivato dell'immagine disco, e che il volume probabilmente non sarà montato se l'azione di backup termina con successo (è previsto, nel caso in cui CCC non sia in grado di smontare l'immagine disco e si desidera uno script che lo faccia in questi casi).

Loutput degli script di shell pre-e post-clone, verranno registrati in /Libreria/Logs/CCC.log. CCC può non registrare l'ultimo Output del vostro script, però, perché la gestione dei risultati viene gestita in modo asincrono per evitare di compromettere le prestazioni dell'operazione di backup. Per forzare la registrazione di tutti i risultati dello script, è possibile aggiungere "sleep1" nell'ultima riga dello script, oppure inviare tutto l'output su stderr.

Inoltre, se lo script pre-clone esce con uno stato di uscita non-zero, causa l'annullamento dell'operazione di backup,da parte di CCC se avete selezionato l'opzione. Questo può essere usato a proprio vantaggio se si desidera applicare i pre-condizioni ad un'operazione di backup.

Lo script post-clone viene eseguito a prescindere dal successo o fallimento dell'operazione di backup. Se il vostro script dovrebbe comportarsi in modo diverso a seconda del risultato dell'azione, è possibile verificare se il terzo parametro è zero (uno stato di uscita "0" significa che l'operazione si è conclusa con successo). Ad esempio:

`#!/bin/sh
source="$1"
dest="$2"
exitStatus=$3
if [ "$exitStatus" = "0" ]; then
# foo
else
# bar
fi`