• 締切済み

ftpが途中で止まります。

RedHat7.3をインストールしました。 そしていま別のPCからこのPCにFTPでファイルを送ろうとしています。 xinetd.dの設定を変えて、ftpが使えるようになったと思ったのですが、 なぜかある程度の大きさのファイルを受け取ろうとすると、 途中で止まってしまいます。 しかも毎回、1433600Byteのファイルは124340Byteのところで、 1290240Byteのファイルは4380Byte転送したところで止まるという、 ファイル依存性があります。 put、get両方試しましたがダメでした。 小さなサイズのファイルは楽々送れるのですが。 ファイル送信元のPCはRedHat6.3です。 このPCから別のPCへのftpは成功しているので こいつのせいではないと思うのですが。。。 どなたか思い当たることなどありましたら、教えてやってください。 また、情報が不足している等のコメントも大歓迎です。 よろしくお願いします。

みんなの回答

  • ojin
  • ベストアンサー率43% (280/638)
回答No.2

パケットモニターでトレースするのが一番確実なのですが、出来る環境でいくつかの方法を試されたらと思います。 1.RedHat 7.3のコンソールで # snoop を実行して、相互のやり取りもモニターする。 2.FTPクライアントをサーバ(RedHat 7.3)に接続後、「?」を入力して、ヘルプで確認する。その中のコマンドに「trace]のコマンドがあるので、 ftp > trace Packet tracing On. ftp > この状態で、ファイルを「put」する。 Windows NTであれば、かなり詳細なトレースデータを表示してくれます。 Windows 9Xや、XPでは、あまり詳細なデータを表示してくれません。 3.FTP Explorerでファイルを送受信してみる。 FTP Explorerは、次のところからダウンロードできます。(フリーです) http://www.ftpx.com/ 私の環境は、Solaris 8(Sparc)と、Windows NTサーバ、WindowsXPとPacMon(シェアウエアのパケットモニター)の環境でテストしています。パケットモニターであれば、TCPレベルのパケット長や、ポート番号、ウィンドウサイズ、シーケンス番号などが、全て分かりますが、無理を言っても始まらないので、出来る範囲で確認してみましょう。 もう一つ、重複IPアドレスということはないですよね! もう一つ、LinuxなどのUnix系統を利用されれるのであれば、将来のために「Webmin]を推奨いたします。これもフリーです。URLは、 http://www.webmin.com です。tarファイルもあります。言語を選択すると、日本語に切り替わります。今回のトラブルとは直接関係ありませんが、非常に有効な管理ツールです。

参考URL:
http://www.ftpx.com/
  • ojin
  • ベストアンサー率43% (280/638)
回答No.1

根拠はありません。 textモードではなく、binaryモードで転送してみては(こんなことは既にやっておるワイ) - はい、すいません。

Dai12345678
質問者

補足

回答有難うございます。 言い忘れていました。 今送りたいファイルは.tarファイル、つまりtarで固めてあるファイルです。 ですから、binaryモードでの転送を試みています。 このtarファイルをほかのPCにftpしたところ、解凍も出来ましたので、 tarが壊れているというようなことも無いようです。 その他お気づきの点ありましたら、どんなことでも結構ですので、 是非教えてやってください。

関連するQ&A

  • FTPのPUT、GETについて

    FTPのPUT、GETについてお教え下さい。現在サーバーの設定は完了し、DOS画面よりFTPでPUTを行っているのですが、送信先となるサーバーにファイルサイズがゼロのファイルが作成され、途中で止まった状態になってしまいます。GETも同様でサーバーからクライアントにファイルを取得はしているのですが、ファイルサイズがゼロのファイルが作成され止まった状態になってしまいます。また、他のサーバーでPUT、GETを行うとPUT、GET共にファイルの取得も送信も出来ます(クライアントは同じPCを使っています)。やはりサーバーの設定が足りないのでしょうか? どなたか対策方法をご存知の方がいましたらお教え下さい。よろしくお願い致します。

  • FTPのgetとputの使いわけ。

    FTPについてですが、getとputのどちらを使えばいいのかいまいち理解できません。FTPで入ったマシンからみてget,putなのか、ファイルのある側からみてget,putなのかどちらなのでしょうか? 教えてください。

  • ftp で get と put の速度差

    会社の環境で、他の拠点とファイル転送を ftp で行うときに、put よりも get のほうがかなり速い!という状況があるらしいのですが、基本的に、ftp プロトコルでは putもget も完全に対称であり速度差は無いと理解していますが正しいでしょうか? (put/get で転送時間に差が出るとすれば、それはネットワークの上り下りの品質の差、あるいは HDD の読み込み・書き込み速度に左右されていると自分では思います。)

  • shでftp⇒接続切らずに成否確認して削除可?

    ftpで多数のファイルを転送(put)したいです。 転送した後に転送エラーがないか確認し、 転送エラーがなければローカルのファイルを削除する、 ということを1ファイルずつ行いたいです。 ftpコマンドをヒアドキュメントやコマンドファイルを使用して実行する場合、 転送エラーがあったかどうかは、ftpの出力結果を見ないと分からないので、 いったんftpコマンドを終了する必要があると思います。 そうすると、1ファイルずつftpのコネクションを張りなおさないとならないので、 WAN経由での接続を考慮すると相当効率が悪いと思うのですが、 接続を切らずに実現することは可能でしょうか。 理想案: 転送先にftp接続 すべての対象ファイルに対し、  ┣ファイルをput  ┗putが成功したら   ┗ファイルを削除 ftp接続を切断 現実案: すべての対照ファイルに対し、  ┣転送先にftp接続  ┣ファイルをput  ┣ftp接続を切断  ┗putが成功したら   ┗ファイルを削除 現実案の実装だと、こんな感じかと思います。 実際に動かしてないので、間違いあるかもですが。 for file in `ls` do  ftp -n ${hostname} > ftp.log << _EOF   user ${user} ${pass}   put ${file}   bye  _EOF  if [ `grep "err" ftp.log` ]; then   exit 1;  else   rm -f ${file}  fi done  

  • VB6.0でFTPでのファイルの送受信

    VB6.0でFTPでのファイルの送受信(下記(1))をしようと考えております。 尚、コンポーネントは、インターネットトランスファコントロール(Inet)を使用しております。 (1)"リモートサーバーに対して、複数件のファイルを送信し、無事転送が完了したら(リモートサーバー の指定フォルダに送信された複数件のファイルがあるのを確認後)、  クライアント側のファイル(リモートサーバーに送信が済んだファイル)を消す" という処理を考えております。 ここで、質問なのですが (1)vbを使ったFTP転送で、複数件のファイルを一括転送(mputコマンドの使用)は、可能か?  (2)もし、(1)が不可能の場合、    "送信するファイルをputコマンドで1つ送って、リモート側にそのファイルがあるのを    getコマンドで確認して、もしgetであれば、クライアント側のそのファイルを消す" という処理を送信するファイル数分繰り返すことになるんですか?        1つのファイルの場合に、Inet1_State_Changeイベントで、ループさせstate = 12 の時( リモート側に正常に送信されたと考えて)、クライアント側のファイルを消していいのでしょうか?    VBのヘルプを見ると、state = 12 は、get処理で使用するというようなことを書いてありますが。     以上 

  • ftpサーバ、クライアントのget、putについて

    OSがRedhat二台で、ftpサーバがインストールしてある方を「A」、ftpサーバをインストールしていない方を「B」とします。 BからAへftpでgetはできるがAからBへgetは出来ない状態だと思います。この場合putも同様に考えていいのでしょうか。

  • SHELLでFTP転送

    初心者ですみません。 SHELLを使ってファイルをFTP転送(GET・PUT)するプログラムを組みたいのですが そのサンプルのようなものはありますでしょうか? パラメータとして 転送元 サーバ名 転送元 ディレクトリ名 転送元 ファイル名 転送先サーバ名 転送先ディレクトリ名 を考えています。 よろしくお願い致します

  • bashからFTPコマンドのステータスを調べる方法

    bashからFTPコマンドのステータスを調べる方法 シェルでFTPによるファイル転送を行っていますが、FTPが成功したかどうかをシェル側で受け取ることはできますか? FTP転送に失敗したら、3回やりなおして、それでダメならあきらめるというスクリプトにしたいです。 <サンプル> /usr/bin/ftp -n -v hostname << EOF user user1 passwd1 binary put file1 bye EOF

  • NTのFTP通信

    こんにちわ Windows NT 4.0 workstationにて(数台) FTP転送したいのですが、 転送するファイル名が固定ではありません。 転送するファイルは以下のようなファイルになります。 yanolog.txt saitolog.txt sayamalog.txt このような場合、下記のputのぶぶんを put *log.txt で実行しても転送されるでしょうか? open ftp.noname.ne.jp bluepixy password ascii put *log.txt close quit よろしくお願いします

  • FTPのmputで出るnetoutについて

    以下、FTPで行うmputについての質問です。 A.sh ************************* cat B.ftp | ftp -n if [ $? -ne 0 ]; then exit -1 fi exit 0 ************************* B.ftp ************************* open IPアドレス user XXX YYY prompt lcd ファイル転送元 cd ファイル転送先 mput *.csv bye ************************* 上記のようなシェルがあります。 A.shを実行すると, ************************* 対話型モードオフ。 現在のローカル・ディレクトリは ファイル転送元 です。 netout: 戻された 0 を書込みますか? netout: 戻された 0 を書込みますか? : : : ************************* というメッセージが表示され、 ファイル転送元のCSVファイルは全て0バイト以上であるのに 転送先にはいくつかのファイルが0バイトで作成されます。 おそらくnetoutが出たファイルが0バイトで作成されているようです。 ファイル単体でputすると上手く転送されます。 何が原因か全く分からないのですが、どなたかお分かりになる方、 いらっしゃいましたらよろしくお願いします。