btrfs 드라이브에 하위 볼륨이있는 경우 추가 -r <subvol-id>
옵션을 에 전달해야 합니다 btrfs restore
. 불행히도 거기에 게시 된 user414471 ( http://oelkers.de/tips/undeleteBtrfs.sh ) 과 같은 스크립트는이 작업을 수행 할 수있는 옵션이 없지만 아마도 이것에 적응할 수 있습니다.
이 작업을 직접 수행하려면 다음을 사용하여 올바른 subvol-id를 얻어야합니다.
# mount /dev/sdXY /mnt/blah
# btrfs subvolume list /mnt/blah
# umount /mnt/blah
또는 대안으로 :
# btrfs restore -l /dev/sdXY | grep ROOT_ITEM
그런 다음 btrfs-find-root
되돌리려는 블록 번호 (일반적으로 현재 루트 인 최대 블록 바로 앞의 번호)를 얻는 데 사용 합니다. 이를 위해 먼저 기본 하위 볼륨을 파일을 되돌리려는 볼륨으로 설정하고 나중에이 변경 사항을 되돌려 야합니다.
# mount /dev/sdXY /mnt/blah
# btrfs subvolume set-default <subvol-id> /mnt/blah
# umount /mnt/blah
# btrfs-find-root /dev/sdXY
Well block 4321280 seems great, but generation doesn't match, have=400760, want=400984 level 0
...
Well block 9928704 seems great, but generation doesn't match, have=400764, want=400984 level 1
Well block 1094836224 seems great, but generation doesn't match, have=400983, want=400984 level 1
Found tree root at 1095270400 gen 400984 level 1
드디어 사용할 수 있습니다 btrfs restore
로 -r <subvol-id>
합니다 (로 초기 복구를 위해 --dry-run
원하는 경우 인수) :
# btrfs restore -r <subvol-id> -t 9928704 -v --path-regex '^/(|dir1(|/dir2(|/dir3(|/.*))))$' /dev/sdXY /tmp/recovery
이 모든 것에 대한 자세한 정보는
https://btrfs.wiki.kernel.org/index.php/Restore