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?
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?
Câu trả lời:
Không. Bạn phải tham chiếu toàn bộ tệp hoặc bạn phải sao chép phần tệp bạn quan tâm.
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.
Có thể (để tạo một liên kết tượng trưng thông thường chỉ đến một phần của tệp) trên hệ thống tệp thực hiện ý tưởng "tệp dưới dạng thư mục" , xuất hiện - bên cạnh các tác giả khác - trong các kế hoạch cho reiserfs , nhưng việc thực hiện reiserfs không thích cho các vấn đề thực hiện gây ra.