Tout savoir sur WordPress

Planifier un backup des fichiers d’un site WordPress sans plugin

Découvrez pas à pas la démarche à suivre pour créer une tâche cron qui permet de sauvegarder les fichiers et dossiers de votre site WordPress sans plugin.

Ce nouveau tutoriel WordPress est l’opportunité d’apprendre en vidéo la démarche à suivre pour créer une tâche cron permettant de faire un backup automatique des fichiers d’un site sans utiliser de plugin WordPress.

Durant ce tutoriel, nous allons aborder la liste des points suivants :

  • Découverte des fonctions et de  l’API Cron de WordPress (wp_next_scheduled, wp_schedule_event, etc..)
  • Comment faire pour créer et planifier une tâche Cron quotidienne
  • Comment créer une archive grâce à la class ZipArchive de PHP
  • Comment mettre en place une suppression automatique des backups datant de plus d’une semaine

À la fin de ce tutoriel vidéo, vous aurez acquis toutes les compétences nécessaires pour comprendre le fonctionnement et les subtilités de l’API Cron de WordPress.

Cet article a été mis à jour il y a 1340 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

41 Commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

  1. J’ai rapidement survolé la vidéo (j’ai pas 45 minutes devant moi :p) mais je trouve l’idée géniale. On peut pas avoir le code dans l’article ?

    Personnellement, j’ai mis en place une tâche CRON non pas prévue pour WordPress mais pour Cpanel qui gère les sauvegardes intégrales.

  2. Pour ma part j’utilise également des tâches CRON pour faire des sauvegardes de mes sites WordPress avec un envoie automatique sur mon compte Gmail, le tout couplé à un filtre qui classe les sauvegardes dans mon compte :)

  3. Bonsoir à tous. D’abord excellent tuto, très intéressant. J’ai appliqué tout ça sur un site que j’administre et cela semblait fonctionner correctement. Malheureusement je dois avoir un soucis quelque-part car l’archive ZIP créée n’est pas valide: impossible de l’extraire ni de la parcourir. Avez-vous une idée de mon erreur ?

    Mis à part ça, le blog est super, très instructif et très plaisant à parcourir. Je viens de commander ton nouveau mémento chez Eyrolles. Je pense qu’il va m’être très utile. Merci à toi et à bientôt.

  4. @Madlib: Je ne sais pas du tout d’où peut provenir le problème. Je n’ai pas rencontré de difficulté de ce genre lorsque j’avais réalisé ce tuto. Est-ce que tu as fait un test en local pour voir si cela fonctionnait tout de même ?

    PS : merci pour les compliments et j’espère que le mémento te sera d’une grande aide :) N’hésites pas à laisser un commentaire sur Amazon si tu l’as commandé sur ce site ^^

  5. Hello. Non je n’ai pas fait ce test en local, je vais le faire pour voir le résultat.

    J’ai acheté le mémento directement chez Eyrolles mais j’y mettrais un avis dès sa réception. A bientôt.

  6. Je reviens aux nouvelles. Donc j’ai fais le test en local et ça ne fonctionnait toujours pas. Archive Invalide. J’ai donc tenté d’utiliser un autre logiciel de décompression et ça a fonctionné. Le soucis venait donc de mon logiciel de décompression. Merci encore pour ce tuto parfait. A bientôt.

  7. @Madlib : Ah super merci pour le retour. J’avais pensé à l’éventualité du logiciel défectueux. Ca pourra servir à d’autres personnes qui ont rencontré ce problème ;)

  8. @Jonathan : si je peux me permettre je souhaiterais ajouter ma petite contribution à ce tuto. J’ai remarqué que le fichier backup-website figurait dans le zip de sauvegarde. Ce qui gonfle considérablement la taille du fichier, surtout si l’on décide de garder les zip pour une durée de 7 jours. Pour pallier à ce soucis, j’ai seulement modifié la valeur de la variable $backup_dir. J’ai décidé de remonter au dossier parent pour la création du dossier backup-website. Ma variable est donc $backup_dir = ‘../’ . ‘backup-website’;

    Voilà, miniscule contribution pour ce tuto déjà parfait. Mais un gain d’espace énorme. A bientôt.

  9. Merci pour le tuto.
    On peut modifier la fonction récursive pour éviter de sauvegarder les anciennes archives et éviter de doubler la taille des archives chaque jour !

    foreach (glob($dir.'/*') as $file){
      if($file !='.//'.$backup_dir){
        is_dir($file) ? $this->addDirectory($file) : $this->addfile($file);
      }
    } // foreach
    
  10. J’ai présenté il y a peu la méthode « féniasse » avec les plugins performants permettant de faire cet envoi de fichier dans son Dropbox ou (autre) FTP. Je t’invite à venir voir l’article pour me confirmer si ça te semble correcte…

    La V3 étant là, ce serait cool de voir le code maintenant ^^

  11. @Rodrigue : Le but des tutos vidéos n’est pas de fournir le code dans le texte. Sinon les lecteurs ne vont pas prendre le temps de voir les explications fournies lors de la vidéo et ils vont copier le code « bêtement ».

    Le téléchargement de la vidéo et des fichiers sources fera l’objet d’un compte Premium qui sortira dans les prochains mois ;)

  12. Très bon tutoriel comme d’habitude, j’aimerais cependant ajouter quelque chose : je pense qu’il est souhaitable d’avoir également des sauvegardes sur un autre serveur à part celui de production, car si ce dernier devient inopérationnel pour une raison ou pour une autre, les sauvegardes seront inutilisables.

  13. Merci pour ce tutoriel très pratique et qui vient en plus de sauver mon site. J’avais réalisé la sauvegarde il y a deux semaines et hier bam, crash serveur, tout perdu. J’ai pu restaurer assez rapidement, donc merci ;)

  14. Salut tout le monde! Je n’ai pas encore regardé la video j’ai uniquement lu l’article ainsi que vos commentaires.

    Pour moi le top serai de faire un backup sur un serveur différent non sur le serveur sur lequel est héberger mon WordPress.

    D’avoir également une sauvegarde de la base de données.

    et aussi recevoir un email (j’ai lu des vos com que cela était possible)

    Quelqu’un peut m’aider…..?????? SVP

    PS: j’ai aussi acheté le memento WP (rose) très utile merci.

  15. Bonjour Jonathan,

    Je viens de suivre ta vidéo, petit souci cela ne créer ni le répertoire de sauvegarde, ni le fichier htaccess, ni les zip. Mon site est à la racine sur le serveur. Serais-tu d’où vient mon erreur ?

    Merci.

  16. @Jeff: Vérifiez bien que vous avez les droits d’écriture au bon endroit. Si ça ne fait rien, c’est qu’il ne trouve pas le bon chemin ou qu’il ne peut pas écrire dans le dossier.

  17. Bonjour,
    Il est indispensable de faire un backup. Cette semaine était terrible pour notre agence parce que nous avons pas fait un backup à un site wordpress qui était supprimé du serveur automatiquement par l’hébergeur (problèmes de sécurités). Même que l’hébergeur a fait un restauration de fichiers (après 2 jours de communication avec le service client : :( , on n’a pas trouvé la version originale (des fichiers manquantes, refaire la configuration, …). Bon, le backup est primordiale maintenant pour nous, je vous remercie pour ces informations utile.

  18. Bonjour,
    merci pour ce script qui semble très bien. Je l’ai implémenté, mais j’ai un problème sur la création de l’archive zip. Celle-ci semble être incomplète et le nom est XXX.zip.DUWC1n (ou d’autres lettres à la fin).

    Par contre, si je force à n’archiver qu’un seul directory (wp-admin par ex), là, ça marche.

    Est-ce quelqu’un a une idée ? Merci d’avance.

  19. Merci pour ce tuto, j’en ai beaucoup appris sur les cron. Je vais pouvoir faire mes backups automatiquement mais aussi automatiser d’autres tâches, j’ai plein d’idées grâce à vous.

  20. Pour ceux qui ont leur wp-config au dessus de wp-admin, un str_replace( ‘..//’,  », $file ) dans la boucle foreach permet de résoudre le problème d’une archive créée mais vide. Le lien vers le commentaire évoquant la raison du problème : http://php.net/manual/fr/ziparchive.addfile.php#113446

    A noter également que les fichiers protégés par un .htaccess ne sont pas archivés. Des solutions sont également présentées sur le site de PHP.

    Entre autres subtilités de cette classe ZipArchive apparemment…