Symlink เป็นส่วนหนึ่งของไฟล์หรือไม่


14

มีความเป็นไปได้ไหมที่จะสร้างไฟล์ที่เป็นลำดับย่อยของไบต์จากไฟล์อื่นเช่น symlink แต่อ้างอิงเพียงบางส่วนของไฟล์?


4
บางทีถ้าคุณอธิบายวัตถุประสงค์ของสิ่งที่คุณพยายามทำเราอาจเสนอวิธีแก้ปัญหา
JRT

คำตอบ:



12

ใช่เป็นไปได้อย่างน้อยที่สุดบน Linux ที่มีข้อ จำกัด บางประการ

วิธีการคือการสร้างอุปกรณ์ลูปอ่าน - เขียนที่แมปไปยังชุดย่อยของไฟล์

เช่น:

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

เอาท์พุท:

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

ฉันเชื่อว่าทั้งออฟเซ็ตและขนาดต้องมีขนาดเท่าบล็อก (512 ไบต์)

คุณอาจต้องรูทเพื่อสร้างและเข้าถึงอุปกรณ์ลูป

หากคุณต้องการ symlink คุณสามารถสร้างที่ชี้ไปยังอุปกรณ์วนรอบ


2

อาจเป็นไปได้ (เพื่อสร้าง symlink ปกติที่ชี้ไปที่ส่วนหนึ่งของไฟล์) บนระบบไฟล์ซึ่งใช้แนวคิด "file as directory"ซึ่งปรากฏขึ้น - นอกเหนือจากผู้เขียนคนอื่น - ในแผนสำหรับ reiserfsแต่การนำไปใช้ reiserfs ไม่ชอบปัญหาที่เกิดจากการใช้งาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.