שחזר נתונים בלינוקס באמצעות ddrescue

Shzr Ntwnym Blynwqs B Mz Wt Ddrescue



ה-ddrescue הוא כלי המשמש לשחזור נתונים מקובץ או התקן בלוק כגון כונן קשיח, SSDs, דיסקי RAM, תקליטורים, DVD והתקני אחסון USB. הוא מעתיק נתונים ממכשיר בלוק אחד למשנהו, משאיר את בלוקי הנתונים הפגומים ומעביר רק את הטובים. ה-ddrescue הוא כלי שחזור רב עוצמה שהוא אוטומטי לחלוטין מכיוון שאינו דורש שום הפרעה במהלך פעולת השחזור. יתר על כן, ניתן לעצור ולחדש אותו בכל עת הודות ל- קובץ מפת ddrescue . תכונות מפתח נוספות של ddrescue מפורטות להלן:
  • זה לא מחליף את הנתונים המשוחזרים אלא ממלא את החסר במקרה של התאוששות איטרטיבית. עם זאת, ניתן לקצץ אותו אם הכלי מקבל הוראה לעשות זאת במפורש.
  • שחזר נתונים לקובץ בודד ממספר קבצים או בלוקים.
  • תומך במספר סוגים של ממשקי התקנים כגון SATA, ATA, SCSI, כונני MFM, תקליטונים וכרטיסי SD.

במדריך זה, אני אבדוק את כלי שחזור הנתונים השימושי להפליא הזה. אדון גם בתהליך ההתקנה שלו, וכיצד להשתמש בו כדי לשחזר התקן או מחיצה חסימה.

הערה: אני משתמש בהפצת לינוקס (Ubuntu 22.04) עבור ההוראות במדריך זה. תהליך ההתקנה של כלי השירות ddrescue עשוי להיות שונה, אך ההוראות יהיו זהות בכל ההפצות של לינוקס.







מתקין ddrescue

כדי להתקין ddrescue על לינוקס, במיוחד אובונטו והטעמים שלו או מבוסס דביאן הפצות, השתמש ב:



סודו מַתְאִים להתקין gddrescue

כדי להתקין אותו REHL , פדורה , ו CentOS , הפעל תחילה את נעים (חבילות נוספות עבור Linux Enterprise).



סודו יאם להתקין שחרור חם

הפקודה לעיל מיועדת לגרסאות חדשות יותר של ההפצה המתאימה.





לאחר מכן בצע את הפקודה הבאה כדי להתקין את ddrescue:

סודו יאם להתקין ddrescue

עבור הפצות לינוקס מבוססות Arch כגון Arch-Linux ו מנג'רו , השתמש בפקודה הנתונה להלן כדי להתקין את כלי השחזור ddrescue.



סודו פקמן ddrescue

מכיוון שאני משתמש באובונטו 22.04, אשתמש במנהל החבילות של APT כדי להתקין אותו.

הבנת יסודות

לפני השימוש בכלי ddrescue לשחזור נתונים, הייתי ממליץ למשתמשים שחדשים בתהליך השחזור להבין כמה מוסכמות שמות של לינוקס.

לינוקס מזהה בלוקים (התקנים) כקבצים וממקמת אותם ב- /dev מַדרִיך. כדי לרשום את הקבצים בספריית /dev, השתמש ב- ls /dev פקודה.

ה כוננים קשיחים (בלוקים אחסון) מיוצגים עם sd ואחריו אלפבית; במקרה של התקני אחסון מרובים הקבצים יוצגו בתור /dev/sd א, /dev/sd ב, וכולי.

אם יש להתקן האחסון מחיצות , אז הם יוצגו על ידי מספר עם שם קובץ הכונן המתאים, כגון /dev/sda 1 , /dev/sda 2 , וכולי.

כדי לרשום את כל הבלוקים ושאר התקנים המחוברים למערכת, השתמש בבלוק הרשימה lsblk פקודה:

lsblk

הפקודה ddrescue יכולה לשחזר את כל הבלוק (המכיל MBR ומחיצות) או גם מחיצה. מצד שני, אם אתה צריך לשחזר רק קבצים ספציפיים ממחיצה ספציפית, אז עדיף לשחזר את המחיצה במקום את כל הבלוק.

שיקולים חשובים

לפני השימוש בכלי השירות ddrescue, יש לקחת בחשבון כמה נקודות מפתח:

  • אל תנסה לשחזר בלוק רכוב, הבלוק לא צריך להיות אפילו במצב קריאה בלבד.
  • אל תנסה לתקן בלוק עם שגיאות קלט/פלט.
  • המערכת יכולה לשנות את שמות התקני הקלט והפלט בעת אתחול מחדש. ודא ששמות המכשירים נכונים לפני התחלת תהליך ההעתקה.
  • אם אתה משתמש בבלוק נפרד כהתקן פלט, כל הנתונים במכשיר יוחלפו.

באמצעות ddrescue

לאחר התקנת כלי השירות ddrescue והבנת מוסכמות השמות, השלב הבא הוא לזהות את הדיסק הפגום ולשחזר אותו באמצעות הכלי ddrescue.

שחזור הבלוק הפגום

הדוגמה הראשונה תקיף את תהליך שחזור הבלוק כולו. ראשית, רשום את הבלוקים באמצעות ה- lsblk פקודה:

lsblk -או שם, גודל, FSTYPE

ה -או flag משמש כדי לציין איזה סוג מידע (שדות) הפקודה צריכה להוציא. הזכרתי את שֵׁם , גודל , ו FSTYPE או סוג מערכת הקבצים.

כעת, אתה יכול לזהות את בלוק היעד, המחיצה והמיקום כדי לשמור את קובץ התמונה שניצל.

דבר נוסף שחשוב לציין הוא שב-Linux, שם הבלוק מוקצה באופן דינמי באתחול ולאחר אתחול מחדש, שמות הבלוקים עשויים להשתנות. לכן, היזהר בעת רישום שמות הבלוקים.

כעת, השתמש בתחביר הבא כדי להציל את הבלוק כקובץ תמונה עם קובץ יומן בספריית השורש.

סודו ddrescue -rX / dev / [ לַחסוֹם ] [ נָתִיב / שֵׁם ] .img [ logfile_name ] .עֵץ

הערה: החלף [לַחסוֹם] , [נתיב/שם] של קובץ התמונה, ו [שם_logfile] עם השמות המועדפים בהתאם.

בדוגמה זו, אני משחזר את ה /dev/sda בספריית השורש עם שם קובץ התמונה recovery.img . קובץ היומן המכונה גם קובץ המפה חיוני אם ברצונך לחדש את השחזור בכל עת.

סודו ddrescue -r2 / dev / sda2 recovery.img recovery.log

שני דגלים חשובים משמשים בפקודה לעיל.

ד -עקיף משמש כדי לומר לכלי לגשת ישירות לדיסק תוך התעלמות ממטמון הליבה
rX -ניסיון חוזר משמש כדי לומר לכלי לנסות שוב את הסקטור הפגום X מספר פעמים

בביצוע הפקודה לעיל, תבחין בשני קבצים המופיעים בדפדפן הקבצים עם השמות recovery.img ו recovery.log .

זמן ההתאוששות תלוי בגודל בלוק הקלט ובנזק. אם אתה משחזר בלוק גדול, אני ממליץ להחזיק קובץ יומן כי זה יכול לקחת כמה שעות או אפילו ימים כדי להשלים את התהליך.

הפלט של הפקודה לעיל ניתן להלן:

בתמונת הפלט, ipos הוא מיקום הקלט של קובץ הקלט שממנו מתחיל ההעתקה וה- כיבים הוא מיקום הפלט בקובץ הפלט שבו הנתונים נכתבים.

ה לא נוסה הוא גודל הבלוק אינו ממתין לניסיון. ה הצילו מציין את גודל הבלוק ששוחזר בהצלחה. ה pct ניצל מציין שחזור מוצלח של נתונים באחוזים. התנאים, לא גזוז , ללא גרוטאות , מגזר רע , ו אזורים רעים הם מובנים מאליהם. אולם, ה לקרוא שגיאות מונח מציין את ניסיונות הקריאה הכושלים במספרים.

ה זמן ריצה מראה את הזמן שלקח הכלי להשלמת התהליך, בעוד ש- זמן שנותר הוא הזמן שנותר להשלמת תהליך השחזור. הפלט שלמעלה מציג את הזמן שנותר 0 מכיוון שהתהליך הסתיים, קרא את הפלט בתמונה הבאה של תהליך לא גמור.

בואו נראה מה אנחנו מקבלים בקובץ היומן; כדי לפתוח את קובץ היומן שנוצר, השתמש ב- vim recovery.log פקודה.

ה מצב נוכחי הוא + כלומר התהליך הסתיים, בעוד ה- current_pos הוא המיקום על הבלוק.

רשימה של סטטוסים נוכחיים מוצגת בטבלה הבאה:

? הַעתָקָה
* זְמִירָה
/ גריטה
מנסה שוב
ו מילוי הבלוקים שצוינו
G יצירת קובץ היומן
+ התהליך הסתיים

מתחת לזה, לקובץ היומן יש אינדיקציות סטטוס של הבלוקים שניצלו בעבר בצורה של תווים המפורטים להלן:

? הבלוק לא נוסה
* החסימה הלא גזומה נכשלה
/ הבלוק שלא נסגר נכשל
חסימת המגזר הרע נכשל
+ בלוק סיים

שחזור קובץ התמונה לבלוק חדש

לאחר שתסיים עם תהליך השחזור ויש לך את קובץ התמונה. ייתכן שכעת תרצה שהוא יעבור לכונן החדש מכונן פגום. כדי להעביר את קובץ התמונה לבלוק חדש, ראשית, חבר את הבלוק הזה למערכת ולאחר מכן זהה את שם הבלוק באמצעות lsblk פקודה.

בואו נניח שכן /dev/sdb , השתמש בפקודה הבאה כדי להעתיק את התמונה לבלוק חדש.

סודו ddrescue recovery.img / dev / sdb logfile.log

ה הדגל משמש כדי להחליף את הבלוק החדש אם יש נתונים. זכור ששם קובץ היומן חייב להיות שונה כדי לשמור אותו נפרד מקובץ היומן שנשמר קודם לכן.

ניתן לבצע את הפעולה לעיל גם באמצעות dd , פקודה חזקה נוספת המשמשת להעתקת הקבצים.

סודו dd אם =recovery.img שֶׁל = / dev / sdb

לפני ביצוע שחזור, זכור שהגוש החדש חייב להיות גדול מספיק כדי לשמור על כל הבלוק המשוחזר; לדוגמה, אם בלוק השחזור הוא 5GB, הבלוק החדש צריך להיות גדול מ-5GB.

אם קובץ התמונה המשוחזר מציג הרבה מהשגיאות, ניתן לתקן אותן באמצעות fsck פקודה בלינוקס במידה מסוימת. כשאתה ב-Windows, אתה יכול לעשות שימוש ב- CHKDSK אוֹ SFC פקודות לעשות זאת. עם זאת, השחזור תלוי במספר השגיאות שהקובץ הפגום יצר.

כעת, תהליך השחזור והשיקום נעשים. דבר נוסף שחשוב לשים לב אליו הוא שאתה יכול לשחזר בלוק פגום ישירות על בלוק אחר, במקום ליצור קובץ תמונה ואז להעתיק אותו לבלוק החדש. ובכן, בסעיף הבא, אני מכסה את התהליך הזה בפירוט.

שחזור בלוק לבלוק אחר

כדי לשחזר בלוק ישירות לבלוק חדש, תחילה חבר את הבלוק למערכת ושוב השתמש lsblk פקודה כדי לזהות את שם הבלוק. שמות בלוקים שגויים יכולים לבלבל את התהליך כולו ואתה עלול לאבד נתונים.

לאחר זיהוי בלוק המקור ובלוק היעד, השתמש בפקודה הבאה כדי לשחזר את הבלוק:

סודו ddrescue -r2 / dev / [ מָקוֹר ] / dev / [ יַעַד ] backup.log

בואו נניח /dev/sdb הוא בלוק היעד, אז כדי להעתיק את /dev/sda ספרייה לשימוש הבלוק החדש:

סודו ddrescue -r2 / dev / sda / dev / sdb backup.log

שוב, ראה את השיקולים הקריטיים שהוזכרו בסעיפים הקודמים לפני שתנסה את התהליך הזה.

שחזור נתונים ספציפיים מקובצי התמונה המשוחזרים

במקרים רבים, מטרת שחזור הנתונים היא למצוא את הקבצים הספציפיים מכוננים פגומים. כדי לגשת לקובץ הספציפי עליך להעלות את קובץ התמונה. ב-Linux, ניתן לחקור את קובץ התמונה המשוחזר באמצעות ה- הר פקודה.

לפני הרכבת קובץ התמונה, צור תיקיה או ספרייה שבה ברצונך לחלץ את תוכן קובץ התמונה.

mkdir RecoveryMount

לאחר מכן, העלה את קובץ התמונה באמצעות:

סודו הר -או לולאה recovery.img ~ / RecoveryMount

הדגל -o מציין את האפשרויות, בעוד אפשרות הלולאה משמשת כדי להתייחס לקובץ התמונה כאל התקן בלוק.

כעת יש לך גישה לתוכן קובץ התמונה, כפי שמוצג בצילום המסך הבא.

כדי להסיר את הבלוק, השתמש ב- umount פקודה.

סודו umount ~ / RecoveryMount

מאפיינים מתקדמים

כדי להתחיל את השחזור מנקודה מסוימת, השתמש ב- -אני דגל או -עמדה-קלט . זה צריך להיות בבתים, כברירת מחדל 0 בתים. זה חשוב כדי לחדש את ההעתקה מנקודה מסוימת. לדוגמה, אם ברצונך להתחיל את תהליך ההעתקה מנקודת ה-10 GB, השתמש בפקודה הבאה.

סודו ddrescue -i10GiB / dev / sda imagefile.img logfile.log

כדי להגדיר את הגודל המרבי של התקן הקלט, ה- ייעשה שימוש בדגל. ה מסמל גודל וניתן להשתמש בו גם בתור -גודל בבתים. אם הכלי לא מצליח לזהות את גודל קובץ הקלט, השתמש באפשרות זו כדי לציין אותו.

סודו ddrescue -s10GiB / dev / sda imagefile.img logfile.log

ה -לִשְׁאוֹל האפשרות יכולה להיות שימושית למדי, מכיוון שהיא מבקשת לאשר את בלוקי הקלט והפלט לפני תחילת תהליך ההעתקה. כפי שצוין קודם לכן, המערכת מקצה באופן דינמי שמות לבלוקים, והם משתנים עם אתחול מחדש. אז, במקרה זה, אפשרות זו יכולה להיות שימושית.

סודו ddrescue --לִשְׁאוֹל / dev / sda imagefile.img logfile.log

יתר על כן, רשימה של כמה אפשרויות אחרות מוזכרת להלן:

-לַהֲפוֹך כדי להפוך את כיוון ההעתקה
-דַי כדי לדכא את כל הודעות הפלט
-מִלוּלִי כדי לפרט, כל הודעות הפלט
-עמ' -הקצאה מראש כדי להקצות מראש אחסון לקובץ הפלט
-תצוגה מקדימה של נתונים שורות התצוגה של ברירת המחדל האחרונה של קריאת הנתונים היא 3 שורות

איך ddrescue עובד

ה-ddrescue משתמש באלגוריתם שחזור רב עוצמה המחולק לארבעה שלבים:

1. העתקה

2. חיתוך

3. גרידה

4. מנסה שוב

ביצוע אלגוריתם ddrescue מוצג בתמונה הבאה.

סיכום

ה ddrescue הוא כלי שחזור רב עוצמה המשמש לשחזור נתונים מכונן פגום או פגום לכונן אחר על ידי העתקת הנתונים. ניתן להתקין אותו ללא מאמץ בכל הפצת לינוקס בעזרת מנהל החבילות המוגדר כברירת מחדל. שימו לב לשיקול החשוב לפני השימוש בכלי זה המוזכר במדריך זה. תהליך העתקת הנתונים הוא פשוט, הסר את הכונן והשתמש בפקודה ddrescue עם שם כונן המקור ושם כונן היעד. אל תשכח להשתמש בקובץ היומן, מכיוון שהוא הופך להיות שימושי למדי לחדש את תהליך השחזור.