Cela nous est tous arrivé, un jour, de penser: – Ah ! si seulement j’avais effectué une sauvegarde complète de mon site avant de me faire hacker !

Je fais des sauvegardes régulières de mes bases de donnée (manuellement ou avec des plugins comme WP-DBManager) et de mes fichiers mais je cherchais depuis peu à automatiser les choses et j’ai trouvé…


En effet, j’ai la chance d’avoir Cpanel comme outil d’administration sur mon hébergement et je suis tombé sur cet article dont l’auteur propose un script PHP afin d’automatiser la sauvegarde en utilisant Cron.
Jusqu’à maintenant, je n’avais pas le choix, je devais passer par l’onglet « Sauvegardes » et cliquer manuellement pour lancer cette action mais grâce à ce script, la sauvegarde s’effectue quand je le souhaite et en plus je suis prévenu par email.


// PHP script to allow periodic cPanel backups automatically, optionally to a remote FTP server.
// This script contains passwords.  KEEP ACCESS TO THIS FILE SECURE! (place it in your home dir, not /www/)

// ********* THE FOLLOWING ITEMS NEED TO BE CONFIGURED *********

// Info required for cPanel access
$cpuser = "username"; // Username used to login to CPanel
$cppass = "password"; // Password used to login to CPanel
<span> $domain = "<a href="http://example.com">example.com</a>"; // Domain name where CPanel is run</span>
$skin = "x"; // Set to cPanel skin you use (script won't work if it doesn't match). Most people run the default x theme

// Info required for FTP host
$ftpuser = "ftpusername"; // Username for FTP account
$ftppass = "ftppassword"; // Password for FTP account
<span> $ftphost = "<a href="http://ftp.example.com">ftp.example.com</a>"; // Full hostname or IP address for FTP host</span>
$ftpmode = "ftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)

// Notification information
<span> $notifyemail = "you@<a href="http://example.com">example.com</a>"; // Email address to send results</span>

// Secure or non-secure mode
$secure = 0; // Set to 1 for SSL (requires SSL support), otherwise will use standard HTTP

// Set to 1 to have web page result appear in your cron log
$debug = 0;

// *********** NO CONFIGURATION ITEMS BELOW THIS LINE *********

if ($secure) {
$url = "ssl://".$domain;
$port = 2083;
} else {
$url = $domain;
$port = 2082;
}

$socket = fsockopen($url,$port);
if (!$socket) { echo "Failed to open socket connection… Bailing out!\n"; exit; }

// Encode authentication string
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);

$params = "dest=$ftpmode&amp;amp;amp;email=$notifyemail&amp;amp;amp;server=$ftphost&amp;amp;amp;user=$ftpuser&amp;amp;amp;pass=$ftppass&amp;amp;amp;submit=Generate Backup";

// Make POST to cPanel
fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\r\n");
fputs($socket,"Host: $domain\r\n");
fputs($socket,"Authorization: Basic $pass\r\n");
fputs($socket,"Connection: Close\r\n");
fputs($socket,"\r\n");

// Grab response even if we don't do anything with it.
while (!feof($socket)) {
$response = fgets($socket,4096);
if ($debug) echo $response;
}

fclose($socket);

?>

Affichez le script ci-dessus en cliquant sur « view source » puis copiez-le en prenant soin de personnaliser les champs « username », « password », « example.com » etc… puis placez-le sur votre serveur (pas dans le répertoire /public_html car il y a des données sensibles dans ce script) en le nommant comme suit « fullbackup.php ».
Il ne vous reste plus qu’à créer une nouvelle tache cron (cron job) comme ceci:

  • se rendre sur « Tache Cron »
  • choisir le « advanced(unix) mode »
  • indiquer les heures et dates auxquelles doit s’effectuer ce script:

par exemple, tous les nuits à 2h15 du matin:

15 2 * * * /usr/local/bin/php /home/votrecompte/fullbackup.php

ou chaque dimanche à 2h15 du matin:

15 2 * * 1 /usr/local/bin/php /home/votrecompte/fullbackup.php

N’oubliez pas de remplacer votrecompte par le votre.
Voilà, ce script de Justin Cook (à lire en anglais) fonctionne à merveille et vous envoie une confirmation par email(html).

Une adaptation (à lire en anglais) à ce script existe si vous avez plusieurs sites à sauvegarder ainsi qu’une autre adaptation avec un fichier « full_backup.sh » (à lire en anglais).

Important:

je ne suis pas un pro des scripts et des langages de programmation. Si ce script vous renvoi une erreur par email, vérifiez le message d’erreur, souvent un mauvais identifiant, mot de passe ou chemin d’emplacement; si c’est un problème de script mieux vaut demander de l’aide au concepteur de ce script.

Related Posts with Thumbnails
Tags:, , , , , , ,