我有这个家庭作业,我必须使用 bittorrent 算法将一个非常大的文件从一个源传输到多台机器。最初,我将文件切割成块,然后将块传输到所有目标。目标具有与其他目标共享其拥有的块的智能。它工作正常。我想传输一个 4GB 的文件,所以我压缩了四个 1GB 的文件。当我创建 4GB tar 文件时它没有出错,但在另一端将所有块组装回原始文件时出错,说超出了文件大小限制。我该如何解决这个 2GB 限制问题?
ram
问问题
9840 次
5 回答
11
我可以想到两个可能的原因:
- 您的 Linux 内核中没有启用大文件支持
- 您的应用程序没有编译支持大文件(您可能需要传递 gcc 额外标志来告诉它使用某些文件 I/O 函数的 64 位版本。例如
gcc -D_FILE_OFFSET_BITS=64
)
于 2009-02-18T08:33:28.730 回答
4
这取决于文件系统类型。使用 ext3 时,我对大得多的文件没有这样的问题。
如果底层磁盘是 FAT、NTFS 或 CIFS (SMB),您还必须确保使用最新版本的相应驱动程序。有一些较旧的驱动程序具有文件大小限制,就像您遇到的那样。
于 2009-02-18T08:27:22.567 回答
3
这可能与系统限制配置有关吗?
$ ulimit -a
vi /etc/security/limits.conf
vivek hard fsize 1024000
如果您不希望fsize
从/etc/security/limits.conf
.
于 2009-02-18T08:27:45.233 回答
1
如果您的系统支持它,您可以通过以下方式获得提示:man largefile
.
于 2009-02-18T08:32:34.957 回答
1
You should use fseeko and ftello, see fseeko(3)
Note you should define #define _FILE_OFFSET_BITS 64
#define _FILE_OFFSET_BITS 64
#include <stdio.h>
于 2009-02-18T08:47:23.890 回答