2009-06-06 6 views
1

J'ai une application Java, qui copie ou déplace un tas de fichiers giga d'un serveur ftp à un autre. Actuellement, il copie un fichier du premier serveur ftp sur l'ordinateur local (où il s'exécute) en utilisant ftp get et le copie ensuite sur le second serveur FTP en utilisant ftp put. J'utilise net library d'apache.copier ou déplacer un fichier d'un serveur ftp à un autre

Est-il possible de le copier directement d'un serveur ftp à un autre en contournant l'ordinateur local? Une idée consiste à créer une session Telnet java et à envoyer deux commandes ftp. Est-ce que ça marchera? D'autres suggestions?

+0

Vous n'êtes pas autorisé à exécuter quoi que ce soit sur le serveur cible? – neesh

+0

Oui, je le fais. Voilà pourquoi je considère la solution telnet ou ssh –

Répondre

2

Le transfert FTP serveur à serveur est également appelé "FXP". Essayez de rechercher "fxp java" dans google. Par exemple, this page peut être utile.

4

Cela fonctionnera certainement. Cependant, si vous pouvez utiliser rcp (1) ou scp (1), vous n'avez pas besoin de la copie intermédiaire ou d'une session telnet. Il suffit d'utiliser

$ scp [email protected]:file [email protected]:file 

Si vous utilisez une session à distance, utilisez ssh (1) au lieu de telnet.

1

Telnet/SSH devrait fonctionner. Trouver une bibliothèque client java telnet utilisable et prendre à partir de là ...

Here's an article sur le script d'une session Telnet avec Java.

4

Oui, en théorie, cela est possible en raison de la manière intéressante dont le FTP fonctionne. Dans la pratique, il est probable que vous ayez besoin d'un "client" FTP personnalisé au milieu, travaillant avec deux serveurs.

Le scénario de transfert de serveur à serveur est décrit et illustré schématiquement au paragraphe 5.2 de la section FTP RFC (959).. En résumé, un serveur reçoit une commande PASV qui renvoie une adresse IP et un numéro de port à l'intermédiaire. L'intermédiaire envoie ceci à l'autre serveur dans une commande PORT, et ce serveur établit une connexion de données directement au premier serveur.

Questions connexes