Import/Export de fichier (automatisation)

Import/Export de fichier (automatisation) - SQL/NoSQL - Programmation

Marsh Posté le 11-06-2019 à 09:51:32    

Bonjour,
 
Je viens aujourd'hui vous demander de l'aide pour un projet.
 
Je suis nouveau dans le domaine et je souhaiterais savoir s'il est possible de transférer des fichiers (en .txt) via Phpmyadmin .
Il me faudrait une requête qui récupère les fichiers txt sur un FTP et qui le rapatrie sur le FTP où je gère via Phpmyadmin et qui ensuite le renvoi sur le premier FTP dans un dossier différent.
J'ai cherché sur plusieurs moteurs (google, duckduckgo...) mais ne trouve que les transferts de base de données pour les sites web.
 
voilà un exemple de ce que je cherche à faire :
 
open perso-ftp.orange.fr
_____._____@orange.fr
Password
lcd Chemin du premier FTP
cd /Prod_Output
get stockspi_xxxxx.txt
quit
 
pause 1
 
open ftp.free.fr
_____._____@free.fr
Password
lcd Chemin du 2eme FTP
cd /Prod_Order
put stockspi_xxxxx.txt
quit
 
 
Cela fonctionne dans le panneau de commande Windows mais je souhaiterais avoir un exemple pour phpMyadmin (MySQL) si cela est possible bien sûr.
 
En vous remerciant d'avance.

Reply

Marsh Posté le 11-06-2019 à 09:51:32   

Reply

Marsh Posté le 11-06-2019 à 12:08:58    

Le plus simple est de faire un script en PHP qui se charger de :
1) lancer l'export de la BD vers le fichier toto.sql
2) faire le transfert du fichier toto.sql du serveur A vers le serveur B en FTP.
 
Pour faire l'import du fichier toto.sql côté serveur B, 2 solutions :
- soit le script précédemment décrit se charge d'appeler en https le script php d'import.
- soit une tâche cron exécute le script php d'import.
 
Je pense que la 2ème solution est plus sécurisée.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 12-06-2019 à 10:36:14    

Bonjour,  
 
Je vous remercie pour cette réponse qui va bien m'aider.
J'ai trouver la solution suivante pour le téléchargement:
 
<?php
                // define some variables
        $folder_path = "YOUR FOLDER PATH";
        $local_file = "LOCAL FILE PATH";
        $server_file = "SERVER FILE PATH";
       
        //-- Connection Settings
        $ftp_server = "IP ADDRESS"; // Address of FTP server.
        $ftp_user_name = "USERNAME"; // Username
        $ftp_user_pass = "PASSWORD"; // Password
        #$destination_file = "FILEPATH";
       
        // set up basic connection
        $conn_id = ftp_connect($ftp_server);
       
        // login with username and password
        $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
 
// Tentative de téléchargement du fichier $server_file et sauvegarde dans le fichier $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    echo "Le fichier $local_file a été écrit avec succès\n";
} else {
    echo "Il y a un problème\n";
}
 
// Fermeture de la connexion
ftp_close($conn_id);
 
?>
 
Mais les Noms de mes fichiers vont tous commencer pareils sans avoir le même nom pour autant, quelle fonction puis-je utiliser pour télécharger des fichiers avec des noms inconnu (comme expliquer dans mon premier poste) Exemple : CDE_xxxxxx.txt
 
Merci d'avance.
 

Reply

Marsh Posté le 12-06-2019 à 10:40:53    

Autant pour moi j'ai trouver la solution :
 
foreach (glob("*.txt" ) as $filename) {
    echo "$filename occupe " . filesize($filename) . "\n";
}
 
Merci de votre aide.

Reply

Marsh Posté le 13-06-2019 à 11:30:06    

Bonjour,
 
Je reviens vers vous car je n'arrive pas à exécuter mon script que j'ai mis dans test.php  
 
Quand je tente de l'executer avec la commande #!/usr/bin/php il me renvoi une erreur :
 
MySQL a retourné un résultat vide (c'est à dire aucune ligne). (traitement en 0.0002 seconde(s).)
 
information supplémentaire j'utilise  phpmyadmin 5.5
 
Merci.

Reply

Marsh Posté le 13-06-2019 à 11:35:05    

Tu mets bien les bons identifiants pour te connecter à la BD ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-06-2019 à 12:23:52    

Ah donc voilà d'où viens l'erreur.
Je dois me connecter à la BD depuis le fichier php que j'ai créé ou bien depuis les commandes à exécuter ?
 
Si c'est depuis le fichier php j'ai trouvé un code mais depuis phpmyadmin je ne voie pas. (sinon comment dois-je faire ?)

Reply

Marsh Posté le 13-06-2019 à 13:44:38    

Quand tu te connectes à phpmyadmin, tu rentres le login/mdp d'un compte permettant de te connecter à MySql. T'as compris que phpmyadmin, c'était juste une surcouche graphique web à Mysql. Donc tous les comptes créés dans Mysql sont utilisables via phpmyadmin.
 
Du coup, quand un script, une appli ou tout "truc" qui veut accéder à ta BD doit s'y connecter via un login/mdp Mysql et disposer des drivers/fonctions pour manipuler une BD Mysql. Au passage, ça implique que le serveur mysql fonctionne. Si Mysql n'est pas lancé, c'est mort. :o


Message édité par rufo le 13-06-2019 à 13:45:26

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-06-2019 à 15:34:08    

Salut,
 
Je n'arrive pas a comprendre le lien entre un transfert ftp de fichier et Phpmyadmin ou la bdd mysql :-/
 
Est ce que tu pourrais expliquer très clairement ton problème  :??:  ?
1 : La je vois un premier problème qui est "de la copie de fichiers entre serveurs"
 
2 : Je vois aussi une base de données qui sert à je ne sais trop quoi : on crée les fichiers textes à partir d'elle ? On récupère la liste des fichiers dans la bdd ? autre  :??: ?
 
3 : Phpmyadmin qui sert aussi à je ne sais trop quoi aussi : tu te sers de l'interface pour visualiser ta bdd, mais quel est le rapport avec le script php que tu veux faire  :??: ? Cela permet juste d’exécuter des requêtes SQL pour visualiser/modifier les données qui sont dans ta base de données, mais ça ne fera pas du transfert de fichiers entre serveurs.
 
Bref je ne comprends pas ton problème et avec le début de solution que tu proposes, je ne sais pas si tu comprends vraiment ce que tu veux faire non plus  :sweat:  
 
Je ne sais pas comment FTP à évolué depuis le temps (je n'y crois pas trop) mais par défaut ce n'est pas sécurisé, toutes les informations circulent en claire (on les retrouve très facilement avec wireshark par exemple)
Il faudrait plutôt regardait du coté de SFTP.
 
Ensuite c'est quoi comme système d'exploitation sur tes serveurs ?  
Sous linux par exemple, la copie distante de fichiers entre serveur se fait très bien avec des commandes prévus pour tel que scp ou rsync par exemple.

Reply

Marsh Posté le 13-06-2019 à 15:57:39    

mathieuu a écrit :

Salut,
 
Je n'arrive pas a comprendre le lien entre un transfert ftp de fichier et Phpmyadmin ou la bdd mysql :-/
 
Est ce que tu pourrais expliquer très clairement ton problème  ?
 


 
 
Salut Mathieuu,
 
Je vais tenter de m'expliquer plus clairement :
 
Je dois déplacer des fichiers au format .txt sur un serveur FTP, ces fichiers commence par une lettre spécifique (O) (Je ne dois pas déplacer les autres).
Le déplacement de ces fichiers ce font d'un dossier à l'autre de ce même FTP, mais manuellement ce n'est pas possible car je manquerais de temps pour le faire.
Comme demandé dans mon premier poste je voulais une solution pour déplacer ces fichiers automatiquement depuis un serveur distant que je peux gérer (le premier FTP n'étant pas gérable).
Je ne peux le faire depuis un de mes PC qui tournerais pratiquement H24.
Donc je voulais faire une requête à distance entre un phpmyadmin et ce fameux FTP.
 
Si cela n'est pas faisable merci de me l'indiquer directement.
 
Version du serveur : 5.5.57-MariaDB - MariaDB Server
Apache
 
Merci.

Reply

Marsh Posté le 13-06-2019 à 15:57:39   

Reply

Marsh Posté le 13-06-2019 à 16:02:10    

Si, c'est faisable, sauf que tu confonds Mysql (serveur de BD) et phpmyamin qui n'est qu'une IHM à Mysql. Donc, tu veux déplacer des BD issues de ton serveur Mysql vers un autre serveur.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 13-06-2019 à 16:56:21    

Pour la problématique, c'est globalement plus claire, mais pour moi en l'état ça ne veut toujours un peu rien dire, je ne comprends toujours pas ce que viens foutre la MariaDB..
 
En bref ta problématique c'est : "déplacer des fichiers qui commencent par la lettre "O" d'un dossier dans un autre dossier sur un serveur distant"
 
Bref, on repart du départ : tu as un serveur distant avec des fichiers textes dessus (qu'on va appeler ServeurFichiers si il faut lui filé un nom)
 
Tu ne peux t'y connecter qu'en FTP ? Si oui pourquoi ? Une connexion en ssh ça serait réglé avec un pauvre cp ou mv (et pour automatiser, un cron qui le fait de temps en temps tout seul)
 
Tu utilises quoi pour te connecter en FTP ? FileZilla ou autre ? Cela fait des années que j'en ai pas utilisé, mais je suis presque sur qu'il y a des filtres pour n'avoir que les fichiers qui commencent par un "O", ensuite un select/glisser/déposer et c'est bon en 20 secondes (mais c'est pas automatisé)
 
(Si j'ai bien compris mais pas convaincu) Sur l'autre serveur (que je vais appeler ServeurPerso), je ne comprends pas pourquoi tu veux utiliser Phpmyadmin, ca te permet de gérer la base de données de ServeurPerso, a priori ça n'aura aucune utilité pour ton transfert FTP de ServeurFichiers vers ServeurPerso puis re vers ServeurFichiers.
Tu as juste besoin de faire une page php (que je vais appeler Transfert.php) et ensuite il y a juste à faire executer le code, soit via une ligne de commande du style php Transfert.php, soit avec la navigateur web en visitant la page ServeurPerso/Transfert.php (en ayant réglé apache comme il faut).
 
Enfin, je trouve quand même assez lourd comme traitement de copier les fichiers sur un serveur distant puis de les recopier sur le serveur d'origine.  
En gros : déplacer des fichiers, si cela ne change pas de disque dur sur ServeurFichiers cela revient juste a modifier des informations pour dire où est rangé l'information, c'est réglé en quelques secondes même pour des grosses quantité de données
La avec ton script il faut que tu copies tout une premiere fois vers ServeurPerso, que tu copie tout une 2e fois vers ServeurFichiers dans l'autre dossier puis que tu supprimes les fichiers d'origines de ServeurFichiers (sans te chier dans la commande pour ne pas supprimer les fichiers qui commence par autre chose que O ..)
Niveau perf, ca me semble naze ..
 
Pour ameliorer, dans ton script php, pourquoi ne pas directement déplacer les fichiers du ServeurFichiers vers le ServeurFichiers dans l'autre dossier ?
(Sans avoir tester) cela a l'air possible avec la fonction ftp_rename
 
En gros le script :  
tu te connecte en FTP à ServeursFichiers
tu vas dans le dossier avec les fichiers .txt
tu stock tous les noms de fichiers commencent par la lettre "O"
tu utilises ftp_rename pour déplacer les noms de fichiers stocker vers l'autre dossier.
Il n'y aura plus qu'a executer le script php et ca roule

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed