Haciendo copias de seguridad y Restaurando

Haciendo copias de seguridad

Es importante hacer copias de seguridad de GNU social de forma regular. Si se necesita revertir a una copia antigua se perderan todas las publicaciones nuevas. Toda la gente que haya seguido a otras de otros servidores (y a la inversa) resultaran en información incompatible entre tu servidor y otros servidores remotos.

Se deberian hacer copias inmediatamente antes de hacer una actualización. Esto es especialmente importante si se usa la rama nightly, en la que se pueden colar errores muy serios.

Hay dos partes de una instalación de GNU social y deben hacerse copias de ambas a la vez.

  1. Los archivos que se hospedan en el servidor web. Esa es una mezcla del código de GNU social y los datos de los usuarios. Este directorio probablemente sea /var/www/social/.
  2. El contendio de la base de datos MySQL/MariaDB

Archivos del servidor web

No es necesario hacer nada especial. Solo hay que estar seguro de que se hace una copia de ese directorio. Si se usa un alojamiento web comercial probablemente haya un botón para descargar todos los archivos. Esto normalmente no incluye la base de datos.

Si se tiene acceso shell al servidor, asumiendo que la instalación de GNU social está en var/www/social, se puede hacer una copia comprimida en el home así:

TIMESTAMP=$(date +%Y%m%d-%H%M)
cd /var/www
tar -Jcf "~/$TIMESTAMP-social-www.tar.xz" --exclude=.git social

Si se sirven los archivos directamente desde el repositorio git esto solo hará copias de los archivos que haya en este, no de todo el historial del repositorio. (Usar un repositorio git de este modo no es recomendable ya que se puede crear un caos en la base de datos si se guarda algo equivocado.)

Base de datos

Hay muchas herramientas y técnicas distintas para hacer copias de seguridad de las bases de datos MySQL. Si se usa un proveedor web comercial, probablemente habrá un botón en algún sitio para descargar la base de datos.

Si se tiene acceso por shell, la manera más simple de crear una copia de seguridad sea mediante la herramienta mysqldump.

TIMESTAMP=$(date +%Y%m%d-%H%M)
mysqldump -u "database_username" -p "database_name" | xz -c - > "~/$TIMESTAMP-social.sql.xz"

Se preguntará por una contraseña. Hay que introducir la del usuario de MySQL.

Restaurando una copia de seguridad

  1. Hay que parar el demonio de las colas (queue daemons en inglés) si está en marcha.
  2. Restaurar los archivos del servidor web.
  3. Restaura la base de datos
  4. Reinicia el demonio de las colas.

Si se han seguido los ejemplos de arriba se puede escribir lo siguiente:

cd /var/www/social

# Stop the daemons
bash ./scripts/stopdaemons.sh

# Delete and restore the web files
rm -r *
cd ..
tar -Jxf ~/20160130-1200-social-www.tar.xz

# Recreate the database (using MySQL root account)
mysqladmin -u root -p drop social
mysqladmin -u root -p create social
mysql -u root -p social

  # Inside mysql client
  GRANT ALL on social.* TO 'social'@'localhost' IDENTIFIED BY 'the_old_password';
  exit

# Restore the database as the GNU social MySQL user
xzcat ~/20160130-1200-social.sql.xz | mysql -u social -p social

# Restart the queue daemons
cd social
bash ./scripts/startdaemons.sh