27
Ene
2010
swevel

Drupal: Copias de seguridad al final de dia

Cuando desarrollamos en Drupal y somos parte de un equipo es conocida la importancia de mantener un versionado de nuestro proyecto para poder atender a resolución de conflictos entre responsabilidades y mas importante aún el poder acceder a copias anteriores en caso de desastres.

Tambien es conocido el problema al determinar como versionar nuestra base de datos de forma automática tambien, bueno, he encontrado una forma muy práctica de realizarlo al final de cada dia y sin tener que estar pendientes de ello, en drupalr.co.uk han escrito un script muy útil para esta tarea.

¿Y que es lo que hace?

RTA:

  • Limpia la cache de Drupal
  • Elimina las copias anteriores de la base de datos
  • Realiza un volcado de la actual y la comprime en bzip2s en un lugar predeterminado de nuestro workspace
  • Realiza un commit de la nueva copia
  • Actualiza la aplicación (Para incluir cualquier otro cambio hecho por los demas miembros del equipo y evitar conflictos)
  • Hace commit

El código es el siguiente:

#####################################

if [ $1 = "--help" ];
  then
    echo "
  #########
  # USAGE #
  #########

  Syntax for running this script is:
    ./end_of_day.sh projectdir databasehost databasename
   
    projectdir -          string, project directory in Eclipse workspace
    databasehost -        string, hostname or IP for database server (usually localhost)
    databasename -        string, name of database
    ." & 
  else
    # TODO: we should really use drush to mark certain tables as excluded
    echo "Clearing the Drupal cache to make the db dump smaller ..."
    cd ~/workspace/$1/trunk/www
    drush cache clear
    echo "Updating application db directory at ~/workspace/$1/trunk/db ..."
    svn up ~/workspace/$1/trunk/db
    echo "Deleting old db dump from repository ..."
    svn delete ~/workspace/$1/trunk/db/$1.sql.bz2
    svn commit ~/workspace/$1/trunk/db/ -m "AUTO: deleting old database dump"
    echo "Creating new db dump of $3 from $2 ..."
    if [ $2 = 'localhost' ];
      then
        mysqldump -u root $3 | bzip2 > ~/workspace/$1/trunk/db/$1.sql.bz2
      else
        mysqldump -u root -h $2 $3 | bzip2 > ~/workspace/$1/trunk/db/$1.sql.bz2
    fi
    echo "Adding new db dump to repository ..."
    svn add ~/workspace/$1/trunk/db/$1.sql.bz2
    svn commit ~/workspace/$1/trunk/db/ -m "AUTO: adding new database dump"
    echo "Updating application www directory at ~/workspace/$1/trunk/www ..."
    svn up ~/workspace/$1/trunk/www
    echo "Committing any added code changes to repository ..."
    svn commit ~/workspace/$1/trunk/www/ -m "AUTO: committing code changes at end of day"
    echo "Done!"
fi

####################################

Para ampliar la información pueden visitar: http://www.drupaler.co.uk/blog/wrapping-linux-script-end-day/478

Enviar un comentario nuevo