(modifié le 18 février 2015 à 19:44)

Si votre hébergeur ne supporte pas les CRONs, vous pouvez profiter d'un NAS ou d'un routeur open source pour exécuter vos CRONs.

dyndns-php

Dans mon cas j'utilise un NAS Synology qui fait appel à une page PHP qui lance la création d'un backup. Pour éviter que cette page soit accessible de partout j'ai décidé de protéger l'accès pour que seule une connexion provenant de chez moi puisse lancer cette exécution.

Problème : mon fournisseur internet (numericable) ne me fournit pas d'IP fixe, je n'ai donc pas de possibilité de filtrer avec un fichier .htaccess. En revanche, je dispose d'un DNS dynamique qui lui est toujours le même.

Pour y parvenir c'est très simple, j'ai créé un fichier ip.php :

<?php
$ip = gethostbyname('votre.dyndns.com');
if($_SERVER['REMOTE_ADDR'] != $ip) {
   header("HTTP/1.0 404 Not Found");
   echo "404 (not found)";
   exit;
}
?>

Ce bout de script permet de vérifier que l'IP correspondante au nom dyndns est identique à celle qui demande la page.

Il suffit maintenant de faire appel à ce fichier depuis votre page exécutant le backup :

<?php
include 'ip.php';
echo exec('/var/backup/backup.sh >> /var/backup/backup.log');
?>

Je vous publierai le contenu du fichier backup.sh dans un futur billet. Il est préférable que le script et le backup généré soient dans un répertoire non accessible depuis le web, en amont de "www" ou "htdocs" généralement, question de sécurité.

Simple mais pratique.

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter