1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| <?
/*
Ce script est un utilitaire de sauvegarde de l'intégralité d'un site internet
Il permet de transférer sur un compte FTP l'intégralité des fichiers, ainsi
que vos bases de données MySQL
Chaque répertoire est sauvegardé individuellement dans un fichier compressé repertoire.tgz
Le répertoire racine est sauvegardé en racine.tgz
la(les) base(s) MySQL sont sauvegardée dans un fichier sqlbackup.tgz
Le tout va dans un repertoire serveur.ftp/backup
Ce script ne peut fonctionner que si votre hébergeur accepte la connexion à un FTP distant,
et qu'il accepte de lancer des commandes système exec(). AUTANT DIRE QUE CELA
ELIMINE LA QUASI TOTALITE DES HEBERGEURS GRATUITS (Free, Multimania). Par contre,
un compte gratuit peut faire l'affaire pour le ftp de destination.
Pour info, j'utilise se scipt pour sauvegarder un script hébergé sur OVH à destination
d'un compte ftp FREE.
La sauvegarde d'un petit site de 17Mo avec une base de 800Ko met un peu moins de 30 secondes.
Jérôme HUBERT
----------------------------------------------------------------------
PARAMETRES DE CONFIGURATION
----------------------------------------------------------------------
*/
$local_path="/home/jurasudff/www"; //chemin local sur votre serveur de la racine du site
$host="sql1.ovh.net"; // votre serveur MySQL
$base1="jurasud"; //nom base MySQl N°1
$base2="jurasud"; // nom base MySQL N°2
$user1="jurasud"; //utilisateur base MySQl N°1
$user2="jurasud"; // utilisateur base MySQL N°2
$passwd1 = "****"; //Password base MySQL N°1
$passwd2="****"; //Password base MySQL N°2
$ftp_server = "ftpperso.free.fr"; //serveur ftp de destination
$ftp_user_name = "jurasud"; // identifiant ftp
$ftp_user_pass = "****"; //password ftp
/*
----------------------------------------------------------------------
FIN DES PARAMETRES DE CONFIGURATION
----------------------------------------------------------------------
*/
//CREATION TEMPORAIRE d'UN REPERTOIRE D'ACCUEIL POUR LES FICHIERS MYSQL
exec("mkdir $local_path/sqlbackup");
//SAUVEGARDE DES BASES MYSQL --------------------------------------------
exec("mysqldump -h$host -u$user1 -p$passwd1 $base1> sqlbackup/$base1.sql");
// EFFACEZ OU COMMENTEZ CETTE LIGNE SI VOUS N'AVEZ QU'UNE BASE MySQL
@exec("mysqldump -h$host -u$user2 -p$passwd2 $base2> sqlbackup/$base2.sql");
//------------------------------------------------------------------------
// CONNEXION FTP ---------------------------------------------------------
$type = "FTP_ASCII";
echo "type de connexion $type <BR>";
$conn_id = ftp_connect("$ftp_server");
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");
@ftp_mkdir($conn_id, "backup");
ftp_chdir($conn_id, "backup");
if ((!$conn_id) || (!$login_result))
{
echo "La connexion FTP a échoué!";
echo "Tentative de connexion à $ftp_server en tant que $ftp_user_name";
die;
}
else
{
echo "Connecté à $ftp_server, avec $ftp_user_name <BR>";
}
// Ouverture du répertoire racine
$link=opendir($local_path);
while (gettype($name=readdir($link))==string )
{
if (is_dir($name))
{
if ($name=="..")
{continue;}
$name=str_replace (".", "", $name);
// SAUVEGARDE DES FICHIERS *.* DU REPERTOIRE RACINE
if ($name=="")
{exec("tar cz *.* > racine.tgz");
$name="racine";
}
//SAUVEGARDE DE CHAQUE SOUS REPERTOIRE DE LA RACINE
if ($name<>"")
{exec("tar cz ".$name."/* > ".$name.".tgz");
}
echo "<b>REPERTOIRE : ".$name."<br></b>";
$destination_file = $name.".tgz";
$source_file = $name.".tgz";
// TRANSFERT FTP, C'EST LA QUE C'A BLOQUE SOUVENT......
$upload = ftp_put($conn_id, "$destination_file", "$source_file", $type);
if (!$upload)
{
echo "<h2 color=\"red\">Le téléchargement FTP échoué!</h2><hr>";
} else {
echo "Téléchargement de ".$source_file." sur ".$ftp_server."<b> ".$dir."</b> en ".$destination_file." <b><font color=#00FF00 size=3>OK</font></b><hr>";
}
// EFFACEMENT DES FICHIERS ET REPERTOIRES TEMPORAIRE
exec("rm *.tgz");
exec("rm $local_path/sqlbackup/*.sql");
exec("rmdir $local_path/sqlbackup");
}
// ON NE COMPRESSE ET TRANSFERE QUE DES REPERTOIRES (et leur contenu), PAS DES FICHIERS SOLITAIRES
if (is_file($name))
{continue;}
}
// FERMETURE DU REPERTOIRE RACINE, DE LA CONNEXION FTP
closedir($link);
ftp_quit($conn_id);
?> |
Partager