En un sistema Linux, ¿hay alguna forma de concatenar una serie de archivos en un archivo expuesto para leer y escribir sin ocupar otros N bytes de espacio en disco? Esperaba algo como montar estos archivos a través de loopback / devmapper para lograr esto.
Tengo un problema donde hay archivos binarios divididos que pueden ser bastante grandes. No quiero duplicar mis requisitos de espacio con el disco IO masivo solo para leer / escribir temporalmente contenido de estos archivos al catunirlos todos en un archivo enorme.
Encontré este proyecto aquí , pero parece tener un caso de uso muy específico y también depende de Perl

Respuestas:
Puede hacerlo combinando dispositivos de bucle y mapeador de dispositivos, gracias a "todo es un archivo". Pero con una limitación: el tamaño del archivo no se puede cambiar (ya que no puede aumentar los dispositivos de bloqueo al escribirles). Entonces, si desea agregar datos, debe crear un dispositivo de bloque más grande y sobrescribir los datos ficticios adjuntos.
Para extender el archivo, puede crear un gran archivo disperso y usarlo como dispositivo adicional.
fuente
Esto podría hacerse usando una canalización con nombre en Linux.
Suponga que tiene archivos llamados
file0, file1, file2, file3, file4, file5En C programáticamente puedes hacer
Luego use luego use mynewfile como nos lo leería del archivo normal.
mynewfile es un archivo FIFO
fuente
Para leer, puede
lessusar varios archivos y luego usar las opciones:ny:ppara recorrerlos.Para escribir, sin acceder directamente a los archivos, no podrá escribirles.
Usted puede
vimvarios archivos, y simplemente pasará por el orden en que se llamaron (es decir,vim fileA fileB fileC- archivo B abierto después del archivo A cerrado, archivo C abierto después del archivo B cerrado).fuente