Sauvegarder un site web avec rsync
Cet article explique comment faire une sauvegarde de son site web en utilisant la commande rsync. Celle-ci offre de nombreux avantages, comme la possibilité de faire des sauvegardes de type incrémental. Cela signifie que lorsque l'on lance plusieurs fois la sauvegarde, rsync est capable de recopier uniquement les fichiers qui ont changé, ce qui accélère significativement le processus.
Avant de commencer, on prendra le soin de créer un dossier en local qui contiendra tous les fichiers sauvegardés :
mkdir backup
On pourra ensuite lancer la commande rsync en utilisant la syntaxe suivante :
rsync -rave ssh login@mon-serveur.com:/var/www/html backup
Les options utilisées sont les suivantes (-rave comme une rave party, c'est mnémotechnique) :
- r veut dire récursif. Cela permet de sauvegarder tous les sous-dossiers
- a permet d'utiliser le mode archive
- v permet de passer en mode verbose et de voir en direct la liste des fichiers copiés
- e ssh pour pouvoir se connecter en ssh
Voici un exemple de commande que j'utilise pour Tux-planet :
rsync --exclude=wp-cache* -rave ssh tuxplanet@240plan.ovh.net:~/www.tux-planet.fr/ backup
On notera ici l'utilisation de l'option --exclude qui me permet de ne pas sauvegarder les fichiers de cache de wordpress, car ces derniers ne sont pas importants et en perpétuelle évolution.
Si vous souhaitez automatiser cette procédure et la mettre dans une crontab par exemple, il faudra penser à ajouter votre clé ssh sur le serveur, afin que la demande de mot de passe n'interrompe pas la sauvegarde.
9 Commentaires pour "Sauvegarder un site web avec rsync"
Flux des commentaires de cet article Ajouter un commentaireC'est quoi exactement le mode archive ?
[propaganda]Pour le souci de la demande de pass quand on s'en sert comme une tache cron, j'ai récemment découvert un outil génial: "expect" qui permet de faire des scripts "interactifs" dans le sens ou il est capable de réagir en fonction des évennements, il est par exemple possible de lui dire d'envoyer le mot de passe lorsqu'une ligne comportant le mot "password" apparait. Alors certes dans ce cas ca oblige à avoir son pass ssh codé en clair dans un script (bouh pas biennnn!!!), donc on va éviter, mais ca m'y a fait penser, c'etait donc l'occasion d'en parler
[/propaganda]
@Bynonite : Le mode archive permet de conserver l'user, le groupe et les droits sur le fichier.
@MatToufoutu : tiens ça me fait penser que ton système de script avec expect et la gestion des mot de passe pourrait me servir pour autre chose. merci de l'info.
@MatToufoutu expect peut donner en réponse le contenu d'un fichier ou pas ?
Parce que mettre un mot de passe en clair dans un script, c'est mal, mais le mettre dans un fichier avec des droits restrictifs, ça se fait.
@Clément : Aucune idée, faudrait tester, peut être avec un "cat" ou un truc du genre, j'essaierai tien !
PS: je dois vraiment être un abruti, paske avec moi ça met pas le nom de la personne à qui je répond en gras xD
Dans le même ordre d'idées, j'ai écrit un post décrivant une méthode pratique et facile à mettre en place (à mon avis) pour sauvegarder non pas un site web mes des données de tout genre et de les synchroniser sur Dropbox. Si ca vous intéresse: http://tinyurl.com/cfoteu
Attention, d'après le man, l'option -e ne correspond pas du tout à une connection ssh:
"-e, --rsh=COMMAND specify the remote shell to use"
De plus dans "ssh user@machine", le terme ssh n'est pas du tout obligatoire pour une connexion (enfin toujours d'après le man)
Oubliez mon message précédent... me suis mélangé les pinceaux.