파일의 일부에 대한 심볼릭 링크?

파일의 일부에 대한 심볼릭 링크?

다른 파일의 바이트 하위 시퀀스이지만 파일의 일부만 참조하는 파일(예: 심볼릭 링크)을 만드는 것이 가능합니까?

답변1

예, 적어도 Linux에서는 어느 정도 가능하지만 몇 가지 제한 사항이 있습니다.

방법은 파일의 하위 집합에 매핑되는 읽기-쓰기 루프 장치를 만드는 것입니다.

예를 들어:

# Write some data to a single file
for ((i=0;i<10000;i++)); do
    printf "%7d\n" $i
done >/var/tmp/file

# Use losetup to manage a new loopback device
# The --find option without any arguments to find an available loop device
# The --show will echo what that found device is to stdout
# We capture this to ensure the rest of the script refers to the correct device
NEW_DEV_LOOP=$(sudo losetup --show --verbose --find --show --offset 512 --sizelimit 512 /var/tmp/file)

# This will be something like /dev/loop3 depending on what devices are available
echo "NEW_DEV_LOOP = $NEW_DEV_LOOP"

# Print status
losetup -a

# Show the contents of the file and loop device
head -2 /var/tmp/file
echo ...
tail -2 /var/tmp/file
echo "==="
sudo head -2 "$NEW_DEV_LOOP"
echo ...
sudo tail -2 "$NEW_DEV_LOOP"

# Write to the loop device and show impact on the file
sudo sh -c "printf 'I was here' > '$NEW_DEV_LOOP'"
grep here /var/tmp/file

# Detatch the example loop device
sudo losetup -d "$NEW_DEV_LOOP"

산출:

NEW_DEV_LOOP=/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바이트)의 배수여야 한다고 생각합니다.

루프 장치를 생성하고 액세스하려면 루트여야 할 수도 있습니다.

심볼릭 링크가 필요한 경우 루프 장치에 대한 심볼릭 링크를 만들 수 있습니다.

답변2

캔트. 전체 파일을 인용하거나 파일에서 관심 있는 부분을 복사해야 합니다.

답변3

다음 기능을 구현하는 파일 시스템에서 가능합니다(파일의 일부를 가리키는 일반 심볼릭 링크 생성)."파일은 디렉토리이다"라는 생각, 그는 다른 작가들 사이에서reiserfs 계획, 그러나 reiserfs의 구현마음에 들지 않음구현 과정에서 발생하는 문제를 해결합니다.

관련 정보