full backup automatique impossible ! a l'aide svp

malak-14

New Member
#1
salut tous le monde voila j'ai suivie un tuto pour pouvoir faire une tache cron pour sauvegarder tout mon cpanel automatiquement tous les jours mais rien n'y fait ça ne veu pas , je reçoit par mail le code source de mon script et je ne vois pas ou j'ai bien pu faire une erreur !! j'ai ouvert un ticket mais aucune réponses concrète !:mad:

donc je m'en remet à la communautée.

donc j'ai un script nommé cpanel_backup.php à la racine de mon serveur avec ce code :
PHP:
<!--?php

// ***************** Configuration *****************

// Information du CPANEL
$cputilisateur = "XXXX"; // Nom d'utilisateur du CPanel
$cpmotdepass = "XXXX"; // Mot de passe de CPanel
$domaine = "jaka.planethoster.net"; // Le serveur Planethoster (remplacer "requin") ou IP
$skin = "PlanetHoster"; // le thème utilisé (Sa sert a rien mais il en faut un !

// Information sur la sauvegarde
$ftpmode = "homedir"; // FTP mode ("homedir" pour une complête, "ftp" for active, "passiveftp" for passive)

//Scan antivirus (1=Activé || 0=Désactivé)
$antivirus = 1;

//Nombre de jours pendant la quel sera stocké la sauvegarde
$jours=60;

// Notification information
$emailnotification = "[email protected]"; // E mail de notification

// Sécurisé ou non avec httpS
$securise = 1; // mettre a 1 pour SSL , sinon utilise http

// permet de vérifier si le script fonctionne bien. un DE-BUG
$test = 1;


// ***************** Ne pas toucher!! *****************

if ($securise) { //Si sécurisé
$url = "ssl://".$domaine;//Domaine
$port = 2083; //port 2083
} else { //Sinon
$url = $domaine;;//Domaine
$port = 2082;//port 2082
}

$fsocket = fsockopen($url,$port); //Ouverture via fsockopen
if (!$fsocket) //Si on arrive pas a lire
{
echo "Impossible d'ouvrir le socket ... \n"; //affiche une erreur
exit; // On stop
}

// Encode le mot de passe et utilisateur
$authstr = $cputilisateur.":".$cpmotdepass;
$pass = base64_encode($authstr);

// Le paramètres transmise en GET
$params = "dest=$ftpmode&email=$emailnotification&server=&user=&pass=&port=&rdir=&submit=Generate Backup";

// Envoie un "POST" au cpanel
fputs($fsocket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\r\n");
fputs($fsocket,"Host: $domaine\r\n");
fputs($fsocket,"Authorization: Basic $pass\r\n");
fputs($fsocket,"Connection: Close\r\n");
fputs($fsocket,"\r\n");

// Recois la réponce
while (!feof($fsocket)) {
$response = fgets($fsocket,4096); //Reçois ligne par ligne
if ($test) //Si on est en mod Débug
echo $response; //On affiche
}
fclose($fsocket);

//Antivirus CLAMAV !?
if($antivirus==1)
{
$fsocket = fsockopen($url,$port);
if (!$fsocket) { echo "Impossible d'ouvrir le socket ... \n"; exit; }
// Encode le mot de passe et utilisateur (Anti-Virus)
$authstr = $cputilisateur.":".$cpmotdepass;
$pass = base64_encode($authstr);
// Envoie un "POST" au cpanel
fputs($fsocket,"GET /frontend/".$skin."/clamavconnector/scanner.html?scanpath=home HTTP/1.0\r\n");
fputs($fsocket,"Host: $domaine\r\n");
fputs($fsocket,"Authorization: Basic $pass\r\n");
fputs($fsocket,"Connection: Close\r\n");
fputs($fsocket,"\r\n");
// Reçois la réponse
while (!feof($fsocket)) {
$response = fgets($fsocket,4096);
if ($test) echo $response;
}
fclose($fsocket);
}

// Supprime les vielle sauvegarde (X jours)
foreach (glob("*.tar.gz") as $filename) { //Pour tout les *.tar.gz qui se trouve dans le /
if ((time() - filemtime($filename) -->= $jours*86400)) //86400sec = 1 jour
unlink("$filename"); // on le supprime
}
?>
et en tache cron je met : php -q /home/garocado/cpanel_backup.php
or cela ne fonctionne pas j'ai essayer plusieurs modif du domaine en mettant garocado.fr mais rien n'y fait .
je reçoit toujours un mail avec le code du script et aucun backup de créer dans mon server . merci de me dire ce qui ne va pas .

merci à tous pour votre aide
 

pierre_kuhn

Active Member
#3
Bonjour Vincent

Oui cela pourrais le faire tourner mais il faut savoir que nous avons des backup et que ce la prendrait de la place sur votre plan pour rien.
Si quelqu'un veut le faire obligatoirement, il peut tester mais bon ah quoi cela sert.
Surtout sur 60 jours, faut du serveur ...
 
#4
J'ai un script similaire qui fonctionne du feu de dieu, mais le mien envoi le backup sur un autre FTP pour pas gacher de la place...
Et moi je les conserve quelques jours, 60 jours c'est peut être trop non?

Dans ton script ton appel php est étrange : "<!--?php " ça ne serait pas plutot "<?php "?

Et aprés est ce que le chemin mit dans la tache cron correspond à l'endroit où se trouve ton fichier php?
Si tu mets "php -q /home/garocado/cpanel_backup.php" cela veut dire que ton fichier de sauvegarde "cpanel_backup.php" se trouve à la racine de ton compte, la liste de fichier avant le "public_html".
 
#5
"Oui si tu as rien de spécial a faire ( genre envoyer les BackUp vers un autre site) laisse faire PH qui lui a le R1SOFT
 

pierre_kuhn

Active Member
#6
On est tombé d'accords avec lui, il n fait pas sont backup.
David, tu pourrais faire un tuto avec ton code ?
 
#7
Avec ce code ta sauvegarde sera créée sur ton compte PlanetHoster, puis une fois qu'elle sera complète elle sera uploadée sur le FTP que tu auras configuré au début du script, et quand ce sera fini elle sera effacé de ton compte sur PH.
Ainsi tu ne satures pas ton compte PH, et tu as une sauvegarde ailleurs, dans un autre panier, car comme le dit le dicton : "il ne faut pas mettre tous ses oeufs...."

PHP:
<?php

// Info pour le FTP distant avant d'y mettre les backups
$ftpuser = "xxxxxx"; // Utilisateur du ftp distant
$ftppass = "xxxxxx"; // Password de l'utilisateur
$ftphost = ""; // hostname du ftp
$ftpmode = "passiveftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)
$ftpport = "21";

// Envoi du mail quand la procédure de fullbackup est finie
$notifyemail = "xxxxxxxx"; // Adresse email sur laquelle sera envoyée la notification une fois le backup complété

//ajustement de la date par rapport au serveur car moi je les classe par date
$jour  = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$date = date("d-m-Y",$jour);
$date = ''.$date.'';

//informations de ton compte cPanel
$cpuser = 'xxxxx';//login du cPanel
$cppass = 'xxxxxx';//mot de passe du cPanel
$domain = 'xxxxxx.com';//mettre le domaine concerné (domaine principal)
$skin = "PlanetHoster"; // mettre le nom du skin utilisé par le cPanel


//************************************CREATION DOSSIER DE SAUVEGARDE******************************************
$ftp = ftp_connect("$ftphost"); // On prépare la connexion
ftp_login($ftp,"$ftpuser","$ftppass"); // On se connecte au serveur
@ftp_mkdir ($ftp,"$date"); // Création du dossier. (chemin depuis la racine du serveur)
ftp_quit ($ftp); // On se déconnecte du serveur
//************************************FIN CREATION DOSSIER DE SAUVEGARDE****************************************				  

$dossier = ''.$date.'/';	
$ftpdir = $dossier; // dossier de destination sur le FTP distant dans lequel nous allons sauvegarder le fullbackup en cours

// Mode Ssl
$secure = 2; // 1 oui 2 non vaut mieux oui

// Debug pour le cron job mettre 1 pour conserver une trace sinon 2
$debug = 2;
// fin initialisation varibles pour le full backup


// connexion ssl activé
if ($secure == '1') 
{
	$url = "ssl://".$domain;
	$port = 2083;
	// sinon connexion non sécurisé
} else 
{
	$url = $domain;
	$port = 2082;
}

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

// re encodage de l'anthentification
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);
$params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&port=$ftpport&rdir=$ftpdir&submit=Generate Backup";			   

// On passe les commandes post au 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");

// Recupération des réponse venant du cPanel ( mettre $debug sur 1 c mieux )
while (!feof($socket)) 
{
	$response = fgets($socket,4096);
	if ($debug == '1')
	{ 
		echo $response;
	}
}

fclose($socket);
			  
echo 'Sauvegarde du compte dans le dossier : '.$dossier.'';				  

?>
Par exemple enregistrer ce code dans le fichier "backup.php", et mettre ce fichier à la racine du
FTP.
Dans ce cas l'appel dans la tache cron se fera comme ceci :
Code:
php -q /home/MONCOMPTE/backup.php
Si on le met dans le public_html, l'appel se fera ainsi :
Code:
php -q /home/MONCOMPTE/public_html/backup.php
 
Dernière édition:

ali59a

New Member
#8
Bonjour à tous !

Merci @David77 pour ce petit bout de code très utile qui permet de sauvegarder le contenu cPanel.

Cependant, j'aimerais savoir si c'est possible juste de sauvegarder certains dossiers (mySql par exemple) et pas tous le contenu.

Merci d'avance pour la réponse.

Ali.
 
Haut