Aspirer et sauvegarder le contenu de son site internet

La semaine dernière, j’ai pris la décision de ne plus écrire d’articles sur l’informatique et de consacrer mon blog à la philosophie. Voici que je replonge déjà… C’est ce qui s’appelle faire preuve d’une volonté de fer. Cela dit, je pense que je vais quand-même renoncer doucement à écrire des articles sur Linux, parce que je n’ai plus trop d’idées et que j’ai envie de changer. Il faut que je termine ma série sur Linux from scratch et après… Je plie les gaules!

Le billet d’aujourd’hui concerne encore une fois le backup. Souvenez-vous, je vous avais dit que je sauvegardais automatiquement mon répertoire personnel sur mon dépôt git. Je suis d’ailleurs tout à fait satisfait de cette combine. J’ai donc décidé de faire la même chose avec mon site. Comme il est hébergé par WordPress, il existe une fonction importer/exporter qui peut faire le boulot, sauf que j’avais envie d’automatiser le process et d’utiliser wget qui est un bien bel instrument, ma foi. Mon script s’appelle sauvegarde_site_personnel.sh. Je l’ai largement commenté.

Rien de bien sorcier. Le but est d’aspirer récursivement son site et ensuite les médias (images, documents pdf etc.). Pour ce qui est des médias, sur WordPress, ce n’est pas compliqué. Vous lancez une fois une exportation et vous récupérez l’adresse de téléchargement particulièrement longue, que vous intégrez au script pour automatiser le process. Celui-ci s’exécute à chaque démarrage mais libre à vous de paramétrer une tâche cron pour le lancer une fois par semaine par exemple. Voici donc comment j’ai procédé. Pour une meilleure lecture, je vous suggère de cliquer sur ce lien.

#!/bin/bash

# Nom du script : sauvegarde_site_personnel.sh
# Auteur : Benoît Boudaud (https://miamondo.org/contact)
# Licence : Servez-vous! C'est gratuit.

# Adresse du site stockée dans une variable
site=https://miamondo.org

# URL des médias (png, jpg...) coupée et stockée dans 2 variables immédiatement
# concaténées dans une seule. Il est important d'utiliser des guillemets
str_1="https://public-api.wordpress.com/rest/v1.1/sites/........./exports/media"
str_2="-download?to=2126&ts=..........&key=......................"
medias=$str_1$str_2

# Déplacement dans le répertoire qui va accueillir la sauvegarde
cd ~/miamondo/Documents/Informatique/Site_miamondo

# Création du répertoire de sauvegarde
# Si le répertoire existe déjà, le -p sert juste à éviter le message d'erreur
mkdir -p Sauvegarde
cd Sauvegarde

# Aspiration récursive des URLs du site passé en argument
# Cela peut prendre un certain temps
# Vous pouvez supprimer le 2>/dev/null pour voir le process
wget -r $site 2>/dev/null

# Création du sous-répertoire Médias destiné à accueillir les images et autres
# documents (pdf...)
mkdir -p Medias

# Si le répertoire existait déjà, son contenu est effacé.
rm -r Medias/*

# Déplacement dans le répertoire nouvellement créé
cd Medias

# Aspiration des images et autres documents
wget $medias

# Décompression et suppression de l'archive tar
tar xvf media-download?*
rm media-download?*

# Mise à jour de ma sauvegarde sur gitlab
cd .. # Retour dans le répertoire de Sauvegarde (répertoire parent)

# Transfert des fichiers sur le dépôt git
git add .
git commit -a -m "Mise à jour du `date`"
git push -u origin master

Un commentaire sur « Aspirer et sauvegarder le contenu de son site internet »

  1. La sauvegarde d’un site statique avec wget, ça peut être très bien, mais avec WordPress, j’ai du mal à imaginer l’utilisation qui peut en être faite.

    En cas de perte de ton site, comment comptes-tu utiliser cette sauvegarde ? Puisque manifestement, il ne te sera pas possible de la donner telle quelle à une nouvelle installation de WordPress sur un autre serveur. Le but est simplement de conserver autant de données que possibles pour pouvoir fouiller dedans à la main en cas de problème ? Ou il existe un moyen de restaurer aussi ?

    J'aime

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s