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.
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
3 commentaires
Bonjour,
Pourquoi ne pas avoir mis un login/password comme ça se fait classiquement ? Du coup la sauvegarde n'est pas dépendante du compte Dyndns.
@skc: parce qu'un login/mdp s'usurpe, pour une IP c'est nettement plus compliqué 🙂
Et utiliser le système natif sauvegardes et réplications pour ta backup ce serait pas plus logique?? Ou j'ai pas compris....