Symlink zu einem Teil der Datei?

14

Ist es möglich, eine Datei zu erstellen, die nur eine Teilsequenz von Bytes aus einer anderen Datei ist, z. B. ein Symlink, der jedoch nur auf einen Teil der Datei verweist?

Schüchterner Junge
quelle
4
Wenn Sie den Zweck Ihres Vorhabens erläutern, können wir möglicherweise eine Lösung vorschlagen.
JRT

Antworten:

12

Nein. Sie müssen entweder auf die gesamte Datei verweisen oder den Teil der Datei kopieren, an dem Sie interessiert sind.

Ignacio Vazquez-Abrams
quelle
12

Ja, zumindest unter Linux ist dies mit einigen Einschränkungen (einigermaßen) möglich.

Die Methode besteht darin, eine Lese- / Schreibschleife zu erstellen, die einer Teilmenge der Datei zugeordnet ist.

z.B:

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

Ausgabe:

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

Ich glaube, sowohl der Offset als auch die Größe müssen ein Vielfaches einer Blockgröße (512 Bytes) sein.

Sie müssen wahrscheinlich root sein, um das Loop-Gerät zu erstellen und darauf zuzugreifen.

Wenn Sie einen Symlink benötigen, können Sie einen erstellen, der auf das Loop-Gerät verweist.

jlliagre
quelle