BTRFS 파티션을 외장 하드 드라이브에 복사 BTRFS 파티션(스냅샷 포함)

BTRFS 파티션을 외장 하드 드라이브에 복사 BTRFS 파티션(스냅샷 포함)

BTRFS 파티션 백업에 대해 질문이 있습니다.

/dev/sda1에 BTRFS 파티션이 있고 /dev/sdb1에 BTRFS가 있는 외장 하드 드라이브가 있다고 가정해 보겠습니다.

다음 명령을 실행하여 초기 백업을 만들 수 있음을 발견했습니다.

btrfs replace start /dev/sda1 /dev/sdb1

그런 다음 두 가지를 변경했습니다.

  • SDA1에 새 일반 파일을 만듭니다.
  • SDA1에서 새로운 BTRFS 스냅샷을 생성합니다.

이제 외장 하드 드라이브 SDB1("백업")을 SDA1에 정렬하고 싶습니다. 따라서 두 파일 모두 BTRFS 관련 항목(스냅샷)입니다.

어떻게 해야 하나요?

그래서 BTFS 기능(스냅샷)도 동기화하는 rsync에 해당하는 기능을 찾고 있습니다.

rsync -avr --delete <mount point sda1> <mount point sdb1>

감사해요

답변1

교체 명령은 sda1을 백업하지 않고 파일 시스템에서 sda1을 sdb1로 교체하지만 단일 장치 파일 시스템이고 btrfs는 교체 시 sda1의 데이터를 지우지 않으므로 결국 sda1의 동일한 복사본 파일 시스템이 됩니다. . 그러나 둘 다 동일한 UUID를 갖고 있으며 현재 동일한 UUID를 가진 두 개의 btrfs 파일 시스템을 마운트하는 것은 막대한 데이터 손상을 초래할 수 있으므로 이 작업을 수행하고 싶지 않습니다.(btrfswiki의 함정 페이지 참조). btrfs의 증분 백업 기능을 사용하려면 백업 드라이브 /dev/sdb1을 새 btrfs 파일 시스템으로 포맷해야 합니다. 그런 다음 다음 명령을 사용하여 파일 시스템에 백업하려는 물 하위 볼륨의 읽기 전용 스냅샷을 생성해야 합니다.

btrfs su sn -r @subvolume-name @subvolume-name-RO

각 하위 볼륨에. 그런 다음 빈 btrfs 파일 시스템을 마운트하고 다음을 실행해야 합니다.

btrfs send /path/to/@subvolume-name-RO | btrfs rec /path/to/backup-directory/

이것은 첫 번째 전송이 될 것이며 btrfs는 이번에 모든 데이터를 전송해야 합니다. 다음에 해당 드라이브에 백업을 보내려는 경우 증분 전송을 사용하여 마지막 백업이 전송된 이후 변경된 데이터만 보낼 수 있습니다. 또한 쓰기 중 복사 기능을 사용하므로 공간도 많이 절약됩니다. 두 파일 시스템 모두에서 최신 스냅샷을 유지하세요. 완료되면 전송된 스냅의 이름을 원하는 이름으로 바꿀 수 있습니다.

이제 다른 스냅을 보내려면 원본 스냅의 이름을 바꾸고 다음과 같은 새로운 스냅을 찍으면 됩니다.

mv @subvolume-name-RO @subvolume-name-RO-old
btrfs su sn -r @subvolume-name @subvolume-name-RO

그런 다음 보내기를 사용하여 최신 스냅샷을 보낼 수 있습니다.

btrfs send -p @subvolume-name-RO-old @subvolume-name-RO | btrfs rec /path/to/backup-directory/

이전 스냅샷이 백업 드라이브에 아직 남아 있으면 새 스냅샷을 보내며, 마지막 스냅샷 이후 변경된 내용을 복사하기만 하면 됩니다.

관련 정보