ddrescue btrfs disk


New Member
Hi all,
I am recovering data from the btrfs drive. The disk is readable, the problem is slow reading and some already relocated sectors.
Btrfs has been made on the entire disk (/dev/sdc).

I use ddrescue, I copied the first 100MiB completely, then around 256GiB - as I understand correctly there should be all superblock. Based on this description

The primary superblock is located at 0x1 0000 (6410 KiB). Mirror copies of the superblock are located at physical addresses 0x400 0000 (6410 MiB) and 0x40 0000 0000 (25610 GiB), if these locations are valid. Superblock copies are updated simultaneously. During mount btrfs' kernel module reads only the first super block (at 64k), if an error is detected mounting fails.

for the rest I ran ddrescue

ddrescue -v -f -r3 -a 100000 -O /dev/sdc /dev/sda /root/log_file_20201101 &
unfortunately there is a bit of it
Disk /dev/sdc: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors

I have a partial backup (not all files are important), and I don't want to wait for ddrescue to finish playing with the entire disk .. (optimistic 30 days more, maybe more if trimming will be needed)

I would like to get a list of files that are not yet copied and decide if this is enough for me or if I need some additional location to be copied.

for btrfs scrub to be used the disk must be mountable, unfortunatly:
# mount -t btrfs -o ro /dev/sda /srv/test
mount: /srv/test: mount(2) system call failed: File exists.

btrfs check --readonly /dev/sda
Opening filesystem to check...
bad tree block 3058274041856, bytenr mismatch, want=3058274041856, have=3058272993280
ERROR: cannot open file system

how to fix it? or how else to check what files are not transferred?

ok, I can run:
btrfs restore -i -D /dev/sda /dev/null
but i will need to copy all "tree block" (i think) - how to do that..
Last edited:
$100 Digital Ocean Credit
Get a free VM to test out Linux!

Members online