Symlink đến một phần của tập tin?


14

Có thể tạo tệp chỉ là một chuỗi con byte từ tệp khác, như liên kết tượng trưng, ​​nhưng chỉ tham chiếu một phần của tệp không?


4
Có lẽ nếu bạn giải thích mục đích của những gì bạn đang cố gắng làm, chúng tôi có thể đề xuất một giải pháp.
JRT

Câu trả lời:



12

Vâng, ít nhất là có thể trên Linux với một số hạn chế.

Phương pháp là tạo một thiết bị vòng lặp đọc-ghi ánh xạ tới một tập hợp con của tệp.

ví dụ:

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

đầu ra:

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

Tôi tin rằng cả phần bù và kích thước phải là bội số của kích thước khối (512 byte).

Bạn có thể cần phải root để tạo và truy cập thiết bị lặp.

Nếu bạn cần một liên kết tượng trưng, ​​bạn có thể tạo một liên kết trỏ đến thiết bị lặp.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.