Lien symbolique vers une partie du fichier?

14

Est-il possible de créer un fichier qui n'est qu'une sous-séquence d'octets à partir d'un autre fichier, comme un lien symbolique, mais ne référençant qu'une partie du fichier?

Garçon timide
la source
4
Peut-être que si vous expliquez le but de ce que vous essayez de faire, nous pourrions suggérer une solution.
JRT

Réponses:

12

Non. Vous devez soit référencer l'intégralité du fichier, soit copier la partie du fichier qui vous intéresse.

Ignacio Vazquez-Abrams
la source
12

Oui, c'est (quelque peu) possible au moins sous Linux avec quelques limitations.

La méthode consiste à créer un périphérique de boucle de lecture-écriture qui correspond à un sous-ensemble du fichier.

par exemple:

#!/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

production:

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

Je crois que l'offset et la taille doivent être multiples d'une taille de bloc (512 octets).

Vous devez probablement être root pour créer et accéder au périphérique de boucle.

Si vous avez besoin d'un lien symbolique, vous pouvez en créer un qui pointe vers le périphérique de boucle.

jlliagre
la source