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?

Laki-laki pemalu
sumber
4
Mungkin jika Anda menjelaskan tujuan dari apa yang Anda coba lakukan, kami dapat menyarankan solusi.
JRT

Jawaban:

12

Tidak. Anda harus mereferensikan seluruh file, atau Anda harus menyalin bagian dari file yang Anda minati.

Ignacio Vazquez-Abrams
sumber
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.

Jlliagre
sumber
2

Mungkin saja (untuk membuat symlink normal yang menunjuk ke bagian file) pada sistem file yang mengimplementasikan ide "file as directory" , yang muncul - selain penulis lain - dalam rencana reiserfs , tetapi implementasi reiserfs tidak disukai untuk masalah yang disebabkan implementasi.

imz - Ivan Zakharyaschev
sumber