Dupliquer un fichier sur serveur distant par commande ftp ?

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • #16
    De mémoire il n'y a rien à modifier. Tu dois juste et uniquement créer un fichier .ini (par exemple serveur1.ini) et passer le nom de fichier en paramètre sur la ligne de commandes.

    Une commande telle que "php ftp_deploy serveur1.ini" (après consultation de la doc, c'est "php deployment serveur1.ini" )

    Et dont écrire les données de connexion dans le fichier de configuration.
    Dernière édition par cavo789 à 31/01/2023, 17h26
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #17
      Christophe, je n'utilise pas le script que tu as cité, mais simplement les deux lignes de définition de l'adresse du serveur puis de connexion (suivies du traitement que je suis en train de tester) : la connexion fonctionne jusqu'en PHP 8.0 mais plus à partir de la version 8.1 en raison du changement de type de la réponse à cette fonction (FTP\Connection au lieu de resource).
      Code:
      $ftp_server = "monserveur";
      $ftp = ftp_connect($ftp_server);
      Et le script sera placé sur un serveur distant mutualisé, chez PlanetHoster. Je ne pense pas pouvoir y installer quoi que ce soit moi-même sinon mon script pour l'appeler par tâche cron.
      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

      Commentaire


      • #18
        Je complète avec ce simple script de test qui établit la connexion en version 8.0 mais plante sans rien afficher sinon l'erreur fatale en version 8.1
        Code PHP:
        <?php

        $ftp_server 
        "nom_du_serveur";
        //$ftp = ftp_connect($ftp_server);
        if (!empty(ftp_connect($ftp_server))) {
        echo 
        "connexion établie";
        ftp_close($ftp);
        } else {
        echo (
        'connexion impossible');
        }

        ?>
        Je viens de prendre le premier exemple de la page de description de ftp_connect sur le manuel PHP officiel et j'ai exactement la même erreur.
        Dernière édition par RobertG à 31/01/2023, 17h54
        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

        Commentaire


        • #19
          Que de temps bêtement perdu !
          Pardon à vous qui m'avez lu et répondu.

          Le problème était dans la configuration PHP 8.1.11 (idem en 8.2.0) de WampServer : l'extension ftp n'est pas activée par défaut. Une fois activée, plus d'erreur !

          Bon, je peux continuer.
          pmleconte aime ceci.
          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

          Commentaire


          • #20
            Hello.
            Je découvre la nouveauté de php8.2, la fonction existe toujours mais retourne une instance au lieu d'un ressource.

            Je pense que le problème vient plutôt de ta configuration de ta version de php.

            Tu a décommenté la ligne 930 de ton php.ini en C:\wamp64\bin\php\php8.2.0 ?
            Code:
            ;extension=ftp
            A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
            Rejoignez le Joomla Users Groupe Alsace...
            roland_d_alsace va-t-il devenir roland_du_grand_est ?

            Commentaire


            • #21
              oups désolé, je n'étais pas passé à la page 2 de la discussion...
              A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
              Rejoignez le Joomla Users Groupe Alsace...
              roland_d_alsace va-t-il devenir roland_du_grand_est ?

              Commentaire


              • #22
                Pas de mal, Roland !

                Maintenant, j'ai un os beaucoup plus dur : depuis le serveur PlanetHoster où devrait être placé le script et lancé par tâche cron depuis un dossier non accessible par URL, je peux me connecter aux deux serveurs PHPNET dont l'un contient les fichiers que je veux copier ailleurs, mais impossible de lister les fichiers, alors que ça fonctionne depuis mon serveur local Wampserver.

                Il faut que je contacte les hébergeurs, en espérant une solution, sinon, il me faudra utiliser dans une tâche cron chez PHPNET une URL d'accès au script.
                "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                Commentaire


                • #23
                  Testé chez d'autres hébergeurs, ce script se heurte dans tous les cas à un blocage du listing du contenu, il ne fonctionne que depuis mon serveur local ou depuis mon serveur web chez PHPNET/Nuxit.

                  Par défaut, le serveur de backups définit les droits des dossiers et fichiers à 770, serait-ce la raison ? Mais pourquoi pas de problème avec mon serveur local ?

                  S’il n’y a pas de solution pour permettre un listing à distance depuis un autre serveur qu’un de ceux de mon hébergeur où se trouve mon serveur de backups, je serai obligé de lancer le script en tâche cron en utilisant une URL, c’est-à-dire que si un pirate arrivait à accéder à la gestion du site concerné, il pourrait récupérer aussi les codes d’accès aux deux serveurs distants, raison pour laquelle je préfèrerais utiliser la méthode disponible chez PlanetHoster, du type « php -q /home/djdaeqtk/modules/cron.php >/dev/null 2>&1 ».

                  "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                  MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                  Commentaire


                  • #24
                    Pas encore de réponse de la part de mon hébergeur (tous n'ont pas la réactivité de PlanetHoster ) je continue à chercher une solution pour protéger au maximum le script.

                    Bien que cette nouvelle question n'ait rien à voir avec Joomla! (n'hésitez pas à clore le sujet si je déborde trop), j'ai pensé utiliser une instruction "deny from all" dans le dossier, si je dois utiliser une URL pour lancer la tâche. Pensez-vous que ce soit la solution ? Et est-ce que le fait d'appeler ce script depuis la même IP permettra son exécution, ou faudrait-il ajouter un "allow" pour l'IP du serveur (IP fixe) ? Je n'ai pas trouvé d'infos sur ce cas particulier.

                    Merci de vos conseils !

                    PS : une peut-être bonne nouvelle, PlanetHoster devrait proposer sous peu des serveurs de stockage. On devrait en savoir plus dans une quinzaine. Compte tenu du coût des abonnements World, on peut espérer des tarifs compétitifs...
                    Dernière édition par RobertG à 03/02/2023, 11h16
                    "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                    MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                    Commentaire


                    • #25
                      Bonjour,

                      Rien de neuf de la part de l'hébergeur !
                      J'ai donc tenté l'aventure cURL. Miracle, ça fonctionne, sauf que j'ai eu beau chercher, je n'ai toujours pas trouvé comment lister un sous-dossier précis.
                      J'ai beau changer avec ftp_chdir, curl me liste systématiquement la racine.
                      Et tant que je n'aurai pas trouvé, je ne pourrai rien faire...
                      "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                      MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                      Commentaire


                      • #26
                        Bien, je clos le sujet bien qu'il ne soit pas encore réglé.

                        A force de recherches et d'essais "au pif", j'ai fini par me rendre compte que c'était un double slash dans l'adresse du dossier à lister qui était en cause.
                        Je peux donc obtenir la liste des fichiers dossiers par dossier, depuis un serveur distant sur un autre, si ftp_nlist() ne fonctionne pas. Ce qui m'étonne, c'est de devoir relancer un curl_init() pour chaque dossier à scruter.

                        Il me reste donc à décoder le tableau pour en extraire les noms des dossiers, puis examiner chaque dossier à la recherche de ses fichiers, de sélectionner ceux postés après la dernière vérification, et enfin les copier vers l'autre serveur de stockage.
                        "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                        MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                        Commentaire


                        • #27
                          Bonjour,

                          Je reprends mes recherches.
                          Après avoir listé avec curl (ftp seul ne fonctionne pas) les fichiers d'un dossier sur un serveur, je compare les fichiers à la liste de ceux du dossier de destination (auquel j'accède en ftp) de l'autre serveur (à terme, un fichier horodaté évitera cette comparaison). Je sais ainsi lesquels transférer.

                          Le script est sur un serveur de fichiers, il se connecte en mode curl à un autre serveur de fichiers (appelons la connexion à l'adresse du dossier en question "$ftp") pour y lister ce qui nous intéresse, et au serveur de destination ("$destftp").
                          Je sais faire un tel transfert en ftp (avec ftp_get si le fichier n'est pas sur le serveur du script et doit être rapatrié, et ftp_put pour l'envoi) mais je ne trouve pas d'équivalent simple en curl, malgré mes recherches.
                          Je ne voudrais pas importer en curl le fichier du serveur expéditeur vers le serveur du script puis l'envoyer vers le serveur destinataire, mais directement copier du serveur expéditeur au serveur destinataire.

                          Y aurait-il une méthode simple pour ça ?
                          Merci de vos conseils !
                          Dernière édition par RobertG à 03/04/2023, 09h32
                          "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                          MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                          Commentaire


                          • #28
                            J'ai beau chercher, je ne trouve pas de méthode autre qu'une longue série de lignes de code curl pour importer les fichiers (lourds) par récupération de leur contenu, si j'ai bien compris, à insérer dans le fichier de destination, avant d'envoyer par ftp_put ce fichier vers le serveur de destination.

                            Il n'y aurait donc pas de moyen de ne pas transiter par le serveur du script ?

                            PS : en utilisant le code proposé ici https://findnerd.com/list/view/CURL-...ng-curl/17179/ j'arrive à importer sur le serveur du script puis envoyer vers le serveur de stockage, c'est déjà ça.
                            Dernière édition par RobertG à 03/04/2023, 11h37
                            "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                            MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                            Commentaire


                            • #29
                              Bonjour,

                              Qui pourrait me dire s'il serait ou non possible avec curl de transférer directement un fichier du serveur de stockage A vers un serveur de stockage B (tous deux sans PHP) depuis un script PHP exécuté depuis un serveur C ?
                              Mon idée est-elle réalisable ou devrai-je passer obligatoirement par l'étape intermédiaire de copie de A à C avant d'envoyer de C à B ?
                              "Patience et longueur de temps font plus que force ni que rage..." (La Fontaine : Le Lion et le Rat) - "Il n'y a pas de problèmes; il n'y a que des solutions" (André Gide).
                              MoovJla et LazyDbBackup sur www.joomxtensions.com - FaQ sur www.fontanil.info - Site pro : www.robertg-conseil.fr chez PHPNET, sites perso chez PlanetHoster + sites gérés chez PHPNET, PlanetHoster, Ionos et OVH

                              Commentaire


                              • #30
                                Bonjour
                                Bon je ne suis pas assez calé pour t'aider, mais en relisant le 1er post et en parcourant rapidement ce long fil, je me demande si c'est 2 serveurs si tu ne pourrais pas utiliser SCP ou RSYNC ?
                                Voir ces 2 articles
                                plus de détail sur Comment transférer des fichiers entre deux serveurs Linux ? est dans notre site lojciels.com, il suffit de cliquez ici pour avoir toute

                                https://www.ubackup.com/fr/windows-s...-serveurs.html - chap. 2
                                Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%A8mes-communautaires/tout-et-rien/2027647-connaissez-vous-des-graphistes-communicants-pour-promouvoir-joomla

                                Commentaire

                                Annonce

                                Réduire
                                Aucune annonce pour le moment.

                                Partenaire de l'association

                                Réduire

                                Hébergeur Web PlanetHoster
                                Travaille ...
                                X