Carbon Copy Cloner symbool   

Start een shellscript voor of na het klonen

 

Als er functionaliteit is die u nodig hebt maar die niet bestaat binnen CCC, dan kunnen pre- en post-kloon-shellscripts de oplossing voor u zijn. Stel bijvoorbeeld dat u een back-up wilt maken van uw Open Directory Master binnen CCC met een regelmatig interval, maar u weet dat een eenvoudige bestandskopie geen goede back-up van een open database zal opleveren. Het volgende pre-kloon-shellscript zal uw OD master archiveren naar een schijfkopie voor later herstel via Server Admin. Het dumpt ook kopieën van de Server Admin instellingen* evenals uw MySQL-gegevensbestanden:

#!/bin/sh

# Pad naar herstelmap (bevoegdheden moet 700 zijn -- alleen-lezen root of admin)
recover="/etc/recover"

# mysqldump de gegevensbestanden
echo "MySQL-gegevensbestanden dumpen"
mysqldump --user=root --password='s3kr!t' -A > $recover/mysql.dump

# neem de plist instellingenbestanden van de server (alleen voorzieningen specificeren die actief zijn,
# gebruik "serveradmin list" voor een lijst met voorzieningen)
echo "serveradmin instellingen plists genereren"
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

# Back-up van Open Directory (als het donderdag is)
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


* De Server Admin instellingen-plist's zijn belangrijk als documentatie van uw instellingen, maar zijn mogelijk niet direct importeerbaar voor Server Admin.

Pre-kloon-shellscripts starten nadat u bent geauthenticeerd, en voordat andere taken starten (zoals het activeren van een doelschijfkopie, of wissen van het doel). Post-kloon-shellscripts starten nadat alle andere taken succesvol zijn voltooid. CCC geeft als parameters het pad van de bron en het doel door. Het volgende shellscript bijvoorbeeld:

#!/bin/sh

echo "Starten van $0"
echo `date`
echo "Bron: $1"
echo "Doel: $2"

Zou de volgende uitvoer produceren (normalerwijs in /Library/Logs/CCC.log, alhoewel u dat kunt omleiden als u wilt):

Starten van /etc/postaction.sh
wo 5 sep 2010 20:14:03 CEST
Bron: /Volumes/Home
Doel: /Volumes/Externe back-up

Resultaten van uw pre- en post-kloon-shellscripts worden gelogd in /Library/Logs/CCC.log. CCC laat echter mogelijk het laatste deel van de uitvoer van uw script weg, omdat uitvoerafhandeling asynchroon gebeurt om te voorkomen dat de prestaties van uw back-uptaak worden beïnvloed. Om te forceren dat alle uitvoer wordt gelogd, kunt u "sleep 1" toevoegen als laatste regel van uw script.

Als uw script eindigt met een niet-nul stopstatus, dan zal dit ervoor zorgen dat CCC de back-upbewerking stopt. Dit kan in uw voordeel worden gebruikt als u een bepaalde preconditie van toepassing wilt laten zijn op uw back-upbewerking. U kunt ook "exit 0" toevoegen aan het einde van uw script om te voorkomen dat fouten in uw pre-kloon-script de back-uptaak afbreken.

Activeren van een volume voor een geplande taak en deactiveren van een volume na afloop van een geplande taak

Deactiveren van een doel- of bronvolume aan het einde van een geplande taak is momenteel alleen mogelijk met een post-kloon-shellscript. U zou het volgende shellscript als post-kloon-script kunnen gebruiken om het back-upvolume te deactiveren (het stelt een vertraging van 1 minuut om het bestandssysteem "tot rust te laten komen", anders kan een systeemcomponent het verzoek mogelijk weigeren):

#!/bin/sh (sleep 60; diskutil unmount "$2" >> /Library/Logs/CCC.log 2>&1) &

Activeren van de schijf voorafgaand aan back-up is wat lastiger, omdat CCC pre-kloon-script pas start nadat de reguliere controles (bijv. is doelschijf geactiveerd?) zijn uitgevoerd. De beste manier om dit te doen is om de taak te plannen "Wanneer het doel verbonden is" en het post-kloon-script te implementeren dat het back-upvolume deactiveert na afloop. De back-up is vervolgens heel eenvoudig: u verbindt (zet aan, activeert) de back-upschijf wanneer u een back-up wilt maken.

E-mail versturen van het resultaat van een geplande taak

Dit eenvoudige post-kloon-script zal de resultaten van de laatst geplande taak versturen per e-mail naar het e-mailadres van uw keuze. Geen franje, gewoon wat basale informatie over de betrokken bron- en het doelvolumes, de hoeveelheid gegevens waarvan een back-up is gemaakt en een statuscode.

#!/bin/sh (sleep 10; /usr/libexec/PlistBuddy -c "Print" /Library/Logs/CCC.stats | tail -n 9 | mail -s "CCC-rapportage geplande taak" gebruiker@domein.nl) &