btrfs 수신됨/?

btrfs 수신됨/?

에 읽기 전용 하위 볼륨이 있는 BTRFS 파일 시스템 A가 있다고 가정해 보겠습니다 <mount-point-A>/snaps/good-one.콘텐츠<mount-point-B>/하위 볼륨은 — 일반 읽기 및 쓰기 모드 에 있습니다 .

btrfs send/receive채용을 통해 이를 달성할 수 있는 방법이 있나요 ? 하위 볼륨을 읽기 전용으로 수신 <mount-point-B>/good-one한 다음 어떻게든 읽기-쓰기로 전환하는 것처럼요 <mount-point-B>/? 아니면 다시 돌아가야 합니까 rsync?

답변1

읽기 전용 하위 볼륨을 받은 후 rw스냅샷을 생성하고 선택적으로 읽기 전용 하위 볼륨을 삭제합니다.

답변2

하위 볼륨은 자동으로 읽기 전용으로 설정 되지만 btrfs receive언제든지 변경할 수 있습니다. 그러나 이렇게 하면 사본이 원본으로서 가지고 있는 모든 보호가 제거됩니다.

수신이 완료되면 다음 명령을 실행합니다 <mount-point-B>.

sudo btrfs property set <mount-point-B> ro false

이제 백업의 무결성을 손상시키지 않으려면 rw@Ginnungagap이 제안한 대로 스냅샷을 생성하세요.

답변3

긴 이야기 짧게

btrfs sub set-default <VolumeID> ./

완전한 답변

다음에서 읽기 전용 볼륨을 받았다고 가정합니다 <mount-point-B>/good-one.

읽고 쓸 수 있게 만드세요:

cd mount-point-B
sudo btrfs property set -ts ./good-one ro false

ID를 얻으세요:

sudo btrfs sub show ./good-one | grep "Subvolume ID"

루트에 두십시오.

sudo btrfs sub set-default <Subvolume ID> ./

루트 볼륨의 변경 사항을 보려면 다시 마운트해야 합니다. 원래 루트 볼륨은 숨겨집니다.

다음은 전체 테스트 스크립트입니다.

#!/bin/bash
sudo modprobe loop
cd /tmp
fallocate -l 128M btrfs1 && \
fallocate -l 128M btrfs2 && \
sudo losetup /dev/loop0 ./btrfs1 && \
sudo losetup /dev/loop1 ./btrfs2 && \
sudo mkfs.btrfs -q /dev/loop0 && \
sudo mkfs.btrfs -q /dev/loop1 && \
mkdir btrfs1m && \
mkdir btrfs2m && \
sudo mount /dev/loop0 btrfs1m && \
sudo mount /dev/loop1 btrfs2m && \
sudo touch btrfs1m/file1 && \
sudo touch btrfs2m/file2 && \
sudo btrfs sub snapshot -r btrfs1m/ btrfs1m/s1 && \
sudo btrfs send btrfs1m/s1 | sudo btrfs receive btrfs2m/ && \
sudo umount /dev/loop0 && \
sudo losetup -d /dev/loop0 && \
rm btrfs1 && \
rmdir btrfs1m && \
cd btrfs2m
VID=$(sudo btrfs sub show ./s1 | grep "Subvolume ID" | tr -dc '0-9')
sudo btrfs property set -ts ./s1 ro false && \
sudo btrfs sub set-default $VID ./ && \
cd .. && \
sudo umount /dev/loop1 && \
sudo mount /dev/loop1 btrfs2m && \
echo "Now the received volume sits at the root:" && \
ls btrfs2m && \
sudo mv btrfs2m/file1 btrfs2m/renamed && \
sudo umount /dev/loop1 && \
sudo losetup -d /dev/loop1 && \
rm btrfs2 && \
rmdir btrfs2m

관련 정보