如何在Linux/Unix中创建大小超过2GB的文件?
我有一项家庭作业,我必须使用 BitTorrent 算法将一个非常大的文件从一个源传输到多台机器。 最初,我将文件切成块,然后将块传输到所有目标。 目标具有与其他目标共享其拥有的块的智能。 效果很好。 我想传输 4GB 文件,因此我对四个 1GB 文件进行了 tar 处理。 当我创建 4GB tar 文件时,它没有出错,但在另一端将所有块组装回原始文件时,它出错说超出了文件大小限制。 我该如何解决这个 2GB 限制问题?
I have this home work where I have to transfer a very big file from one source to multiple machines using bittorrent kinda of algorithm. Initially I am cutting the files in to chunks and I transfer chunks to all the targets. Targets have the intelligence to share the chunks they have with other targets. It works fine. I wanted to transfer a 4GB file so I tarred four 1GB files. It didn't error out when I created the 4GB tar file but at the other end while assembling all the chunks back to the original file it errors out saying file size limit exceeded. How can I go about solving this 2GB limitation problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我可以想到两个可能的原因:
gcc -D_FILE_OFFSET_BITS=64)
I can think of two possible reasons:
gcc -D_FILE_OFFSET_BITS=64
)这取决于文件系统类型。 当使用 ext3 时,对于大得多的文件我没有遇到这样的问题。
如果底层磁盘是 FAT、NTFS 或 CIFS (SMB),您还必须确保使用最新版本的相应驱动程序。 有些较旧的驱动程序具有文件大小限制,就像您遇到的那样。
This depends on the filesystem type. When using ext3, I have no such problems with files that are significantly larger.
If the underlying disk is FAT, NTFS or CIFS (SMB), you must also make sure you use the latest version of the appropriate driver. There are some older drivers that have file-size limits like the ones you experience.
这是否与系统有关限制配置?
如果您不需要任何限制,请从
/etc/security/limits.conf
中删除fsize
。Could this be related to a system limitation configuration ?
If you do not want any limit remove
fsize
from/etc/security/limits.conf
.如果您的系统支持,您可以通过以下方式获得提示:
man largefile
。If your system supports it, you can get hints with:
man largefile
.您应该使用 fseeko 和 ftello,请参阅 fseeko(3)
请注意,您应该定义
#define _FILE_OFFSET_BITS 64
You should use fseeko and ftello, see fseeko(3)
Note you should define
#define _FILE_OFFSET_BITS 64