FTPでファイルをアップロードしたのに、サーバー側で見るとファイルサイズが0バイトになっている——そんな経験はありませんか。
再アップロードすれば直ることが多いので「たまたま」で片付けがちですが、これは原因がはっきりしている現象です。今回、クライアントサイトの画像を一括アップロードした際に実際に0バイトファイルが発生したので、原因の切り分け方と具体的な対策をまとめます。
症状
- 画像やSVGなど、複数の小さいファイルをまとめてアップロードした
- FTPクライアント上は「転送完了」と表示される
- サーバー側でファイル一覧を見ると、一部だけサイズが
0になっている - 再アップロードすると正常なサイズで上書きされ、直る
- 毎回ではなく「時々」発生する
この「時々」「再アップロードで直る」という点が、原因を特定する上でのヒントになります。
原因① 同時接続数の上限超過(一番多いケース)
FileZillaやTransmitなどのGUI系FTPクライアントは、転送を高速化するために複数のデータコネクションを同時に開いて並列アップロードします。
多くのFTPサーバーの実装では、ファイル転送の際に
- まずリモート側に空(0バイト)のファイルを作成する
- そこにデータを書き込んでいく
という順序で処理が進みます。
ここで、
- サーバー側が許可している同時接続数の上限を超えた
- 回線が瞬断した
- サーバーが高負荷でデータコネクションの確立に失敗した
といったことが起きると、ファイルの作成までは成功するのに、中身の書き込みが始まる前後で接続が切れてしまい、0バイトのファイルだけがサーバーに残ることになります。
多くのレンタルサーバーは1アカウントあたりの同時接続数に制限をかけており、特にヘテムルのような共有サーバーは上限が低めに絞られている印象があります。アップロードするファイル数が多いほど、どれか1つがこの上限に引っかかる確率も上がるため、「大量の小さいファイルを一括転送したときだけ、たまに0バイトが混じる」という今回のような状況になりやすいわけです。
原因② サーバーのディスク容量オーバー
もう一つ知られている原因が、契約しているサーバーのディスク使用量が上限に達しているケースです。容量オーバーの状態でアップロード(特に上書き)すると、元々あった正常なファイルまで0バイトで上書きされてしまうことがあります。
こちらは同時接続数の問題とは仕組みがまったく異なるので、まずはサーバーのコントロールパネルでディスク使用量に余裕があるかを確認しておくと、原因の切り分けが早くなります。余裕があるなら、原因①を疑うのが近道です。
対策:FTPクライアントの同時接続数を制限する
原因①への対策はシンプルで、FTPクライアント側の並列転送数を減らすことです。
FileZillaの場合
サイトマネージャーの「転送設定」タブを開き、
- 「同時接続数を制限する」にチェックを入れる
- 「最大接続数」を 2 に設定する

これだけで発生頻度はかなり下がります。それでも0バイトが出るようなら、「1」まで落として完全に直列転送にすると確実です(転送速度は遅くなります)。
運用面の対策
- 大量のファイルを一括アップロードした後は、サーバー側のファイル一覧でサイズが0になっているものがないか確認する
- 重要なファイルは、アップロード後にブラウザで実際に開いて表示確認する
FTPクライアント側もサーバー側も「転送エラー」として明確に警告してくれないことが多いため、気づかずに公開してしまうのが一番厄介です。同時接続数を絞ったうえで、アップロード後の目視チェックを習慣にしておくのが安全です。