Cómo crear un archivo de tamaño más de 2 GB en Linux / Unix?
Pregunta
Tengo este trabajo a domicilio donde tengo que transferir un archivo muy grande de una fuente a múltiples máquinas que utilizan BitTorrent un poco de algoritmo. Inicialmente estoy cortando los archivos a trozos y trozos transfiero a todos los objetivos. Objetivos tienen la inteligencia para compartir los trozos que tienen con otros objetivos. Funciona bien. Quería transferir un archivo de 4 GB, así que alquitranada cuatro archivos de 1 GB. No error cuando creé el archivo tar de 4 GB, pero en el otro extremo, mientras que el montaje de todos los trozos de nuevo a los errores de archivos informáticos originales sin decir límite de tamaño de archivo ha superado. ¿Cómo puedo ir sobre la solución de este problema de limitación de 2 GB?
Solución
No puedo pensar en dos posibles razones:
- No tienes Soporte de archivos grandes en su núcleo de Linux
- Su aplicación no se compila con soporte de archivos grandes (puede que tenga que pasar opciones adicionales gcc para indicarle que debe utilizar las versiones de 64 bits de archivo determinado las funciones de E / S.
gcc -D_FILE_OFFSET_BITS=64
por ejemplo)
Otros consejos
Esto depende de la sistema de archivos tipo . Al usar ext3, no tengo problemas con este tipo de archivos que son significativamente más grandes.
Si el disco subyacente es FAT, NTFS o CIFS (SMB), también debe asegurarse de que utiliza la versión más reciente del controlador adecuado. Hay algunos conductores de edad avanzada que tienen límites de tamaño de ficheros como las que experimenta.
Podría esto estar relacionado con un configuración limitación del sistema ?
$ ulimit -a
vi /etc/security/limits.conf
vivek hard fsize 1024000
Si no desea ningún límite fsize
retirar del /etc/security/limits.conf
.
Si su sistema lo soporta, se puede obtener pistas con:. man largefile
Debe utilizar fseeko y ftello, consulte fseeko (3)
Nota Debe definir #define _FILE_OFFSET_BITS 64
#define _FILE_OFFSET_BITS 64
#include <stdio.h>