Restaurar archivos desde fragmentos sin copiar o mover datos

0

En los sistemas Unix, los archivos se pueden unir mediante la catutilidad (los sistemas Windows tienen typeocopy /B ).

cat file1 file2 file3 > joined-file

Esto toma el contenido de los archivos antiguos y lo copia en un solo archivo nuevo. El proceso lleva el tiempo necesario para leer los archivos antiguos y escribir el nuevo. El nuevo archivo se almacena por separado en los archivos antiguos, por lo que el comando fallará si no queda suficiente espacio libre en el disco para escribir el nuevo archivo.

¿Hay alguna forma más rápida de combinar los archivos, o al menos "engañar" a los programas para que piensen que los archivos están combinados, que no implica mover o copiar datos en el disco?

Una forma de hacerlo podría ser modificar el TOC del sistema de archivos para que los archivos se traten como fragmentos de un archivo más grande. ¿Hay una manera "segura" de hacer esto (es decir, más seguro que usar ddpara modificar el TOC manualmente)?

Estoy interesado en cualquier método para unir los archivos, en cualquier plataforma, que sea más rápido y requiera menos espacio en disco que concatenar físicamente los archivos.

CascoCiudadFan852
fuente
1
Consulte stackoverflow.com/a/13411315 para obtener ideas.
dsstorefile1
Esta respuesta . La restricción es que la dmsetupherramienta está diseñada para trabajar con dispositivos de bloque y / o archivos normales que son imágenes de dispositivos de bloque, por lo que utiliza bloques comunes de 512 B. Quizás uno podría bifurcar el proyecto y modificar la fuente para permitir una resolución de 1 B, I no lo se
Kamil Maciorowski
También esta respuesta , es de hace unos años; aparentemente hubo algunos cambios nbd, no pude hacerlo funcionar tan fácilmente. Investigue concatfs y / o concat-fuse (este ya está en la respuesta de davidgo a continuación). No los he probado, así que esto es solo un comentario.
Kamil Maciorowski

Respuestas:

0

Postulé que esto podría ser posible usando algún tipo de sistema de archivos superpuesto sobre uno existente (modificar uno existente es una receta para el desastre), luego pensé que probablemente podría escribir algo para Linux usando FUSE (sistema de archivos en el espacio de usuario)

En una alondra busqué en Google y descubrí que alguien ya lo ha implementado: hay un proyecto GIT llamado concat-fuse - https://github.com/concat-fuse/concat-fuse/blob/master/README.md - que se ve para hacer lo que estás describiendo.

davidgo
fuente