Ανάκτηση δεδομένων σε Linux χρησιμοποιώντας ddrescue

Anaktese Dedomenon Se Linux Chresimopoiontas Ddrescue



Το ddrescue είναι ένα εργαλείο που χρησιμοποιείται για την ανάκτηση δεδομένων από ένα αρχείο ή μια συσκευή μπλοκ όπως σκληρός δίσκος, SSD, δίσκοι RAM, CD, DVD και συσκευές αποθήκευσης USB. Αντιγράφει δεδομένα από μια συσκευή μπλοκ στην άλλη, αφήνοντας τα κατεστραμμένα μπλοκ δεδομένων και μετακινώντας μόνο τα καλά. Το ddrescue είναι ένα ισχυρό εργαλείο ανάκτησης που είναι πλήρως αυτοματοποιημένο επειδή δεν απαιτεί παρεμβολές κατά τη λειτουργία ανάκτησης. Επιπλέον, μπορεί να διακοπεί και να συνεχιστεί ανά πάσα στιγμή χάρη στο αρχείο χάρτη ddrescue . Άλλα βασικά χαρακτηριστικά του ddrescue παρατίθενται παρακάτω:
  • Δεν αντικαθιστά τα ανακτημένα δεδομένα, αλλά καλύπτει τα κενά σε περίπτωση επαναληπτικής ανάκτησης. Ωστόσο, μπορεί να περικοπεί εάν το εργαλείο έχει ρητά οδηγίες να το κάνει.
  • Ανάκτηση δεδομένων σε ένα μόνο αρχείο από πολλά αρχεία ή μπλοκ.
  • Υποστηρίζει πολλαπλούς τύπους διεπαφών συσκευών όπως SATA, ATA, SCSI, μονάδες MFM, δισκέτες και κάρτες SD.

Σε αυτόν τον οδηγό, θα εξερευνήσω αυτό το απίστευτα χρήσιμο εργαλείο ανάκτησης δεδομένων. Θα συζητήσω επίσης τη διαδικασία εγκατάστασής του και πώς να το χρησιμοποιήσετε για την ανάκτηση μιας μπλοκ συσκευής ή διαμερίσματος.

Σημείωση: Χρησιμοποιώ τη διανομή Linux (Ubuntu 22.04) για τις οδηγίες σε αυτόν τον οδηγό. Η διαδικασία εγκατάστασης του βοηθητικού προγράμματος ddrescue μπορεί να διαφέρει, αλλά οι οδηγίες θα είναι ίδιες σε όλες τις διανομές Linux.







Εγκατάσταση του ddrescue

Για να εγκαταστήσετε το ddrescue στο Linux, ειδικά Ubuntu και οι γεύσεις του ή Βασισμένο στο Debian διανομές, χρήση:



sudo κατάλληλος εγκαθιστώ gddrescue

Για να το εγκαταστήσετε REHL , Μαλακό καπέλλο , και CentOS , ενεργοποιήστε πρώτα το ΖΕΣΤΟΣ (Επιπλέον πακέτα για Enterprise Linux).



sudo yum εγκατάσταση θερμή απελευθέρωση

Η παραπάνω εντολή είναι για νεότερες εκδόσεις της αντίστοιχης διανομής.





Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να εγκαταστήσετε το ddrescue:

sudo yum εγκατάσταση ddrescue

Για διανομές Linux που βασίζονται σε Arch όπως π.χ Arch-Linux και Manjaro , χρησιμοποιήστε την παρακάτω εντολή για να εγκαταστήσετε το βοηθητικό πρόγραμμα ανάκτησης ddrescue.



sudo pacman -ΜΙΚΡΟ ddrescue

Εφόσον χρησιμοποιώ το Ubuntu 22.04, θα χρησιμοποιήσω τον διαχειριστή πακέτων APT για να το εγκαταστήσω.

Κατανόηση Βασικών

Πριν χρησιμοποιήσετε το εργαλείο ddrescue για την ανάκτηση δεδομένων, θα συνιστούσα στους χρήστες που είναι νέοι στη διαδικασία ανάκτησης να κατανοήσουν ορισμένες συμβάσεις ονομασίας του Linux.

Το Linux αναγνωρίζει τα μπλοκ (συσκευές) ως αρχεία και τα τοποθετεί στο /dev Ευρετήριο. Για να καταχωρήσετε τα αρχεία στον κατάλογο /dev, χρησιμοποιήστε το ls /dev εντολή.

ο σκληροι ΔΙΣΚΟΙ (αποθηκευτικοί χώροι) αντιπροσωπεύονται με sd ακολουθούμενο από αλφάβητα. στην περίπτωση πολλαπλών συσκευών αποθήκευσης, τα αρχεία θα αντιπροσωπεύονται ως /dev/sd ένα, /dev/sd σι, και ούτω καθεξής.

Εάν η συσκευή αποθήκευσης έχει χωρίσματα , τότε θα αντιπροσωπεύονται από έναν αριθμό με το αντίστοιχο όνομα αρχείου μονάδας δίσκου, όπως /dev/sda 1 , /dev/sda 2 , και ούτω καθεξής.

Για να καταχωρήσετε όλα τα μπλοκ και άλλες συνδεδεμένες συσκευές με το σύστημα, χρησιμοποιήστε το μπλοκ λίστας lsblk εντολή:

lsblk

Η εντολή ddrescue μπορεί να ανακτήσει ολόκληρο το μπλοκ (που περιέχει MBR & διαμερίσματα) ή και ένα διαμέρισμα. Από την άλλη πλευρά, εάν χρειάζεται να ανακτήσετε μόνο συγκεκριμένα αρχεία από ένα συγκεκριμένο διαμέρισμα, τότε είναι καλύτερο να ανακτήσετε το διαμέρισμα αντί για ολόκληρο το μπλοκ.

Σημαντικές εκτιμήσεις

Πριν χρησιμοποιήσετε το βοηθητικό πρόγραμμα ddrescue, πρέπει να λάβετε υπόψη ορισμένα πολύ βασικά σημεία:

  • Μην προσπαθήσετε να ανακτήσετε ένα μονταρισμένο μπλοκ, το μπλοκ δεν πρέπει να βρίσκεται σε λειτουργία μόνο για ανάγνωση.
  • Μην προσπαθήσετε να επιδιορθώσετε ένα μπλοκ με σφάλματα I/O.
  • Το σύστημα μπορεί να αλλάξει τα ονόματα των συσκευών εισόδου και εξόδου κατά την επανεκκίνηση. Βεβαιωθείτε ότι τα ονόματα των συσκευών είναι σωστά πριν ξεκινήσετε τη διαδικασία αντιγραφής.
  • Εάν χρησιμοποιείτε ξεχωριστό μπλοκ ως συσκευή εξόδου, τότε τυχόν δεδομένα στη συσκευή θα αντικατασταθούν.

Χρησιμοποιώντας το ddrescue

Αφού εγκαταστήσετε το βοηθητικό πρόγραμμα ddrescue και κατανοήσετε τις συμβάσεις ονομασίας, το επόμενο βήμα είναι να εντοπίσετε τον δίσκο που παρουσιάζει βλάβη και να τον ανακτήσετε χρησιμοποιώντας το εργαλείο ddrescue.

Ανάκτηση του κατεστραμμένου μπλοκ

Το πρώτο παράδειγμα θα περιλαμβάνει τη διαδικασία ανάκτησης ολόκληρου του μπλοκ. Αρχικά, απαριθμήστε τα μπλοκ χρησιμοποιώντας το lsblk εντολή:

lsblk ΟΝΟΜΑ, ΜΕΓΕΘΟΣ, FSTYPE

ο Το flag χρησιμοποιείται για να καθορίσει ποιον τύπο πληροφοριών (πεδία) θα πρέπει να εξάγει η εντολή. Έχω αναφέρει το ΟΝΟΜΑ , ΜΕΓΕΘΟΣ , και FSTYPE ή τύπο συστήματος αρχείων.

Τώρα, μπορείτε να προσδιορίσετε το μπλοκ στόχο, το διαμέρισμα και τη θέση για να αποθηκεύσετε το αρχείο εικόνας που διασώθηκε.

Ένα άλλο σημαντικό πράγμα που πρέπει να σημειωθεί είναι ότι στο Linux, το όνομα του μπλοκ εκχωρείται δυναμικά κατά την εκκίνηση και μετά την επανεκκίνηση, τα ονόματα των μπλοκ ενδέχεται να αλλάξουν. Επομένως, να είστε προσεκτικοί όταν σημειώνετε τα ονόματα των μπλοκ.

Τώρα, χρησιμοποιήστε την ακόλουθη σύνταξη για να διασώσετε το μπλοκ ως αρχείο εικόνας με ένα αρχείο καταγραφής στον ριζικό κατάλογο.

sudo ddrescue -ρε -rX / dev / [ ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ ] [ μονοπάτι / όνομα ] .img [ logfile_name ] .κούτσουρο

Σημείωση: Αντικαθιστώ [ΟΙΚΟΔΟΜΙΚΟ ΤΕΤΡΑΓΩΝΟ] , [διαδρομή/όνομα] του αρχείου εικόνας και [όνομα_αρχείου] με τα προτιμώμενα ονόματα ανάλογα.

Σε αυτό το παράδειγμα, ανακτώ το /dev/sda στον ριζικό κατάλογο με το όνομα αρχείου εικόνας ανάκτηση.img . Το αρχείο καταγραφής γνωστό και ως αρχείο χάρτη είναι απαραίτητο εάν θέλετε να συνεχίσετε την ανάκτηση ανά πάσα στιγμή.

sudo ddrescue -ρε -r2 / dev / sda2 recovery.img recovery.log

Στην παραπάνω εντολή χρησιμοποιούνται δύο σημαντικές σημαίες.

ρε -έμμεσος Χρησιμοποιείται για να πει στο εργαλείο να έχει άμεση πρόσβαση στο δίσκο αγνοώντας τη μνήμη cache του πυρήνα
rX –Επανάληψη-πάσες Χρησιμοποιείται για να πει στο εργαλείο να δοκιμάσει ξανά τον κακό τομέα X πολλές φορές

Κατά την εκτέλεση της παραπάνω εντολής, θα παρατηρήσετε δύο αρχεία να εμφανίζονται στο πρόγραμμα περιήγησης αρχείων με τα ονόματα ανάκτηση.img και ανάκτηση.log .

Ο χρόνος ανάκτησης εξαρτάται από το μέγεθος του μπλοκ εισόδου και τη ζημιά. Εάν ανακτάτε ένα μεγάλο μπλοκ, συνιστώ να έχετε ένα αρχείο καταγραφής, επειδή μπορεί να χρειαστούν αρκετές ώρες ή και ημέρες για να ολοκληρωθεί η διαδικασία.

Η έξοδος της παραπάνω εντολής δίνεται παρακάτω:

Στην εικόνα εξόδου, ipos είναι η θέση εισόδου του αρχείου εισόδου από όπου ξεκινά η αντιγραφή και το έλκη είναι η θέση εξόδου στο αρχείο εξόδου όπου γράφονται τα δεδομένα.

ο μη δοκιμασμένο είναι το μέγεθος του μπλοκ δεν εκκρεμεί προς δοκιμή. ο διασώθηκε υποδεικνύει το μέγεθος του μπλοκ που ανακτήθηκε με επιτυχία. ο % διασώθηκε υποδεικνύει την επιτυχή ανάκτηση δεδομένων σε ποσοστό. Οι οροι, μη κομμένο , μη σκραπ , κακός τομέας , και κακές περιοχές είναι αυτονόητα. Ωστόσο, το λάθη ανάγνωσης Ο όρος υποδηλώνει τις αποτυχημένες προσπάθειες ανάγνωσης σε αριθμούς.

ο χρόνος εκτέλεσης δείχνει τον χρόνο που χρειάστηκε το εργαλείο για να ολοκληρώσει τη διαδικασία, ενώ το χρόνος που απομένει είναι ο χρόνος που απομένει για την ολοκλήρωση της διαδικασίας ανάκτησης. Η παραπάνω έξοδος δείχνει τον υπολειπόμενο χρόνο 0 επειδή η διαδικασία έχει ολοκληρωθεί, διαβάστε την έξοδο στην παρακάτω εικόνα μιας ημιτελούς διαδικασίας.

Ας δούμε τι παίρνουμε στο αρχείο καταγραφής. για να ανοίξετε το αρχείο καταγραφής που δημιουργήθηκε, χρησιμοποιήστε το vim recovery.log εντολή.

ο τρέχουσα κατάσταση είναι + που σημαίνει ότι η διαδικασία έχει ολοκληρωθεί, ενώ το current_pos είναι η θέση στο μπλοκ.

Μια λίστα με τις τρέχουσες καταστάσεις δίνεται στον παρακάτω πίνακα:

? Αντιγραφή
* Γαρνίρισμα
/ Διάλυση
Επανάληψη
φά Συμπλήρωση των καθορισμένων μπλοκ
σολ Δημιουργία του αρχείου καταγραφής
+ Η διαδικασία έχει ολοκληρωθεί

Κάτω από αυτό, το αρχείο καταγραφής έχει ενδείξεις κατάστασης των μπλοκ που είχαν διασωθεί προηγουμένως με τη μορφή χαρακτήρων που αναφέρονται παρακάτω:

? Το μπλοκ δεν είναι δοκιμασμένο
* Το μη κομμένο αποτυχημένο μπλοκ
/ Το μη διαλυμένο αποτυχημένο μπλοκ
Το αποτυχημένο μπλοκ του κακού τομέα
+ Τελειωμένο μπλοκ

Επαναφορά του αρχείου εικόνας σε νέο μπλοκ

Μόλις ολοκληρώσετε τη διαδικασία ανάκτησης και έχετε το αρχείο εικόνας. Μπορεί τώρα να θέλετε να μεταφερθεί στη νέα μονάδα δίσκου από μια κατεστραμμένη μονάδα δίσκου. Για να μετακινήσετε το αρχείο εικόνας σε ένα νέο μπλοκ, πρώτα συνδέστε αυτό το μπλοκ στο σύστημα και, στη συνέχεια, αναγνωρίστε το όνομα του μπλοκ χρησιμοποιώντας το lsblk εντολή.

Ας υποθέσουμε ότι είναι /dev/sdb , χρησιμοποιήστε την ακόλουθη εντολή για να αντιγράψετε την εικόνα σε νέο μπλοκ.

sudo ddrescue -φά ανάκτηση.img / dev / sdb logfile.log

ο -φά Η σημαία χρησιμοποιείται για την αντικατάσταση του νέου μπλοκ εάν υπάρχουν δεδομένα. Λάβετε υπόψη ότι το όνομα του αρχείου καταγραφής πρέπει να είναι διαφορετικό για να διατηρείται χωριστά από το αρχείο καταγραφής που ήταν αποθηκευμένο προηγουμένως.

Η παραπάνω λειτουργία μπορεί επίσης να γίνει χρησιμοποιώντας το δδ , μια άλλη ισχυρή εντολή που χρησιμοποιείται για την αντιγραφή των αρχείων.

sudo δδ αν =recovery.img του = / dev / sdb

Πριν κάνετε μια επαναφορά, έχετε κατά νου ότι το νέο μπλοκ πρέπει να είναι αρκετά μεγάλο ώστε να διατηρεί ολόκληρο το μπλοκ που έχει ανακτηθεί. για παράδειγμα, εάν το μπλοκ ανάκτησης είναι 5 GB, το νέο μπλοκ θα πρέπει να είναι μεγαλύτερο από 5 GB.

Εάν το ανακτημένο αρχείο εικόνας εμφανίζει πολλά σφάλματα, τότε μπορούν να επιδιορθωθούν χρησιμοποιώντας το fsck εντολή στο Linux σε κάποιο βαθμό. Ενώ βρίσκεστε στα Windows, μπορείτε να χρησιμοποιήσετε το CHKDSK ή SFC εντολές για να γίνει αυτό. Ωστόσο, η ανάκτηση εξαρτάται από τον αριθμό των σφαλμάτων που δημιούργησε το κατεστραμμένο αρχείο.

Τώρα, η διαδικασία ανάκτησης και αποκατάστασης έχει ολοκληρωθεί. Ένα άλλο σημαντικό πράγμα που πρέπει να σημειώσετε είναι ότι μπορείτε να ανακτήσετε ένα κατεστραμμένο μπλοκ απευθείας σε άλλο μπλοκ, αντί να δημιουργήσετε ένα αρχείο εικόνας και στη συνέχεια να το αντιγράψετε στο νέο μπλοκ. Λοιπόν, στην επόμενη ενότητα, καλύπτω αυτή τη διαδικασία λεπτομερώς.

Ανάκτηση μπλοκ σε άλλο μπλοκ

Για να ανακτήσετε ένα μπλοκ απευθείας σε ένα νέο μπλοκ, πρώτα συνδέστε το μπλοκ στο σύστημα και χρησιμοποιήστε το ξανά lsblk εντολή για τον προσδιορισμό του ονόματος του μπλοκ. Τα λανθασμένα ονόματα μπλοκ μπορεί να ανακατέψουν ολόκληρη τη διαδικασία και μπορεί να χάσετε δεδομένα.

Αφού προσδιορίσετε το μπλοκ προέλευσης και το μπλοκ προορισμού, χρησιμοποιήστε την ακόλουθη εντολή για να ανακτήσετε το μπλοκ:

sudo ddrescue -ρε -φά -r2 / dev / [ πηγή ] / dev / [ προορισμός ] backup.log

Ας υποθέσουμε /dev/sdb είναι το μπλοκ προορισμού, οπότε για να αντιγράψετε το /dev/sda κατάλογο στο νέο μπλοκ χρήση:

sudo ddrescue -ρε -φά -r2 / dev / sda / dev / sdb backup.log

Και πάλι, δείτε τις κρίσιμες σκέψεις που αναφέρθηκαν στις προηγούμενες ενότητες πριν επιχειρήσετε αυτήν τη διαδικασία.

Ανάκτηση συγκεκριμένων δεδομένων από τα αρχεία εικόνας που έχουν ανακτηθεί

Σε πολλές περιπτώσεις, ο σκοπός της ανάκτησης δεδομένων είναι η εύρεση των συγκεκριμένων αρχείων από κατεστραμμένες μονάδες δίσκου. Για να αποκτήσετε πρόσβαση στο συγκεκριμένο αρχείο, πρέπει να προσαρτήσετε το αρχείο εικόνας. Στο Linux, το ανακτημένο αρχείο εικόνας μπορεί να εξερευνηθεί χρησιμοποιώντας το βουνό εντολή.

Πριν προσαρτήσετε το αρχείο εικόνας, δημιουργήστε έναν φάκελο ή έναν κατάλογο στον οποίο θέλετε να εξαγάγετε το περιεχόμενο του αρχείου εικόνας.

mkdir RecoveryMount

Στη συνέχεια, προσαρτήστε το αρχείο εικόνας χρησιμοποιώντας:

sudo βουνό επαναφορά βρόχου.img ~ / RecoveryMount

Η σημαία -o υποδεικνύει τις επιλογές, ενώ η επιλογή βρόχου χρησιμοποιείται για την αντιμετώπιση του αρχείου εικόνας ως συσκευή μπλοκ.

Τώρα έχετε πρόσβαση στα περιεχόμενα του αρχείου εικόνας, όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

Για να αποσυνδέσετε το μπλοκ, χρησιμοποιήστε το ποσό εντολή.

sudo ποσό ~ / RecoveryMount

Προηγμένες δυνατότητες

Για να ξεκινήσετε την ανάκτηση από ένα συγκεκριμένο σημείο, χρησιμοποιήστε το -Εγώ σημαία ή –εισαγωγή-θέση . Θα πρέπει να είναι σε byte, από προεπιλογή είναι 0 bytes. Αυτό είναι σημαντικό για να συνεχίσετε την αντιγραφή από ένα συγκεκριμένο σημείο. Για παράδειγμα, εάν θέλετε να ξεκινήσετε τη διαδικασία αντιγραφής από το σημείο των 10 GB, χρησιμοποιήστε την ακόλουθη εντολή.

sudo ddrescue -i10GiB / dev / sda imagefile.img logfile.log

Για να ορίσετε το μέγιστο μέγεθος της συσκευής εισόδου, το -μικρό θα χρησιμοποιηθεί η σημαία. ο -μικρό σημαίνει μέγεθος και μπορεί επίσης να χρησιμοποιηθεί ως -Μέγεθος σε byte. Εάν το εργαλείο δεν αναγνωρίσει το μέγεθος του αρχείου εισόδου, χρησιμοποιήστε αυτήν την επιλογή για να το καθορίσετε.

sudo ddrescue -s10GiB / dev / sda imagefile.img logfile.log

ο -παρακαλώ Η επιλογή μπορεί να είναι αρκετά βολική, καθώς ζητά επιβεβαίωση των μπλοκ εισόδου και εξόδου πριν ξεκινήσει η διαδικασία αντιγραφής. Όπως αναφέρθηκε προηγουμένως, το σύστημα εκχωρεί δυναμικά ονόματα στα μπλοκ και αλλάζουν κατά την επανεκκίνηση. Έτσι, σε αυτή την περίπτωση, αυτή η επιλογή μπορεί να είναι χρήσιμη.

sudo ddrescue --παρακαλώ / dev / sda imagefile.img logfile.log

Επιπλέον, μια λίστα με κάποιες άλλες επιλογές αναφέρεται παρακάτω:

-ΑΝΤΙΣΤΡΟΦΗ Για να αντιστρέψετε την κατεύθυνση της αντιγραφής
-q -αρκετά Για να αποκρύψετε όλα τα μηνύματα εξόδου
-σε -πολύλογος Για να το αναλύσουμε, όλα τα μηνύματα εξόδου
–προκατανομή Για να εκχωρήσετε εκ των προτέρων χώρο αποθήκευσης για το αρχείο εξόδου
–προεπισκόπηση δεδομένων Η προεπιλογή των γραμμών εμφάνισης της πιο πρόσφατης ανάγνωσης δεδομένων είναι 3 γραμμές

Πώς λειτουργεί το ddrescue

Το ddrescue χρησιμοποιεί έναν ισχυρό αλγόριθμο ανάκτησης που χωρίζεται σε τέσσερις φάσεις:

1. Αντιγραφή

2. Κόψιμο

3. Ξύσιμο

4. Επανάληψη

Η εκτέλεση του αλγόριθμου ddrescue φαίνεται στην παρακάτω εικόνα.

συμπέρασμα

ο ddrescue είναι ένα ισχυρό εργαλείο ανάκτησης που χρησιμοποιείται για την ανάκτηση δεδομένων από μια κατεστραμμένη ή αποτυχημένη μονάδα δίσκου σε μια άλλη μονάδα δίσκου αντιγράφοντας τα δεδομένα. Μπορεί να εγκατασταθεί αβίαστα σε οποιαδήποτε διανομή Linux με τη βοήθεια του προεπιλεγμένου διαχειριστή πακέτων. Σημειώστε τη σημαντική παράμετρο πριν χρησιμοποιήσετε αυτό το εργαλείο που αναφέρεται σε αυτόν τον οδηγό. Η διαδικασία αντιγραφής δεδομένων είναι απλή, αποπροσαρτήστε τη μονάδα δίσκου και χρησιμοποιήστε την εντολή ddrescue με το όνομα της μονάδας προέλευσης και το όνομα της μονάδας προορισμού. Μην ξεχάσετε να χρησιμοποιήσετε το αρχείο καταγραφής, καθώς είναι πολύ χρήσιμο να συνεχίσετε τη διαδικασία ανάκτησης.