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
with -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