Formato de archivo que permite la extracción eficiente de archivos específicos.


2

¿Existe un formato de archivo que maneje el siguiente caso de uso ...

Me gustaría crear un archivo tar (o lo que sea, solo estoy usando tar aquí b / c, es un formato de archivo bien conocido para contener múltiples archivos) que podría usarse incluso si solo tuviera acceso a fragmentos específicos de dicho archivo .

Por ejemplo, supongamos que guardo mi colección de mp3 y fotos en un archivo tar de 100 GB, luego guardo el archivo en algún lugar a largo plazo. Más tarde, quiero acceder a un archivo mp3 específico. No quiero descargar el archivo tar completo de 100GB solo para llegar a un mp3. De hecho, digamos que no puedo descargar el archivo tar completo de 100 GB. En cambio, me gustaría decir "dame megabytes de 10 a 19 del archivo tar de 100 GB" y luego extraer el mp3 mágicamente de esos 10 megabytes.

¿Existe un formato de archivo como este?



@Khaleel: No, las dos preguntas tienen solo un parecido superficial.
Scott

Respuestas:


1

Sí, podría hacerlo con un archivo tar, pero para que funcione, necesitaría guardar un registro de lo que escribió, contando las compensaciones de los diversos archivos en el archivo. De lo contrario, la única forma de saber qué hay en un archivo tar es leer todo de principio a fin, lo que anula la idea de descargar solo la parte que necesita.

Además, si solo puede descargar el archivo en bloques enteros, no solo cualquier número arbitrario de bytes en cualquier límite, sería útil tener una tarlectura que pueda comenzar y finalizar en los desplazamientos especificados dentro del bloque. El mío tarhace eso, pero esa es una característica inusual; careciendo de eso, la alternativa sería heady tailel bloque para extraer solo la parte que desea deshacer tar.


1

Sé que es tarde, no estoy seguro de con qué terminó el OP, pero aquí hay algunas sugerencias:

Puede crear una nueva partición utilizando un sistema de archivos de su elección y copiar todo lo que desee almacenar en esa partición. Luego, reduzca la partición lo más pequeña posible para ahorrar espacio. Luego puede usar, por ejemplo, ddpara crear una imagen de la partición, digamos que es /dev/sdc3, en su forma más simple:

dd if=/dev/sdc3 of=backup_image.bin

Para Windows, busque "dd for windows" en Google o busque un programa equivalente que pueda crear una imagen byte por byte de una partición o dispositivo.

Luego, ese archivo de imagen se puede colocar en el almacenamiento a largo plazo. Siempre que tenga acceso al archivo y sus medios de almacenamiento a largo plazo admitan la búsqueda aleatoria, puede montar el archivo directamente, por ejemplo:

sudo mkdir /media/backup
sudo mount /path/to/backup_image.bin /media/backup

Para Windows, Google para "imagen de partición de montaje en Windows" .

Tendrá acceso completo a los datos y solo se realizará la cantidad mínima de lecturas necesarias para admitir la navegación a través del sistema de archivos y el acceso a ese archivo.

Otra opción más obvia es simplemente no combinar sus archivos en un solo archivo comprimido. Cree un sistema de archivos normal en su almacenamiento a largo plazo y simplemente copie los archivos en él. Los sistemas de archivos ya proporcionan los medios para acceder a archivos específicos sin acceder a datos innecesarios, es posible que no tenga que reinventar una rueda.

También hay formatos propietarios como el que usted describe, por ejemplo, el software de respaldo como Acronis puede hacer una copia de seguridad de los datos en unidades montadas en la red o en cualquier lugar, en archivos ".TIB" que se pueden examinar (y extraer datos) sin requerir una lectura del archivo completo No sé si Acronis admite la exploración de las copias de seguridad del sistema de archivos Linux / OSX, pero sí sé que admite este tipo de exploración para las copias de seguridad FAT32 y NTFS. Estoy seguro de que hay otros.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.