Linux/Unix에서 2GB 이상의 크기 파일을 만드는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/560238

  •  05-09-2019
  •  | 
  •  

문제

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>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top