btrfs의 개별 파일 또는 폴더 복원/롤백

btrfs의 개별 파일 또는 폴더 복원/롤백

NAS 시스템에 btrfs를 사용할 계획입니다.

이제 파일/폴더 수준에서 콘텐츠를 스냅샷으로 롤백하는 것이 가능한지 궁금합니다. 일반적으로 드라이브의 나머지 상태를 유지하면서 단일 항목만 롤백하려고 하기 때문에 이 질문을 하게 됩니다.

이를 수행하는 기본 방법이 있습니까? 그렇지 않은 경우 이를 달성하는 최선의 방법은 무엇입니까? 나는 읽었다전체 복사를 수행하지 않고 btrfs 스냅샷에서 개별 파일을 복원합니다.이런 방법인 것 같지만 그다지 편리하지는 않습니다. 그러나 이것이 아마도 최선의 접근 방식일 것입니다.

답변1

스냅샷을 찍으면 기본적으로 기본 볼륨의 디렉터리 구조 내에서 액세스할 수 있는 하위 볼륨이 생성됩니다. 적절한 권한이 있는 경우 여기에서 해당 파일을 찾아보고 파일이나 폴더를 복사할 수 있습니다. --reflink복사 옵션은 필요하지 않은 것 같지만, 복사할 때 중복이 없도록 하면 더 좋을 것 같습니다.

btrfs 도구 사용

(선택 사항) 스냅샷에 대한 하위 볼륨을 생성합니다.

btrfs subvolume create .my_snapshots

스냅샷을 생성합니다:

btrfs subvolume snapshot -r /mnt_point /mnt_point/.my_snapshots/snapshot1

-r스냅샷을 읽기 전용으로 만들려면 이 플래그를 사용합니다 (https://wiki.archlinux.org/index.php/btrfs#Snapshots).

하위 볼륨을 먼저 생성하고 읽기 전용으로 만들지 않으면 다음과 같이 보일 수 있습니다.

btrfs subvolume snapshot /mnt_point /mnt_point/snapshot1

그런 다음 스냅샷에서 파일이나 폴더를 복사하여 복구할 수 있습니다.

cp /mnt_point/.my_snapshots/snapshot1/sub/dir/file /sub/dir/file

(에서https://lore.kernel.org/linux-btrfs/[이메일 보호됨]/t/#m16db5d9f29d26f41a8adb4499ffe3e220a85d9b8)

외부 도구(스내퍼를 예로 들어)

Snapper와 같은 외부 도구를 사용하면 스냅샷 작업을 더욱 편리하게 하고 유용한 기능을 제공하므로 몇 가지 이점이 있습니다.

먼저 스냅샷을 생성하려는 (하위)볼륨에 대한 구성 파일을 생성해야 합니다.

snapper -c config-name create-config /mnt_point

그러면 이라는 파일이 생성됩니다 config-name. 이는 자동 시간 기반 스냅샷과 일부 로직 이후 스냅샷을 정리하는 규칙을 생성할 수도 있다는 점에 유의하세요. 이러한 규칙은 수동으로 생성된 스냅샷을 삭제하지 않습니다.

그런 다음 다음 명령을 사용하여 스냅샷을 수동으로 생성할 수 있습니다.

snapper -c config-name create --description description-content

config-name이전에 생성된 구성의 이름은 어디에 있으며 description-content스냅샷에 대한 설명을 입력할 수 있습니다.

(에서https://wiki.archlinux.org/index.php/Snapper)

그런 다음 복구는 위의 btrfs 도구 섹션과 유사하게 작동하여 마운트된 스냅샷에 액세스하고 내용을 복사합니다.

또한 snapper는 다음을 기반으로 현재 볼륨의 변경 사항을 실행 취소하는 데 사용할 수 있는 명령을 제공합니다.오픈수세 문서. 그러나 이로 인해 데이터가 일관되지 않을 수 있다는 점에 유의하세요. 게다가Red Hat 문서루트 파일 시스템에서 이 명령을 사용하지 않는다는 면책조항입니다.

이론적으로 파일은 다음 방법으로 복구할 수 있습니다.

 snapper -c config-name -v undochange SNAPSHOT_ID..0 FILENAME

여기서 SNAPSHOT_ID는 복원할 스냅샷의 ID(및 ..0복원할 파일을 기본 볼륨으로 지정)이고 는 FILENAME복원할 파일의 경로입니다. 여러 파일을 지정할 수도 있습니다.

(에서https://doc.opensuse.org/documentation/leap/archive/15.0/reference/html/book.opensuse.reference/cha.snapper.html#proc.snapper.restore.cmdl)

답변2

BTRFS 스냅샷은 하위 볼륨 수준에서 작동합니다. 이는 하위 볼륨을 "롤백"할 수 있지만 개별 파일은 "롤백"할 수 없음을 의미합니다.

하위 볼륨은 파일 시스템에서 디렉터리로 나타나므로 디렉터리를 롤백할 수 있습니다.

단일 파일을 롤백하기 위해 귀하가 제공한 링크에 표시된 참조 링크 복사본을 사용했습니다. 하지만 관련 하위 볼륨을 자동으로 마운트해두었기 /etc/fstab때문에 불편함은 없었습니다.

답변3

터미널에서 출발

BTRFS 기본 스냅샷을 사용한다고 가정합니다.

/.snapshot/@timestamp_folder/subfolder스냅샷에서 파일 위치를 찾습니다 . 그런 다음 다음 명령을 실행하고 개별 파일을 새 위치에 "복사/동기화"합니다.

sudo rsync myfile.txt /shares/backups/restored/restored.txt

폴더에서도 작동할 수도 있습니다(아직 테스트되지 않음).

관련 정보