符号链接到文件的一部分?


14

是否可以创建一个文件,该文件只是另一个文件的字节子序列,例如符号链接,但仅引用文件的一部分?


4
也许如果您解释您要做什么的目的,我们可能会建议一个解决方案。
JRT

Answers:



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字节)的倍数。

您可能需要是root用户才能创建和访问循环设备。

如果需要符号链接,则可以创建一个指向循环设备的符号链接。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.