IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sauvegarde serveur A vers serveur B en PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    aprendre le php, sql,et javascript
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : aprendre le php, sql,et javascript
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 21
    Points
    21
    Par défaut Sauvegarde serveur A vers serveur B en PHP
    onjour,
    j'ai actuellement 2 serveur qui accepte les transferts FTP

    je souhaiterais que chaque jour grâce a une tache Cron qui exécutera cette page PHP

    copie le dossier "/sauvegarde" de mon serveur A dans le dossier "/BACKUP" de mon serveur B

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ftp_server="mon serveur A"; 
     $ftp_user_name="user"; 
     $ftp_user_pass="password"; 
     
     //  connection 
     $conn_id = ftp_connect($ftp_server); 
     
     // identification 
     $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
     
     if ((!$conn_id) || (!$login_result))
    {echo 'la connexion a échouer';die();}
    else{
    echo 'la connexion a réussi';
    }
    pour cette partie la "la plus simple" sa marche je suis bien connecter au FTP de mon serveur A

    mais je ne sais comment récupérer le dossier " /sauvegarde " et tout ce qu'il contient et les stocker dans le dossier " /BACKUP " de mon serveur B

    j'ai essayer avec ftp_put ou ftp_nb_put mais je n'arrive pas a les utiliser

    merci pour votre aide par avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu as des sous-dossiers, il faut utiliser la recursivité.
    Un exemple ici pour une suppression mais tu peux l'adapter pour une copie :
    http://php.developpez.com/telecharge...ve-de-fichiers
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    aprendre le php, sql,et javascript
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : aprendre le php, sql,et javascript
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    mon dossier source "sauvegarde" ne contiens pas de sous dossier seulement des fichiers .sql et .zip

    est ce que c'est comme sa que s'utilise cette fonction "ftp_put"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $ftp_server="mon serveur A";      //le serveur B se connecte au serveur A
     $ftp_user_name="user"; 
     $ftp_user_pass="password"; 
     $dossier_source = "/sauvegarde";   //dossier à copier du serveur A
     $destination = "/BACKUP/";            // dossier de destination dans serveur B
     
     //  connection 
     $conn_id = ftp_connect($ftp_server); 
     
     // identification 
     $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
     
     if ((!$conn_id) || (!$login_result)) {echo 'la connexion a échouer';die();} else{ echo 'la connexion a réussi';}
     
    // Transfer du dossier 
     if (ftp_put($conn_id, $destination, $dossier_source, FTP_ASCII)) { 
        echo "succès du Transfer de : $dossier_source\n"; 
        exit; 
     } 
    else { echo "il y a un problème avec la copie de : $dossier_source\n"; exit; } 
     
    // fermeture de la connexion FTP 
     ftp_close($conn_id);
    merci encore de votre aide
    cdt

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non, la fonction traite des fichiers, pas des dossiers.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    ce que tu veux faire est une tâche d'administration et les outils pour effectuer cette tâche existent.avec une simple commande linux pour peu de sauvegarder la clé publique de A dans B(pour éviter de retaper le mot de passe):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    scp source/* utilisateur@adresse-du-serveur:/home/toto
    sinon en php, comme tu n'as que des fichiers:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
    $ftp_server="mon serveur A";      //le serveur B se connecte au serveur A
     $ftp_user_name="user"; 
     $ftp_user_pass="password"; 
     $dossier_source = "sauvegarde";   //dossier à copier du serveur A
     $destination = "BACKUP";            // dossier de destination dans serveur B
     
     //  connection 
     $conn_id = ftp_connect($ftp_server); 
     
     // identification 
     $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
     
     if ((!$conn_id) || (!$login_result)) {echo 'la connexion a échouer';die();} else{ echo 'la connexion a réussi';}
     
     
    $iterator = new DirectoryIterator($dossier_source);
    //parcours de tous les fichiers du repertoire source
    foreach ($iterator as $file) {
        if ($file->isFile()) { 
    // Transfer du dossier 
     if (ftp_put($conn_id, $destination.'/'.$file->getFilename(), $dossier_source, FTP_ASCII)) { 
        echo "succès du Transfer de : $dossier_source\n"; 
     } 
    }
    else { echo "il y a un problème avec la copie de : $dossier_source\n";  } 
     
    }//foreach
    // fermeture de la connexion FTP 
     ftp_close($conn_id);

  6. #6
    Membre à l'essai
    Homme Profil pro
    aprendre le php, sql,et javascript
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : aprendre le php, sql,et javascript
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    bonjour,
    merci pour ta reponse rapide

    je suis obliger d'utiliser la version PHP
    lorsque j’exécute cette page j'ai une erreur :

    la connexion a réussi
    Fatal error: Uncaught exception 'RuntimeException' with message 'DirectoryIterator::__construct(sauvegarde) [<a href='directoryiterator.--construct'>directoryiterator.--construct</a>]: failed to open dir: No such file or directory' in /mon_serveur/transfer_1.php:21 Stack trace: #0 /mon_serveur/transfer_1.php(21): DirectoryIterator->__construct('sauvegarde') #1 {main} thrown in /mon_serveur/transfer_1.php on line 21
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    $ftp_server="mon serveur A";      //le serveur B se connecte au serveur A
     $ftp_user_name="user"; 
     $ftp_user_pass="password"; 
     $dossier_source = "sauvegarde";   //dossier à copier du serveur A
     $destination = "save/BACKUP";            // dossier de destination dans serveur B
     
     //  connection 
     $conn_id = ftp_connect($ftp_server); 
     
     // identification 
     $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
     
     if ((!$conn_id) || (!$login_result)) {echo 'la connexion a échouer';die();} else{ echo 'la connexion a réussi';}
     
     
    $iterator = new DirectoryIterator($dossier_source);
    //parcours de tous les fichiers du repertoire source
    foreach ($iterator as $file) {
        if ($file->isFile()) { 
    // Transfer du dossier 
     if (ftp_put($conn_id, $destination.'/'.$file->getFilename(), $dossier_source, FTP_ASCII)) { 
        echo "succès du Transfer de : $dossier_source\n"; 
     } 
    }
    else { echo "il y a un problème avec la copie de : $dossier_source\n";  } 
     
    }//foreach
    // fermeture de la connexion FTP 
     ftp_close($conn_id);

    voici la présentation des serveurs :

    serveur B à la racine :

    save
    contiens --> BACKUP
    et --> transfer_1.php

    -----------------------------------------------

    serveur A à la racine :

    sauvegarde
    contiens --> test.sql
    et --> test.zip


    avez vous une idée ?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $dossier_source = "sauvegarde";   //dossier à copier du serveur A

    c'est un problème de chemin du dossier source par rapport au script transfer_1.php.où est situé sauvergarde par rapport au script transfer_1.php ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    aprendre le php, sql,et javascript
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : aprendre le php, sql,et javascript
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $dossier_source = "sauvegarde";   //dossier à copier du serveur A
    est sur le serveur que je me connecte pas sur le serveur ou se trouve transfer_1.php

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    ton script php doit être sur le même serveur que le dossier sauvegarde et il faut indiquer à ce script où est situé le dossier sauvergarde.

  10. #10
    Membre à l'essai
    Homme Profil pro
    aprendre le php, sql,et javascript
    Inscrit en
    Mai 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : aprendre le php, sql,et javascript
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2011
    Messages : 31
    Points : 21
    Points
    21
    Par défaut
    c'est bon la sa fonctionne parfaitement

    Merci beaucoup pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-2010] Upload modifications Serveur Intégration vers Serveur Exploitation
    Par diabli73 dans le forum SharePoint
    Réponses: 5
    Dernier message: 07/03/2012, 14h45
  2. migration donnée d'un serveur 2000 vers serveur 2008 avec robocopy
    Par oliviervac dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 14/04/2011, 00h58
  3. Communication serveur windows vers serveur linux
    Par samson_02 dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 28/05/2009, 15h13
  4. Java vers serveur Php/Mysql, quelle solution ?
    Par Mordoum dans le forum Général Java
    Réponses: 7
    Dernier message: 22/01/2008, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo