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 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.
cd /opt/alfresco nano alfrescoBackup.sh
# # 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
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.
chmod uga+x /opt/alfresco/alfrescoBackup.sh mkdir /opt/alfresco/backup
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
.
sudo crontab -u alfresco -e
00 01 * * * /opt/alfresco/alfrescoBackup.sh /opt/alfresco/backup
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?