Ruft Dateien von einer dd-ed btrfs-Partition ab

0

Ich habe dd-ed eine Btrfs - Partition (von Jolla Telefon), gemäß einigen letzten Mitteln Anweisungen , um eine Sicherheitskopie davon zu haben (siehe: Hinweise in Mer ‚s Segelfisch / Backup Device Wiki - Seite). Vielleicht zu Unrecht, nachdem Sie die Wiki-Seite von Btrfs Gotchas gelesen haben .

[aktualisiert] Ich möchte ein paar Dateien aus dem Subvolume kopieren home. Beachten Sie, dass die Dateien nicht gelöscht wurden. Wenn ich das gewünschte Subvolume einbinde, kann ich in Verzeichnissen navigieren und Dateien auflisten. Jeder Versuch zu lesen oder zu kopieren schlägt jedoch fehl.

[aktualisiert] Nachdem dddas Image auf eine leere Micro-SD-Karte zurückgespielt wurde (ein Versuch, festzustellen, ob das Kopieren von Dateien fehlgeschlagen ist, dh cp: reading 'filename': Input/output erroraufgrund der Angaben unter http://superuser.com/a/793638/128768 ) als root mache ich:

# list tree roots
btrfs restore -l /dev/sdc

tree key (EXTENT_TREE ROOT_ITEM 0) 46944256 level 2
tree key (DEV_TREE ROOT_ITEM 0) 35631104 level 0
tree key (FS_TREE ROOT_ITEM 0) 157016064 level 0
tree key (CSUM_TREE ROOT_ITEM 0) 82132992 level 2
tree key (QUOTA_TREE ROOT_ITEM 0) 67289088 level 0
tree key (UUID_TREE ROOT_ITEM 0) 32456704 level 0
tree key (259 ROOT_ITEM 0) 29503488 level 0
tree key (264 ROOT_ITEM 33) 116465664 level 2
tree key (265 ROOT_ITEM 34) 116400128 level 1
tree key (299 ROOT_ITEM 866702) 40960000 level 3
tree key (325 ROOT_ITEM 2361424) 119631872 level 2
tree key (327 ROOT_ITEM 2361546) 152805376 level 3
tree key (328 ROOT_ITEM 2361547) 84439040 level 2
tree key (DATA_RELOC_TREE ROOT_ITEM 0) 122241024 level 0

Gemäß https://superuser.com/a/875265/128768 mache ich Folgendes:

# mount the card
mount /dev/sdc /mnt/ddjolla

# enter in
cd /mnt/ddjolla/

# then, list subvolumes
btrfs subvolume list .

ID 259 gen 10 top level 5 path @swap
ID 264 gen 2361991 top level 5 path factory-@
ID 265 gen 2361991 top level 5 path factory-@home
ID 299 gen 2362013 top level 5 path @_old
ID 325 gen 2361991 top level 299 path @_old/factory-@
ID 327 gen 2484920 top level 5 path @
ID 328 gen 2484927 top level 5 path @home

# set default subvolume to one from which to revert files
btrfs subvolume set-default 328 /mnt/ddjolla

# unmount
umount /mnt/blah

Sieht soweit gut aus. An diesem Punkt,

# try to find root(s)
btrfs-find-root /dev/sdc

Superblock thinks the generation is 2484930
Superblock thinks the level is 1

Was auch immer läuft, ist zu langsam, verbraucht CPU-Ressourcen und es gibt keine Anzeichen für Fortschritte.

Ich "entdeckte" nun, dass das Dateisystem der SD-Karte, in die ich die Ausgabedatei geschrieben habe, wahrscheinlich ddein FAT- Dateisystem ist ! (Siehe Kommentare in Q & A vollständigen Telefon Backup - Guide in https://together.jolla.com/questions/ ) Wahrscheinlich war dies ein no-go (für Dateien> 4 GB) und die meisten Daten, von der ursprünglichen Partition verloren (was anscheinend> 4GB war). Ist das so?

Für die Unterlagen hier noch eine Info

btrfs check /dev/sdc
Checking filesystem on /dev/sdc
UUID: 0f8a2490-53ed-4ff6-ba34-b81df3430387
checking extents
checking free space cache
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 46130921472
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 47204663296
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 49352146944
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 50425888768
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 51499630592
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 52573372416
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 53647114240
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 54720856064
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 55794597888
btrfs: csum mismatch on free space cache
failed to load free space cache for block group 56868339712
checking fs roots
checking csums
checking root refs
checking quota groups
Qgroup is already inconsistent before checking
Counts for qgroup id: 265 are different
our:        referenced 38080512 referenced compressed 38080512
disk:       referenced 38080512 referenced compressed 38080512
our:        exclusive 38002688 exclusive compressed 38002688
disk:       exclusive 4096 exclusive compressed 4096
diff:       exclusive 37998592 exclusive compressed 37998592
found 9357398016 bytes used err is 1
total csum bytes: 8866964
total tree bytes: 264663040
total fs tree bytes: 237322240
total extent tree bytes: 14561280
btree space waste bytes: 79581505
file data blocks allocated: 9901109248
 referenced 8732901376

Gibt es trotzdem eine Möglichkeit, diese zu beheben und btrfs restore -r ...wie in der Referenzantwort beschrieben vorzugehen? Wenn nicht, und wahrscheinlich ist dies der Fall, kann dies möglicherweise als nützlicher Fehler dienen, um ähnliche Fehler in Zukunft zu vermeiden.

Nikos Alexandris
quelle
Wurden die Dateien überhaupt gelöscht? Die Frage ist darüber nicht klar. Wenn dies nicht der mount -t btrfs -o ro,subvol=/ your-image-file /mnt/fooFall ist, gehen Sie in die Unterverzeichnisse unter /mnt/foo/, lokalisieren Sie die Dateien und kopieren Sie sie von dort. Trotzdem scheint das ganze Zurückspielen auf SD-Karte überflüssig; Sie können das Image einbinden (oder besser: die Kopie davon, damit Sie die intakte Quelle haben, falls etwas schief geht).
Kamil Maciorowski
@KamilMaciorowski Nein, die Dateien wurden nicht gelöscht. Wenn ich das Subvolume mounte, kann ich in den fraglichen Verzeichnissen navigieren und die Dateien auflisten. Aber ich kann sie einfach nicht lesen oder kopieren. Was bedeutet die Lokalisierung der Dateien ? ddBeim Zurückschicken wurde versucht, festzustellen, ob der Fehler beim Kopieren der Datei (dh, ich erhalte cp: reading 'filename': Input/output error) auf Folgendes zurückzuführen ist: superuser.com/a/793638/128768 .
Nikos Alexandris
"lokalisieren" - ich meinte "lokalisieren, finden" (mein schlechtes Englisch vielleicht).
Kamil Maciorowski
Was sagt dmesgman, wenn es gibt cp: reading 'filename': Input/output error? ( Verweis .)
Kamil Maciorowski