btrfs에서 단일 파일 또는 폴더 복원 / 롤백

Dec 08 2020

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

이제 파일 / 폴더 수준에서 스냅 샷으로 롤백 할 수 있는지 궁금합니다. 일반적으로 드라이브의 나머지 상태를 유지하면서 단일 항목 만 롤백하기를 원하기 때문에 이것을 묻습니다.

이를 수행하는 기본 방법이 있습니까? 아니면이를 가장 잘 달성하는 방법이 있습니까? 나는 전체 복사 를 수행하지 않고 btrfs 스냅 샷에서 단일 파일 복원을 읽었습니다 . 그래도이를 수행하는 가장 좋은 방법 일 수 있습니다.

답변

1 clel Jan 02 2021 at 01:13

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

btrfs 도구 사용

선택적으로 스냅 샷에 대한 하위 볼륨 생성 :

btrfs subvolume create .my_snapshots

스냅 샷 만들기 :

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

은 Using -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/[email protected]/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는 openSUSE 문서 에 따라 현재 볼륨에 대한 변경 사항을 실행 취소하는 데 사용할 수있는 명령을 제공합니다 . 이로 인해 데이터 불일치가 발생할 수 있습니다. 또한 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)

EmmanuelRosa Dec 09 2020 at 17:25

BTRFS 스냅 샷은 하위 볼륨 수준에서 작동합니다. 즉, 개별 파일이 아닌 하위 볼륨을 "롤백"할 수 있습니다.

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

개별 파일을 롤백하기 위해 제공된 링크에 표시된 것처럼 reflink 사본을 사용합니다. 그러나 관련 하위 볼륨이 자동으로 마운트되어 /etc/fstab있으므로 불편 함이 없습니다.