Linux/Unix에서 2GB 이상의 크기 파일을 만드는 방법은 무엇입니까?
문제
Bittorrent 종류의 알고리즘을 사용하여 매우 큰 파일을 하나의 소스에서 여러 기계로 전송 해야하는이 홈 작업이 있습니다. 처음에는 파일을 청크로 자르고 있으며 모든 대상으로 청크를 전송합니다. 대상은 다른 대상과 가지고있는 덩어리를 공유 할 지능이 있습니다. 잘 작동합니다. 4GB 파일을 전송하여 4 개의 1GB 파일을 지탱했습니다. 4GB TAR 파일을 만들었을 때 오류가 발생하지 않았지만 다른 쪽 끝에서 모든 청크를 원본 파일로 다시 조립하면 파일 크기 제한이 초과되었다는 오류가 발생합니다. 이 2GB 제한 문제를 해결하려면 어떻게해야합니까?
해결책
가능한 두 가지 이유를 생각할 수 있습니다.
- 당신은 가지고 있지 않습니다 큰 파일 지원 Linux 커널에서 활성화됩니다
- 응용 프로그램은 큰 파일 지원으로 컴파일되지 않았습니다 (GCC 추가 플래그를 전달하여 64 비트 버전의 특정 파일 I/O 함수를 사용하도록 지시해야합니다. 예 :
gcc -D_FILE_OFFSET_BITS=64
)
다른 팁
이것은 파일 시스템 유형. Ext3를 사용할 때는 훨씬 더 큰 파일에 문제가 없습니다.
기본 디스크가 FAT, NTFS 또는 CIFS (SMB) 인 경우 최신 버전의 해당 드라이버를 사용해야합니다. 경험 한 것과 같은 파일 크기 제한을 가진 오래된 드라이버가 있습니다.
이것은 a와 관련이있을 수 있습니다 시스템 제한 구성 ?
$ ulimit -a
vi /etc/security/limits.conf
vivek hard fsize 1024000
제한을 원하지 않는 경우 제거하십시오 fsize
~에서 /etc/security/limits.conf
.
시스템이 지원하면 다음과 같은 힌트를 얻을 수 있습니다. man largefile
.
Fseeko와 Ftello를 사용해야합니다 Fseeko (3)정의해야합니다 #define _FILE_OFFSET_BITS 64
#define _FILE_OFFSET_BITS 64
#include <stdio.h>
제휴하지 않습니다 StackOverflow