ファイルの一部へのシンボリックリンク?


14

シンボリックリンクのような別のファイルからのバイトのサブシーケンスだけであるが、ファイルの一部のみを参照するファイルを作成することは可能ですか?


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バイト)の倍数でなければならないと思います。

ループデバイスを作成してアクセスするには、おそらくルートになる必要があります。

シンボリックリンクが必要な場合、ループデバイスを指すシンボリックリンクを作成できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.