Pergunta

Eu tenho esse trabalho para casa, onde eu tenho que transferir um grande arquivo de uma fonte para várias máquinas usando bittorrent meio do algoritmo. Inicialmente eu estou cortando os arquivos para pedaços e eu transferir partes para todos os alvos. Metas têm a inteligência para compartilhar os pedaços que têm com outros alvos. Funciona bem. Eu queria transferir um arquivo de 4GB então eu asfaltada quatro arquivos de 1GB. Não erro fora quando eu criei o arquivo tar 4GB, mas na outra extremidade, enquanto reunindo todos os pedaços de volta para o arquivo original ele erros fora dizendo limite de tamanho de arquivo excedido. Como posso ir sobre como resolver esse problema de limitação de 2GB?

Foi útil?

Solução

Não consigo pensar em duas razões possíveis:

  • Você não tem Suporte a arquivos grandes habilitado em seu kernel Linux
  • A sua aplicação não é compilado com suporte a arquivos grandes (que você pode precisar passar gcc bandeiras extras para dizer-lhe para usar versões de determinado arquivo funções de I / O de 64 bits. Por exemplo gcc -D_FILE_OFFSET_BITS=64)

Outras dicas

Isso depende do sistema de arquivos tipo . Ao usar ext3, não tenho esses problemas com arquivos que são significativamente maiores.

Se o disco subjacente é FAT, NTFS ou CIFS (SMB), você deve também certificar-se você usar a versão mais recente do driver apropriado. Há alguns drivers mais antigos que têm limites de tamanho de arquivo como as que você experimenta.

Isso poderia estar relacionado a uma sistema de limitação de configuração ?

$ ulimit -a
vi /etc/security/limits.conf
vivek       hard  fsize  1024000

Se você não quer qualquer fsize limite de remoção de /etc/security/limits.conf.

Se o seu sistema suporta, você pode obter dicas com:. man largefile

Você deve usar fseeko e ftello, consulte fseeko (3) Note que você deve definir #define _FILE_OFFSET_BITS 64

#define _FILE_OFFSET_BITS 64
#include <stdio.h>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top