Page 1 sur 1

[..] Déplacement à distance sur FTP

Posté : mer. 21 juil. 2010 23:31
par TheoOrl45
Bonjour,


Dans le cadre d'un petit projet, j'aurai besoin, par un script AutoIt, d'accéder à un FTP distant contenant des sous-dossiers, et de pouvoir déplacer les fichiers (dont je connais à l'avance le nom) d'un de ces sous-répertoires vers la racine du FTP.

Il s'agit d'un déplacement à distance. Je voudrais éviter de télécharger le fichier en local (sur la machine faisant tourner mon script AutoIt) et de l'uploader à la racine du FTP... ça prend de la bande passante pour rien...

Auriez-vous une solution ?
J'ai trouvé des choses sur votre forum, mais ça parle uniquement de télécharger ou d'uploader... mais pas de déplacer sur le FTP...

Merci pour l'aide que vous pourrez m'apporter :-)

Bonne soirée à tous.

--
Théo

Re: [..] Déplacement à distance sur FTP

Posté : mar. 27 juil. 2010 12:02
par sksbir
Bonjour

autoit est magique, mais pas à ce point.

Il n'existe pas de fonction permettant de déplacer des fichiers : ça n'est pas implémenté sur les clients FTP comme filezilla : on ne peut que renommer un fichier, mais pas le déplacer.
ça n'est donc certainement pas implémenté sur les serveurs FTP non plus (je n'ai pas vérifié, mais si c'est pas proposé sur filezilla, c'est que ça n'existe pas) , et aucun client , même généré par autoit ne saurait faire faire cela à un serveur...

Voir réponse plus loin, c'est possible en fait...

Re: [..] Déplacement à distance sur FTP

Posté : mar. 27 juil. 2010 12:09
par Sh4dows
Si j'ai bien compris : Téléchargement du fichier => Enregistrement en local => Serveur FTP
Sans passer par le pc !

C'est possible en php (il me semble) mais pas en autoit !

Re: [..] Déplacement à distance sur FTP

Posté : mar. 27 juil. 2010 13:36
par SrBelial
Je crois au contraire que c'est bien possible !!!

et ceci pour la simple et bonne raison que le déplacement d'un fichier par ftp se fait exactement comme sur un poste client ... aucune fonction compliquée c'est simplement un rename !!!!!!

avez vous déjà remarqué que lorsqu'on déplace même un très gros répertoire d'un endroit du disque à un autre (en restant dans la même partition et tout et tout bien sur), cela se fait très rapidement ?

tout simplement parce que les OS se contentent de faire un "renommage" du chemin complet du fichier qui affecte non pas la partie du chemin correspondant au nom de fichier lui même (test.txt par exemple) mais plutôt C:\test.txt qui devient C:\Windows\test.txt ou inversement

Sur un ftp c'est identique, Filezilla le fait, regarde la console en haut lorsque tu fais glisser un fichier du répertoire dans lequel il est vers le répertoire parent (symbolisé par les deux points " .. ") ! tu observeras que Filezilla exécute la commande RENAME ...

bah c'est pareil pour ton cas.
Exemple pratique :

ftp://root.machin.bidule/répertoire/unfichier.txt

tu fais un rename avec comme nouveau nom :
ftp://root.machin.bidule/unfichier.txt

et voila !

Re: [..] Déplacement à distance sur FTP

Posté : mer. 28 juil. 2010 19:30
par TheoOrl45
Merci SrBelial !!

Effectivement, un peu avant que tu ne m'indiques ceci, j'avais tenté le rename et j'avais constaté que ça fonctionnait bien comme un "déplacement" :-)

Merci beaucoup.

Puis-je oser une dernier question : je souhaiterai modifier la "date de modification" d'un fichier localisé sur un FTP. Toujours sans le rapatrier en local...

J'ai bien tenté de l'ouvrir avec _FTP_OpenFile, puis d'utiliser FileSetTime sur la variable du fichier, mais ça ne donne rien. Cette méthode est probablement efficace sur des fichiers ouvert avec FileOpen et pas _FTP_OpenFile...

Il s'agit de fichiers mp3 qui sont déplacés et pour lesquels, le déplacement doit laisser sa "marque" au niveau de la date de modification...

Si vous avez une idée, je suis preneur :-)
Merci beaucoup.

Re: [..] Déplacement à distance sur FTP

Posté : mer. 28 juil. 2010 21:42
par SrBelial
malheureusement je ne crois pas qu'une telle fonctionnalité puisse être appliquée directement via ftp !

en théorie les dates (création et / ou modification de fichiers) sont censées n'être modifiées que lors d'une action sur le fichier (création et / ou modification du contenu) ...

(après bien entendu il se peut que quelque chose existe pour réaliser ceci, mais je n'en suis guère certain)

J'aurais tendance à proposer la solution suivante :
faire un rename pour déplacer le fichier tout en modifiant légèrement son nom (genre rajouter un " _ " à la fin :toto.mp3_)
et ensuite faire une copie du fichier avec le nom sans le " _ ", puis supprimer le fichier temporaire toto.mp3_

de cette façon tu aura créé en quelque sorte un nouveau fichier, dont la date de création (et la date de modif aussi du coup) correspondra à la date du "déplacement" effectué !

inconvénient : c'est ptetre pas la solution la plus simple pour faire ça !
avantage : normalement pas besoin de DL le fichier en local pour le ré-UP après !

en espérant que cela t'aide !

Cordialement.

Re: [..] Déplacement à distance sur FTP

Posté : jeu. 29 juil. 2010 12:17
par TheoOrl45
Ce n'est effectivement pas la plus simple, mais ça aurait au moins le mérite de fonctionner. Je vais explorer cette voie.

Mais c'est quoi la commande pour "Copier" sur le FTP ? Elle existe elle au moins ? Ou je dois fair un "FTPPut" du FTP vers le FTP ?

Par contre, y a un truc quand même quand tu dis :
en théorie les dates (création et / ou modification de fichiers) sont censées n'être modifiées que lors d'une action sur le fichier (création et / ou modification du contenu) ...
Je suis bien d'accord avec ton raisonnement. Il n'empêche que la méthode FileSetTime (sur des fichiers locaux) le permet quand même, sans forcément faire d'action sur le fichier...

Re: [..] Déplacement à distance sur FTP

Posté : jeu. 29 juil. 2010 13:34
par SrBelial
alors la ... la commande pour copier ....aucune idée !
certains clients ftp possèdent cette fonctionnalité mais je n'ai aucune idée de comment ça marche !

sinon essaie par un script php peut être ?

Pour ce qui est des fonctions permettant de modifier les dates d'un fichier, je suis bien d'accord avec toi, ça existe, et ça marche plutôt bien, ^__^ (puis c'est parfois pratique)
mon raisonnement servait plutôt à expliquer pourquoi à mon avis c'est normal que ça existe pas chez les serveurs ftp ... ^__^

Re: [..] Déplacement à distance sur FTP

Posté : jeu. 29 juil. 2010 21:36
par Tlem
Mon ami :roll: m'a donné ceci lors de ma recherche : http://en.wikipedia.org/wiki/List_of_FTP_commands

Re: [..] Déplacement à distance sur FTP

Posté : jeu. 19 août 2010 16:04
par peuchere83
Le post n'étant pas résolu, j'en profite pour poser une question sur le même thème :
Comment renommer un répertoire à distance ?

J'arrive à renommer un fichier mais je ne comprends pas comment l'appliquer à un répertoire.
Je suppose qu'il faut utiliser la commande :
_FTP_Command

Quelqu'un l'a t'il déjà utilisé ?

Par avance merci.

Re: [..] Déplacement à distance sur FTP

Posté : jeu. 19 août 2010 16:27
par TommyDDR
Renommer un dossier en un autre :

"Rename Dossier1 Dossier2"

Testé fonctionnel.

Re: [..] Déplacement à distance sur FTP

Posté : jeu. 19 août 2010 17:07
par peuchere83
Désolé, mais je ne comprends pas :oops:

voici ce que j'ai fais :

Code : Tout sélectionner

$Open = _FTP_Open('MyFTP Control')
$Conn = _FTP_Connect($Open, $server, $username, $pass)
$result = _FTP_Command($Conn, "RENAME Rep1/Test Rep1/Test1Rename")
MsgBox(0,"",$result)

$Ftpc = _FTP_Close($Open)
Où est mon erreur svp ?

Par avance merci

Re: [..] Déplacement à distance sur FTP

Posté : ven. 01 oct. 2010 10:43
par demeereleerea
je suis dans le même cas que toi, j'essayé de m'amuser avec cette commande _FTP_command, je n'ai pas d'erreurs mais ça ne fais rien du tout :-(

Code : Tout sélectionner

#include <file.au3>
#include <FTPEx.au3>
DllOpen('wininet.dll')
$server = 'as400'
$username = ''
$pass = ''
$s_FTPCommand = "ls / c:\temp\1.txt"
dim $l_ExpectResponse
dim $l_Context
$Open = _FTP_Open('My FTP Control')
$conn = _FTP_Connect($Open, $server, $username, $pass )
$result = _FTP_Command($conn,$s_FTPCommand)
$Ftpcl = _FTP_Close($open)

Re: [..] Déplacement à distance sur FTP

Posté : ven. 01 oct. 2010 14:23
par sksbir
SrBelial a écrit :Je crois au contraire que c'est bien possible !!!
...........
Sur un ftp c'est identique, Filezilla le fait, regarde la console en haut lorsque tu fais glisser un fichier du répertoire dans lequel il est vers le répertoire parent (symbolisé par les deux points " .. ") ! tu observeras que Filezilla exécute la commande RENAME ...
Bien vu , comme quoi il y a toujours quelque chose à apprendre 8)

Re: [..] Déplacement à distance sur FTP

Posté : ven. 01 oct. 2010 15:26
par SrBelial
^__^

hé oui comme quoi .... c'est ça qui est beau dans la vie, continuer à en apprendre toujours un peu plus chaque jour !

bon sinon à part ça, il est résolu ce post ou non ? parce que ça commence à dater un peu .... merci de penser à le cloturer si c'est bon, ou à le ré-up si les besoins ne sont toujours pas satisfaits !

(sous peine de mise en [R] d'office sur une décision purement unilatéralement arbitraire !)