Sauvegarde et Restauration

Introduction

Pourquoi

Les fournisseurs d’hébergements mutualisés ne fournissent généralement pas de moyen automatisé de sauvegarder votre installation Elgg. Cet article propose une méthode permettant d’accomplir cette tâche.

Dans l’IT il existe souvent de nombreuses manières d’accomplir la même chose. Gardez cela à l’esprit. Cet article va expliquer une méthode pour sauvegarder et restaurer votre installation Elgg sur un hébergement mutualisé qui utilise l’application CPanel. Cependant, les idées présentées ici peuvent être ajustées pour d’autres applications également. Ce qui suit sont des situations typiques qui peuvent exiger une procédure telle que celle-ci :

  • Récupération après une catastrophe

  • Déplacer votre site Elgg vers un nouvel hôte

  • Dupliquer une installation

Quoi

Sujets couverts :

  • Full backups of the Elgg directories and databases are performed daily (automated)

  • Les backups sont envoyés sur autre emplacement hors-site via FTP (automatisé)

  • Les backups locaux sont supprimés après un transfert réussi vers le site distant (automatisé)

  • Cinq jours de backups seront conservés (automatisé)

  • Restauration des données sur le nouvel hôte (manuel)

Ce processus a été composé à partir d’articles d’assistance précédemment publiés dans le wiki de documentation de Elgg.

Hypothèses

Les hypothèses suivantes ont été faites :

  • Le répertoire du programme Elgg est /home/userx/public_html

  • Le répertoire des données de Elgg est /home/userx/elggdata

  • Vous avez créé un répertoire local pour vos backups à /home/userx/sitebackups

  • Vous disposez d’un server FTP distant auquel envoyer les fichiers de backup

  • Le répertoire dans lequel vous allez enregistrer les backups distants est /home/usery/sitebackups/

  • Vous allez restaurer le site chez un deuxième fournisseur d’hébergement mutualisé dans le répertoire /home/usery/public_html

Important

Assurez-vous de remplacer userx, usery, http://mynewdomain.com et tous les mots de passe par des valeurs qui correspondent à votre propre installation !

Créer un backup utilisable - automatiquement

Personnalisez le script de backup - sauvegarde automatique

Le script que vous allez utiliser peut être trouvé ici .

Copiez simplement le script dans un fichier texte et renommez le fichier avec une extension .pl. Vous pouvez utiliser n’importe quel éditeur de texte pour modifier le fichier.

Modifiez les valeurs suivantes pour qu’elles correspondent à votre structure de répertoires :

# ENTER THE PATH TO THE DIRECTORY YOU WANT TO BACKUP, NO TRAILING SLASH
$directory_to_backup = '/home/userx/public_html';
$directory_to_backup2 = '/home/userx/elggdata';
# ENTER THE PATH TO THE DIRECTORY YOU WISH TO SAVE THE BACKUP FILE TO, NO TRAILING SLASH
$backup_dest_dir = '/home/userx/sitebackups';

Modifiez les valeurs suivantes pour qu’elles correspondent à vos paramètres de base de données :

# DATABASE BACKUP PARAMETERS
$dbhost = 'localhost';
$dbuser = 'userx_elgg';
$dbpwd = 'dbpassword';
# ENTER DATABASE NAME
$database_names_elgg = 'userx_elgg';

Modifiez les valeurs suivantes pour qu’elles correspondent aux paramètres de votre serveur FTP distant :

# FTP PARAMETERS
$ftp_host = "FTP HOSTNAME/IP";
$ftp_user = "ftpuser";
$ftp_pwd = "ftppassword";
$ftp_dir = "/";

Save the file with the .pl extension (for the purposes of this article we will name the file:elgg-ftp-backup-script.pl) and upload it to the following directory /home/userx/sitebackups

Ayez conscience que vous pouvez désactiver le FTP et modifier un peu le script de sorte qu’il ne supprime pas le fichier de backup local dans le cas où vous ne voulez pas utiliser de stockage distant pour vos backups.

Configurez la tâche périodique cron de backup

Connectez-vous à votre application CPanel et cliquez sur le lien « Cron Jobs ». Dans le menu déroulant Paramètres communs - « Common Settings », choisissez une fois par jour - « Once a day » - et tapez ce qui suit dans le champ de commande /usr/bin/perl /home/userx/sitebackups/elgg-ftp-backup-script.pl

Cliquez sur le bouton d’ajout d’une nouvelle tâche cron « Add New Cron Job ». Des sauvegardes quotidiennes complètes sont désormais planifiées et seront transférées hors du site.

Configurez la tâche périodique Cron de nettoyage

Si vous envoyez vos sauvegardes, via FTP, à un autre hébergeur mutualisé qui utilise l’application CPanel ou si vous avez totalement désactivé FTP, vous pouvez configurer votre conservation des données comme suit.

Connectez-vous à votre application CPanel pour votre site FTP, ou localement si vous n’utilisez pas FTP, et cliquez sur le lien « Cron Jobs ». Dans le menu déroulant Paramètres communs - « Common Settings » choisissez une fois par jour - « Once a day » - et saisissez ce qui suit dans le champ de commande find /home/usery/sitebackups/full_* -mtime +4 -exec rm {} \;

Le paramètre -mtime X va définir le nombre de jours de rétention des sauvegardes. Tous les fichiers plus anciens que le nombre de jour x sera supprimé. Cliquez sur le bouton d’ajout d’une nouvelle tâche cron « Add New Cron Job ». Vous avez maintenant configuré la durée de rétention de vos sauvegardes.

Restauration depuis un backup

Préparez vos fichiers de backup

L’hypothèse est que vous restaurez votre site vers un autre prestataire d’hébergement mutualisé avec CPanel.

Lorsque le script a sauvegardé les fichiers, la structure originelle des répertoires est conservée dans le fichier zip. Nous devons faire un petit nettoyage. Effectuez ce qui suit :

  • Téléchargez le fichier de backup à partir duquel vous souhaitez effectuer la restauration

  • Décompressez le contenu du fichier de backup

  • Naviguez pour trouver la sauvegarde de votre site et la sauvegarde SQL. Extrayez les deux archives. Vous aurez alors :
    • a database dump file with a .sql extension

    • une autre structure de répertoire avec pour contenu :
      • /home/userx/public_html

      • /home/userx/elggdata

  • Compressez le contenu du répertoire /home/userx/public_html sous forme de fichier zip de sorte que les fichiers soient à la racine du fichier zip
    • La raison de cette démarche est simple. Il est beaucoup plus efficace de télécharger un seul fichier zip que d’envoyer par FTP sur votre nouvel hôte tout le contenu du répertoire / home/userx/public_html.

  • Compressez le contenu du répertoire /home/userx/elggdata sous forme de fichier zip de sorte que les fichiers soient à la racine du fichier zip

Vous devriez maintenant avoir les fichiers suivants :

  • le fichier .sql

  • le fichier zip avec le contenu de /home/userx/public_html à la racine

  • le fichier zip avec le contenu de /home/userx/elggdata` à la racine

Restaurez les fichiers

Ceci est écrit dans l’hypothèse que vous restaurez vers un hébergement différent mais conservez la même structure de répertoires. Faites comme suit :

  • Connectez-vous à l’application CPanel de l’hébergement sur lequel vous souhaitez restaurer le site et ouvrez le gestionnaire de fichiers - « File Manager ».

  • Naviguez vers /home/usery/public_html
    • Chargez le fichier zip qui contient les fichiers de /home/userx/public_html

    • Décompressez le fichier zip

      Vous devriez maintenant voir tous les fichiers dans /home/usery/public_html

    • Supprimez le fichier zip

  • Naviguez vers /home/usery/elggdata
    • Chargez le fichier zip qui contient les fichiers de /home/userx/elggdata

    • Décompressez le fichier zip

      You should now see all of the files in /home/usery/elggdata

    • Supprimez le fichier zip

La restauration des fichiers du programme et des données est terminée

Restore the Database

Note

Again, the assumption here is that you’re restoring your Elgg installation to a second shared hosting provider. Each shared hosting provider prepends the account holder’s name to the databases associated with that account. For example, the username for our primary host is userx so the host will prepend userx_ to give us a database name of userx_elgg. When we restore to our second shared hosting provider we’re doing so with a username of usery so our database name will be usery_elgg. The hosting providers don’t allow you to modify this behavior. So the process here isn’t as simple as just restoring the database from backup to the usery account. However, having said that, it’s not terribly difficult either.

Edit the database backup file

Ouvrez le fichier``.sql`` que vous avez extrait de votre backup dans votre éditeur de texte favori. Commentez les lignes suivantes avec un dièse :

#CREATE DATABASE /*!32312 IF NOT EXISTS*/ `userx_elgg` /*!40100 DEFAULT CHARACTER SET latin1 */;
#USE `userx_elgg`;

Enregistrez le fichier.

Créez la nouvelle base de données

Effectuez les actions suivantes :

  • Login to the CPanel application on the new host and click on the « MariaDB/MySQL Databases » icon
    • Renseignez le nom de la base de données et cliquez sur le bouton créer - « create ». Pour notre exemple, nous allons conserver elgg ce qui nous donne pour nom de base de données usery_elgg

    • Vous pouvez associer un utilisateur existant à la nouvelle base de données, ou pour créer un nouvel utilisateur vous aurez besoin de :
      • Go to the « Add New User » section of the « MariaDB/MySQL Databases » page

      • Saisissez l’identifiant et le mot de passe. Pour notre exemple nous allons rester simples et utiliser à nouveau elgg. Ce qui va nous donner un identifiant usery_elgg

    • Associez le nouvel utilisateur avec la nouvelle base de données
      • Go to the « Add User To Database » section of the « MariaDB/MySQL Databases » page. Add the usery_elgg user to the usery_elgg database

      • Sélectionnez « Tous les Privilèges » - « All Privileges » - et cliquez sur le bouton « Effectuer les changements » - « Make Changes »

Restaurez la base de données de production

Now it’s time to restore the database backup file by importing it into our new database named usery_elgg.

  • Login to the CPanel application on the new host and click on the « phpMyAdmin » icon
    • Choisissez la base de données usery_elgg dans la colonne de gauche

    • Cliquez sur l’onglet « import » en haut de la page

    • Naviguez jusqu’au backup .sql dans votre arborescence locale et sélectionnez-le

    • Cliquez sur le bouton « Go » en bas à droite de la page

Vous devriez maintenant voir un message indiquant que l’opération a réussi

Combiner le tout

The restored Elgg installation knows nothing about the new database name, database username, directory structure, etc. That’s what we’re going to address here.

Modifiez /public_html/elgg-config/settings.php sur le nouvel hébergement pour reproduire les informations de la base de données que vous venez de créer.

// Database username
$CONFIG->dbuser = 'usery_elgg';

// Database password
$CONFIG->dbpass = 'dbpassword';

// Database name
$CONFIG->dbname = 'usery_elgg';

// Database server
// (For most configurations, you can leave this as 'localhost')
$CONFIG->dbhost = 'localhost';

// (For most configurations, you can leave this as 3306)
$CONFIG->dbport = 3306;

$CONFIG->wwwroot = 'http://your.website.com/'

Téléchargez le fichier settings.php vers le nouvel hôte - en remplaçant le fichier existant.

Finaliser la nouvelle installation

Exécutez le script de mise à niveau en visitant l’URL suivante : http://mynewdomain.com/upgrade.php . Effectuez cette étape deux fois - depuis le début.

Mettez à jour vos enregistrements DNS de sorte que votre nom d’hôte se résolve toujours vers l’adresse IP du nouvel hôte si c’est un déplacement permanent.

Félicitations !

Si vous avez suivi les étapes soulignées ici vous devriez maintenant avoir une copie totalement fonctionnelle de votre installation Elgg d’origine.