代码之家  ›  专栏  ›  技术社区  ›  kill0rz

CULLFTPFS有最大的安装空间吗?我怎么能跳过它?

  •  2
  • kill0rz  · 技术社区  · 7 年前

    我在本地操作系统中安装了ftpserver:

    curlftpfs user:pass@ftp.server.com /var/test/
    

    我注意到使用 pydf

    Filesystem                                                            Size Used Avail Use%             Mounted on
    curlftpfs#ftp://user:pass@ftp.server.com                             7629G    0 7629G  0.0 [.........] /var/test
    

    然后,我试图用8GB的文件使用dd填充磁盘空间,但在给定大小时也失败了:

    dd if=/dev/zero of=upload_test bs=8000000000 count=1
    dd: memory exhausted by input buffer of size 8000000000 bytes (7.5 GiB)
    

    所以我的问题是:为什么7.5GB有限制,我怎么能跳过它?

    1 回复  |  直到 7 年前
        1
  •  1
  •   marbu    7 年前

    查看的源代码 curlftpfs 0.9.2 7629G 似乎是硬编码的默认值。

    换句话说,curlftpfs不检查远程文件系统的实际大小,而是使用一些预定义的静态值。此外,实际检查无法实施,因为 ftp protocol doesn't provide information about free space .

    这意味着7.5 GB上的文件传输失败不是由报告的可用空间引起的,因为两者之间存在数量级的差异。

    作用 ftpfs_statfs 实施 statfs

    buf->f_blocks = 999999999 * 2;
    

    buf->f_bsize = ftpfs.blksize;
    

    在其他地方定义为:

    ftpfs.blksize = 4096;
    

    所以把这些放在一起给我 999999999 * 2 * 4096 / 2^30 GB ~= 7629.3945236206055 GB ,它与 pydf 输出: .