none
FTP コマンドの PUT で正常に転送できない。 RRS feed

  • 質問

  • 毎日決まった時間に特定の ZIP ファイルを FTP サーバーにアップロードしています。
    クライアント側の OS は Windows Server 2012 で、方法は以下の通りです。


    1.FTP コマンドを記述したテキストファイルを作成。
      (内容は、FTP サーバーへの接続→CD→BIN→DELETE→RENAME→PUT→切断)

    2.内部で1のテキストファイルを読み込むバッチファイルを作成。
      (内容は、"ftp -s" にて1のファイルを指定のみ)

    3.タスクスケジューラで2のバッチファイルを実行するタスクを作成。


    上記で1年以上問題なく ZIP ファイルを転送できていたのですが、2週間ほど前から、転送したいファイルと同名の ZIP ファイルがFTP サーバー側に作られるのですが本来のものよりサイズが小さく、ZIP ファイルとして正常なものではない、という状態になってしまいました。

    タスクではなくバッチファイルを手動で実行しても結果は同じでした。

    試しに、上記1・2と同じファイルと、実際の ZIP ファイルをコピーして、ネットワーク、クライアントともに別の環境でバッチファイルを実行してみたところ、正常に転送できました。

    もう1つ、実際のクライアント上のエクスプローラで FTP サーバーに接続し、同じ ZIP ファイルをドラッグ&ドロップでコピーしてみたのですが、この場合も正常に転送できました。

    問題の原因としてどんなものが考えられるでしょうか?
    ご教授いただけると助かります。

    2018年6月13日 4:18

すべての返信

  • 「タスクではなくバッチファイルを手動で実行しても結果は同じでした。」

    2.のバッチファイルの中でzipファイルを作っていませんか?
    (そのzipファイルのサイズを書いてください。)

    その zipファイルをfile1.zipとする。
    後、2個既存のzipファイル(file2.zip, file3.zip)を用意して、1.のテキストファイルを少し書き換えて、

    ........
    ........
    binary
    put file1.zip
    put file2.zip
    put file3.zip
    dir
    bye
    close

    そのときの出力を書いてください。
    たとえば、

    2018年6月13日 11:59
  • ery srow さん、ありがとうございます。


    >2.のバッチファイルの中でzipファイルを作っていませんか?
    > (そのzipファイルのサイズを書いてください。)

    確かに、実際の環境ではバッチファイル内で ZIP ファイルを作っています。
    作成済みの ZIP ファイルを転送するだけのバッチでも失敗したこと、同じ ZIP ファイルを別の環境からは転送できたこと、エクスプローラでも転送できたことから、ZIP ファイル自体には問題はないと判断し、最初の質問では「バッチファイル内で ZIP ファイルを作っている」という部分を省略させていただきました。

    転送が失敗するようになった直後に確認したものでは、たしか 100,000,000 バイト以上あったと思いますが、この ZIP ファイルのサイズは日々少しずつ大きくなるので、それが関係しているかもしれないと思い、失敗するようになる直前のものよりも小さくした ZIP ファイルで検証してみたのですが変わりませんでした。
    その検証の際に作ったものは 89,119,340 バイトです。
    これの転送に失敗すると、FTP サーバー側には 2,828 バイトの ZIP ファイルが作られます。

    ちなみに、クライアントの OS が同じかどうかは確認できていないのですが、これよりもサイズの大きい ZIP ファイルを同じ FTP サーバーに毎日転送できている環境もあります。


    >その zipファイルをfile1.zipとする。
    >後、2個既存のzipファイル(file2.zip, file3.zip)を用意して、1.のテキストファイルを少し書き換えて、~

    こちらはすぐに検証できる状況にないのですが、近日中に検証し改めてご報告させていただきます。

    2018年6月14日 4:50