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 cat
unirlos 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, file5
En 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
less
usar varios archivos y luego usar las opciones:n
y:p
para recorrerlos.Para escribir, sin acceder directamente a los archivos, no podrá escribirles.
Usted puede
vim
varios 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