Symlink ke bagian file?


14

Apakah mungkin untuk membuat file yang hanya merupakan sub-urutan byte dari file lain, seperti symlink, tetapi hanya merujuk sebagian file?


4
Mungkin jika Anda menjelaskan tujuan dari apa yang Anda coba lakukan, kami dapat menyarankan solusi.
JRT

Jawaban:



12

Ya, itu (agak) mungkin setidaknya di Linux dengan beberapa batasan.

Metode ini adalah membuat perangkat loop baca-tulis yang memetakan ke subset file.

misalnya:

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

keluaran:

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

Saya percaya baik offset dan ukurannya harus kelipatan dari ukuran blok (512 byte).

Anda mungkin perlu root untuk membuat dan mengakses perangkat loop.

Jika Anda memerlukan symlink, Anda dapat membuatnya yang menunjuk ke perangkat loop.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.