Enlace simbólico a parte del archivo?

14

¿Es posible crear un archivo que sea solo una subsecuencia de bytes de otro archivo, como un enlace simbólico, pero que solo haga referencia a una parte del archivo?

Niño tímido
fuente
44
Quizás si explica el propósito de lo que está tratando de hacer, podríamos sugerirle una solución.
JRT

Respuestas:

12

No. Debe hacer referencia al archivo completo o debe copiar la parte del archivo que le interesa.

Ignacio Vazquez-Abrams
fuente
12

Sí, es (algo) posible al menos en Linux con algunas limitaciones.

El método consiste en crear un dispositivo de bucle de lectura y escritura que se asigne a un subconjunto del archivo.

p.ej:

#!/bin/bash
for ((i=0;i<10000;i++)); do
    printf "%7d\n" $i
done >/var/tmp/file
losetup -v -f -o 512 --sizelimit 512 /var/tmp/file
losetup -a
head -2 /var/tmp/file
echo ...
tail -2 /var/tmp/file
echo ===
head -2 /dev/loop0
echo ...
tail -2 /dev/loop0 
printf "I was here" > /dev/loop0
grep here /var/tmp/file
losetup -d /dev/loop0

salida:

loop device: /dev/loop0
/dev/loop0: [0808]:136392 (/var/tmp/file), offset 512, size 512
      0
      1
...
   9998
   9999
===
     64
     65
...
    126
    127
I was here   65

Creo que tanto el desplazamiento como el tamaño deben ser múltiples de un tamaño de bloque (512 bytes).

Probablemente necesite ser root para crear y acceder al dispositivo de bucle.

Si necesita un enlace simbólico, puede crear uno que apunte al dispositivo de bucle.

jlliagre
fuente