apacheで公開されているディレクトリに4.7GBぐらいのファイルを置いて、
友達にダウンロードさせようとしたところ、「ファイルが見えない!」と言われた。

確かに、ブラウザから見えるディレクトリ内ファイルの一覧(+Indexes利用)に表示されない。
しかし、サーバ上のディレクトリを確認すると4.7GBのファイルは確かに存在している。

しかたがないので分割ダウンロードさせた。

環境

$ uname -a
Linux localhost 2.6.9-55.0.12.EL #1 Fri Nov 2 10:57:39 EDT 2007 i686 i686 i386 GNU/Linux

$ rpm -qa | grep httpd
system-config-httpd-1.3.1-1
httpd-suexec-2.0.52-32.3.ent.centos4
httpd-devel-2.0.52-32.3.ent.centos4
httpd-manual-2.0.52-32.3.ent.centos4
httpd-2.0.52-32.3.ent.centos4

access.logの内容

192.168.xxx.yyy - - [03/Feb/2008:21:52:04 +0900] "GET /DEKAI.ISO HTTP/1.1" 403 428 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"

error.logの内容

[Sun Feb 03 21:52:04 2008] [error] [client 192.168.xxx.yyy] (75)Value too large for defined data type: access to /DEKAI.ISO failed

ログの内容が示すとおり、デカ過ぎるのが問題らしい。
同じ症状の人をvdrめも – Large File Support の日 – apache2 2GB, 4GB の壁。発見するも、apacheのコンパイルが必要?

面倒なので、splitコマンドでファイルを分割することにした。

$ ll
-rwxr--r--  1 squld squld 4649607168  2月 24  2006 DEKAI.ISO

$ split -b 1073741824 DEKAI.ISO DEKAI.ISO.

$ ll
-rwxr--r--  1 squld squld 4649607168  2月 24  2006 DEKAI.ISO
-rw-r--r--  1 squld squld 1073741824  2月  3 21:57 DEKAI.ISO.aa
-rw-r--r--  1 squld squld 1073741824  2月  3 21:59 DEKAI.ISO.ab
-rw-r--r--  1 squld squld 1073741824  2月  3 22:01 DEKAI.ISO.ac
-rw-r--r--  1 squld squld 1073741824  2月  3 22:02 DEKAI.ISO.ad
-rw-r--r--  1 squld squld  354639872  2月  3 22:03 DEKAI.ISO.ae

これでブラウザからも見れるようになった。

windows用結合バッチファイルは以下の通り。

$ cat join.bat
COPY /B DEKAI.ISO.aa +DEKAI.ISO.ab +DEKAI.ISO.ac +DEKAI.ISO.ad +DEKAI.ISO.ae DEKAI.ISO

分割ファイルと同じディレクトリにjoin.batを置いて、起動すれば結合される。

おしまい。

カテゴリー: 技術情報