FTP de Téléchargement Problème - 0 octets transférés
Dans l'un de nos projets, nous utilisons Apache, FTP client Api.
J'ai télécharger fichier xml sur un serveur FTP, où un processus de tenir un scrutin qui serveur d'annuaire. Donc, en utilisant le téléchargement de l'API, je suis en téléchargeant le fichier xml avec .Le TRANSFERT de l'extension, et après avoir réussi le téléchargement complet du fichier, le fichier sera renommé .fichier xml.
Le problème bizarre, je suis confronté à est que, parfois, la taille de fichier du fichier est de 0 octets. mais le même fichier parfois entièrement est téléchargé. Quand j'ai regardé le fichier journal, le transférés octets 0 ko seulement. Donc, je ne suis pas sûr de ce que pourrait être le problème.
Je suis en utilisant un serveur linux et Apache commons FTP client Api.
Tout le débogage des conseils et des astuces qui vous seront utiles.
Ce qui concerne,
Srinivas
Vous devez vous connecter pour publier un commentaire.
J'ai trop couru dans ce dos pendant une.
J'ai remarqué que si le fichier est plus gros qu'une certaine taille (il était de 174 octets ou alors pour moi), il ne transférés correctement. Des fichiers plus petits, a fini par être créé en tant que fichiers de zéro octet.
Je crois que c'est un bug dans le Apache commons code ftp. J'ai corrigé la source et fait une solution rapide et le pot que j'ai construit a travaillé pour nous.
Si je me souviens de la fixer droit, j'ai désactivé l'algorithme Nagle avec la prise.setTcpNoDelay(false) sur la socket qui était utilisé pour le transfert à la chambre des communes code ftp.
Si cela arrive parfois, il sent comme une configuration de pare-feu sur l'une des extrémités. Difficile à diagnostiquer, mais de commencer (si vous pouvez), essayez de basculer entre actif/passif.
Regardez ici pour une meilleure référence: http://slacksite.com/other/ftp.html
Un autre pare-feu possible config question: Si vous êtes ftp qui pratiquent à partir d'un linux/unix boîte avec iptables configuré, assurez-vous que vous avez les tables configuré pour autoriser le ftp "suivi de connexion".
Dans le cadre de la transaction ftp, votre machine client établit la connexion au serveur ftp, puis les questions de la ftp STOR de commande à télécharger le fichier. La partie initiale de la transaction a lieu sur le ftp standard sockets (20,21), puis passe à un hasard élevées port sélectionné par le serveur ftp si en mode ACTIF, ou par le client si PASSIF (PASV) mode. Si vous êtes en mode ACTIF iptables peut pas permettre au serveur de communiquer avec votre ordinateur client sur ce port sélectionné de manière aléatoire, vous obtiendrez un zéro octet fichier avec le nom correct et pas d'autres données.
Vous pouvez résoudre ce problème en changeant la transaction pour le mode PASSIF du côté client, ou par la configuration iptables sur la machine client pour faire "suivi de connexion":
http://www.linuxchix.org/content/courses/security/connection_tracking
Vérifier votre capacité de disque. J'ai fait face à ce genre de situation, quand je travaillais sur le Raspberry Pi projet. J'ai eu à travailler avec de gros fichiers de téléchargements et il a causé à remplir sur le RPi de la carte SD très rapidement. Après avoir atteint une certaine mesure, les téléchargements FTP fichiers de 0 octets.
Non seulement pour le stockage de petite, cela peut arriver n'importe où. Par exemple, votre serveur peut créer des gigaoctets de fichiers journaux d'erreurs. Après quelque temps, votre serveur de l'espace sera occupé par ces fichiers journaux. De nouveau la même chose se passe sur les téléchargements FTP. Vérifiez que trop. Cheers!
Essayer de lancer WireShark et de voir ce qui se passe à travers le fil? Que pourrait vous donner un indice quant à l'endroit où se trouve le problème.
http://www.wireshark.org/