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.

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?

6 Posts

PreSale Engineer e Senior Developer per soluzioni di Enterprise Content Management e Business Intelligence. Prediligo Alfresco ECM, Hyland OnBase e WebDoc per la conservazione sostitutiva. Business Intelligence con Pentaho Open Source BI, Palo.net, SAP Business Objects, QlikView, Microsoft BI Platform. Enterprise portal and Collaboration con Liferay. Blog - LinkedIn - Gravatar.