Créer un fichier zip de votre serveur et sauvegarde SQL
Pour un projet perso je dois mettre un place un script qui permet de créer un backup des fichiers présent sur le serveur ainsi que la base de données. Il faut absolument un serveur avec PHP 5.*.
Tout d\‘abord vous aurez besoin de ce fichier pour réaliser facilement le backup de la base de données. Ce script a été réalisé par Benoit Asselin, vous pouvez aller sur son site Internet pour plus d\‘info sur lui : http://www.ab-d.fr/.
Voici le cours d\‘OpenClassRoom dont je me suis servi pour ce tuto : http://fr.openclassrooms.com/informatique/cours/les-fonctions-zip-en-php
Et la doc php.net : http://php.net/manual/fr/class.ziparchive.php
Source
<!?php require_once \'backup.php\'; //Fonction qui va nous créer le fichier zip avec tous les fichiers et dossiers //Pour plus d\'infos sur la fonction PHP ZipArchive je vous renvoi vers la doc de PHP et le cours d\'OpenClassRooms function Zip($source, $destination) { if (!extension_loaded(\'zip\') || !file_exists($source)) { return false; } $zip = new ZipArchive(); if (!$zip->open($destination, ZIPARCHIVE::CREATE)) { return false; } $source = str_replace(\'\\\', \'/\', realpath($source)); if (is_dir($source) === true) { $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); foreach ($files as $file) { $file = str_replace(\'\\\', \'/\', $file); // Ignore \".\" and \"..\" folders if (in_array(substr($file, strrpos($file, \'/\') + 1), array(\'.\', \'..\'))) continue; $file = realpath($file); if (is_dir($file) === true) { $zip->addEmptyDir(str_replace($source . \'/\', \'\', $file . \'/\')); } else if (is_file($file) === true) { $zip->addFromString(str_replace($source . \'/\', \'\', $file), file_get_contents($file)); } } } else if (is_file($source) === true) { $zip->addFromString(basename($source), file_get_contents($source)); } return $zip->close(); } $dir_save = \'wordpress/\'; new BackupMySQL(array( \'username\' => \'login\', \'passwd\' => \'mdp\', \'dbname\' => \'nom_de_votre_base\', \'nom_fichier\' => \'nom_du_fichier_de_sortie\' )); //Si vous souhaitez enregistrer le dossier courant pensez à mettre ./ avant Zip(\'dossier_a_sauvegarder\', \'chemin/fichier_de_sortie.zip\'); ?>