Nel completo e ben fatto wiki di Alfresco è descritta con buon livello di dettaglio la modalità corretta per fare backup & restore, anche se non sono troppo chiari gli script ed i comandi specifici per effettuarlo. Per entrare nel merito, il backup di Alfresco può esser fatto “a freddo” o “a caldo”. In questo post viene condiviso, in modalità estremamente pratica e concreta, il modo di realizzare un backup a freddo come piace a noi: una lista di comandi ed attività da eseguire… semplice da capire, da applicare e provare.

Gli script proposti presuppongo l’installazione di Alfresco secondo quanto presentato nel post dedicato all’installazione (no bundle) del famoso E.C.M. Open Source. Più in particolare si presuppone che:

  • Il sistema operativo utilizzato sia Ubuntu 12.04 LTS,
  • Alfresco sia installato nel percorso ‘opt/alfresco’,
  • Il DBMS utilizzato sia PostgreSQL (la versione in realtà è poco significativa),
  • La profondità storica dei backup è di 10 giorni solari.

In merito alla profondità storica che indica la quantità di backup mantenuti prima della loro definitiva cancellazione dal server, se fosse richiesta una modifica si può agire facilmente (in aumento o diminuzione) sulla variabile NUM_DUMP.

Ovvio che il backup così come descritto nel post dovrebbe essere integrato con una replicazione dei dump file prodotti, in sistemi esterni di archiviazione che prevengono dal caso che la macchina divenga inaspettatamente danneggiata o addirittura non funzionante.

Iniziamo con le attività…

Dalla console grafica premere CTRL+ALT+T per aprire un terminale nel quale eseguire i comandi seguenti.

[bash gutter=”false”]
cd /opt/alfresco
nano alfrescoBackup.sh
[/bash]
[bash gutter=”false”]
#
# Cold backup of Alfresco.
#
# Configuration.
ALF_HOME="/opt/alfresco"
NUM_DUMP=10
ALF_DATA_SUBDIR="alf_data"
DB_HOME="/opt/postgresql"
DB_TYPE="postgresql"
# Check
if [ -d "$1" ]; then
TARGET_FOLDER="$1"
CURRENT_FOLDER="$(pwd)"
TIMESTAMP="$(date +%F_%H-%M)"
CHECK=1
# 1) Alfresco stop.
service alfresco stop
# 2) Backup of the database of Alfresco with vendor service.
DB_DUMP=${TIMESTAMP}_alfresco_${DB_TYPE}.tar
if [ "$DB_TYPE" = "postgresql" ]; then
cd $TARGET_FOLDER
$DB_HOME/bin/pg_dump -Ft -b alfresco > $TARGET_FOLDER/$DB_DUMP
cd $CURRENT_FOLDER
if [ ! -f "$TARGET_FOLDER/$DB_DUMP" ]; then
CHECK=0
fi
else
echo "Unknown database type ‘${DB_TYPE}’"
CHECK=0
fi
# 3) Backup of the Alfresco’s data folder.
if [ "$CHECK" = 1 ]; then
ALF_DUMP=${TIMESTAMP}_alfresco_data.tgz
cd $ALF_HOME
tar zcf $TARGET_FOLDER/$ALF_DUMP $ALF_DATA_SUBDIR
cd $CURRENT_FOLDER
if [ ! -f "$TARGET_FOLDER/$ALF_DUMP" ]; then
CHECK=0
fi
fi
# 4) Merge the two backups.
if [ "$CHECK" = 1 ]; then
BACKUP_FILE="${TIMESTAMP}_alfresco_dump.tgz"
cd $TARGET_FOLDER
tar zcf $BACKUP_FILE $ALF_DUMP $DB_DUMP
if [ ! -f "$BACKUP_FILE" ]; then
CHECK=0
else
rm $ALF_DUMP
rm $DB_DUMP
fi
cd $CURRENT_FOLDER
fi
# 5) Alfresco start.
service alfresco start
# 6) Delete dump older than a certains number of days.
if [ "$CHECK" = 1 ]; then
find $TARGET_FOLDER/*.tgz -type f -mtime +${NUM_DUMP} -exec rm {} \;
fi
else
echo "usage: $0 [targetPath]"
fi
[/bash]

Uscrie con CTRL+X e confermare per il salvataggio dello script. Andiamo avanti definendo i permessi e preparando la cartella di archivio dei file di backup. Parlando della cartella di archivio qui viene presentato un esempio ma, come anticipato all’inizio del post, in casi pratici si consiglia di montare un sistema esterno utilizzato specificamente a scopo di archiviazione dei backup file.

[bash gutter=”false”]
chmod uga+x /opt/alfresco/alfrescoBackup.sh
mkdir /opt/alfresco/backup
[/bash]

Adesso tutto è pronto ed è il momento di attivare il crontab per eseguire il backup automatico, probabilmente durante la notte. Si prega di osservare che l’utente utilizzato per Alfresco si chiama alfresco (non è eseguito come utente root) ed il crontab viene eseguito come utente ‘alfresco’ tramite il parametro esplicito -u alfresco.

[bash gutter=”false”]
sudo crontab -u alfresco -e
[/bash]
[bash gutter=”false”]
00 01 * * * /opt/alfresco/alfrescoBackup.sh /opt/alfresco/backup
[/bash]

In questo esempio il backup a freddo di Alfresco viene eseguito alle 01:00. Per saperne di più sulla modalità di esecuzione del crontab, vedere qui.

Non vi sentite più tranquilli adesso che i vostri dati su Alfresco sono al sicuro?