FTP size incorrect for files > 4GB

The net/ftp size method is supposed to return the size of a remote file,
but when the size of the remote file is > 4GB it seems to return the
wrong size.

The size of the remote file I’m testing is about 4.5 GB and size()
returns about 0.5 GB. Anyone having the same problems? Is there
somewhere I can report this problem?

Thanks

On 10/27/07, Raymond O’Connor [email protected] wrote:

The net/ftp size method is supposed to return the size of a remote file,
but when the size of the remote file is > 4GB it seems to return the
wrong size.

The size of the remote file I’m testing is about 4.5 GB and size()
returns about 0.5 GB. Anyone having the same problems? Is there
somewhere I can report this problem?

It works for me. Can you 1. post test code to reproduce, 2. specify
ruby version and operating system?

You may try checking ‘12345678923456’.to_i as to_i is used to convert
string response to integer.

Finally, try running the ftp command manually, to see the precise ftp
server response. The code in net/ftp strips first three and the last
character. Maybe your server responds in a slightly different format.

For more details see net/ftp source, It’s pure ruby and easy to
understand (at least the size method).

Jano

ruby -v:
ruby 1.8.5 (2006-08-25) [i386-mswin32] (one-click, xp sp2)

require ‘net/ftp’
require ‘test/unit’

class TestFtp < Test::Unit::TestCase
def setup
@ftp = Net::FTP.new(‘ftp.tuwien.ac.at’)
@ftp.login
@ftp.chdir(‘opsys/linux/Mandrake-iso/2008.0’)
end

def test_size
assert_equal 4612227072,
@ftp.size(‘mandriva-linux-2008.0-free-dvd-x86_64.iso’)
end

def teardown
@ftp.close
end
end

RE: Jano S.

Thanks for your help. I tried out size on the mandriva iso and it came
out correctly, so I’m not sure what the problem is, but my guess at this
point is something is set up oddly on the ftp server I connect to
(Unfortunately its private so I can’t post its information).

I did do calculations and for some reason on the ftp server I connect
to, the size of files over 4 GB is reported as actual size - 4 GB.

Hello,
I am not sure, but coud it be that the OS has only 32bit? Normally then
files bigger as $G should not be supported. But maybe also some of the
help-programs only 32bit. Only a guess.

Tammo and Jano thanks for the suggestions. The whole 32 bit
architecture completely slipped my mind, and I’m sure it’s the cause for
the mess. Thanks again for the help!

On 10/28/07, Raymond O’Connor [email protected] wrote:

RE: Jano S.

Thanks for your help. I tried out size on the mandriva iso and it came
out correctly, so I’m not sure what the problem is, but my guess at this
point is something is set up oddly on the ftp server I connect to
(Unfortunately its private so I can’t post its information).

I did do calculations and for some reason on the ftp server I connect
to, the size of files over 4 GB is reported as actual size - 4 GB.

You may try connecting manually, using a cmdline client. Then use
CHDIR and SIZE commands to see what the server reports. The odds are
that the server itself doesn’t support files larger than 2^32
(4294967296). The possible reasons are ftp software, the OS or used
filesystem. Look up ftpd version, and search the internet for possible
issues.