ตั้งใจทำ dd / dev / sda โดยไม่ตั้งใจ


35

ฉันเขียนภาพ ISO sudo dd if=image.iso of=/dev/sdaในฮาร์ดดิสก์ของฉันโดยใช้ ฉันหมายถึง/dev/sdcและตอนนี้การรันsudo fdisk -lจะคืนพาร์ติชั่นเดียวบน / dev / sda ในขณะที่ควรจะเป็น 6 มันเป็นไปได้หรือไม่ที่จะกู้คืนข้อมูลของฉัน

ฉันยังไม่ได้ปิด (รีบูต) คอมพิวเตอร์ของฉัน


24
ddได้แสดงหน้า 'Data Destroyer' ที่น่าเกลียดอีกครั้ง :-( มันเขียนทับส่วนหัวของไดรฟ์ (ตรงกับขนาดของไฟล์ iso) ข้อมูลที่หายไปคุณได้สำรองข้อมูลล่าสุดของ ไฟล์ที่คุณไม่สามารถสูญเสียได้มิฉะนั้นคุณต้องเตรียมตัวสำหรับงานหนักเพื่อซ่อมแซมตารางพาร์ทิชันและระบบไฟล์ที่ดีที่สุดในการคัดลอกโคลนโดยใช้Testdiskและหากล้มเหลวก็ยิ่งพยายามกู้คืนข้อมูลไฟล์ให้พบ 'เบื้องหลัง' ส่วนของไดรฟ์ที่เขียนทับคุณสามารถใช้PhotoRecเพื่อจุดประสงค์นั้นดูลิงค์นี้ cgsecurity.org
sudodus

6
เป็นไดรฟ์ gpt พาร์ติชันมันมีข้อดีของตารางพาร์ติชันสำรองเมื่อสิ้นสุดไดรฟ์ เฉพาะจุดเริ่มต้นของขนาดไดรฟ์ ISO เท่านั้นที่ถูกเขียนทับทั้งหมดและหายไป ขึ้นอยู่กับขนาดของพาร์ติชั่นคุณอาจกู้คืนพาร์ติชั่นอื่นบางส่วนหรือส่วนใหญ่ได้
oldfred

10
@sudodus " ddได้แสดงหน้าตา 'Data Destroyer' ที่น่าเกลียดอีกครั้ง" - ยกเว้นว่าไม่มีส่วนddเกี่ยวข้องกับการเข้าถึงอุปกรณ์ดิสก์ในฐานะรูทโดยตรง เครื่องมืออื่น ๆ อาจมีผลเช่นเดียวกัน cat image.iso > /dev/sdaจะมีผลเช่นเดียวกันแน่นอน pv ...หรือ หรือเท่าที่vi /dev/sdaควร ในความเป็นจริงนี้ทำให้ผมนึกถึงเรื่องที่ Linus Torvalds พยายามที่จะโทรไปยังเครือข่ายที่ใช้อุปกรณ์ไดรฟ์ของเขาอย่างหนักมากกว่าอุปกรณ์โมเด็มเขียนทับจุดเริ่มต้นของไดรฟ์ของเขากับสายโทรศัพท์ในการจับมือกัน ddไม่มีอะไรจะทำอย่างไรกับ
marcelm

4
.isoไฟล์ของคุณใหญ่แค่ไหน คุณขัดจังหวะddหรือทำงานจนเสร็จหรือไม่
marcelm

4
@marcelm คุณพูดถูก แต่ในชีวิตจริงผู้คนกำลังใช้ddสิ่งนี้ (เพื่อจุดประสงค์นี้) ดังนั้นฉันคิดว่าคำเตือน 'Data Destroyer' นั้นมีความเกี่ยวข้องแม้ว่าคำเตือนที่ถูกต้องสมบูรณ์ควรจะยาวกว่า: "อย่าใช้บรรทัดคำสั่งเหมือนsudo dd if=image.iso of=/dev/sdxโคลน อุปกรณ์เก็บข้อมูลใช้เครื่องมือที่ช่วยให้คุณระบุและเลือกอุปกรณ์เป้าหมายที่ถูกต้องและมีจุดตรวจสุดท้ายเพื่อให้คุณสามารถตรวจสอบอีกครั้งว่าคุณจะโคลนจากไฟล์ iso ไปยังอุปกรณ์เป้าหมายที่ถูกต้องเช่น StartupDiskCreator, ดิสก์, mkusb , Win32DiskImager "
sudodus

คำตอบ:


65

เมื่อคอมพิวเตอร์ของคุณยังเปิดอยู่คุณมีโอกาสที่จะบันทึกสิ่งต่าง ๆ ได้ดี

ขั้นแรกให้sysfsเปิดเผยเคอร์เนลในมุมมองหน่วยความจำของตารางพาร์ติชัน ตอนนี้เคอร์เนลของคุณไม่ได้อ่านตารางของดิสก์อีกครั้งและจะจดจำการแบ่งพาร์ติชันของคุณ ภายใน/sys/block/sda/ควรมีหนึ่งไดเรกทอรีสำหรับแต่ละพาร์ติชัน แต่ละไดเรกทอรีย่อยนั้นมีไฟล์startและไฟล์sizeซึ่งแสดงตำแหน่งและขนาดของพาร์ติชันในภาคต่างๆ เรียกใช้fdiskจากนั้นสร้างแต่ละพาร์ติชัน (ตามลำดับ!) พร้อมข้อมูลในsysfsไดเรกทอรี โปรดทราบว่าคุณจะต้องสร้างตารางพาร์ติชันใหม่ด้วย ตรวจสอบให้แน่ใจว่าตารางพาร์ติชันใหม่ของคุณเหมือนกับตารางก่อนหน้า คุณสามารถเช็คอิน/sys/block/sdaได้ ถ้าคุณเห็นsda1ถึงsda7ในขณะที่คุณมีพาร์ติชั่นเพียง 6 ตัวคุณอาจมี MBR และอาจเป็น GPT คุณต้องตั้งค่าสถานะและประเภทสำหรับพาร์ติชันเหล่านี้ ดู/etc/fstabและพยายามรวบรวมข้อมูลเกี่ยวกับประเภทของพาร์ติชั่นที่คุณมีจากนั้นตรวจสอบวิกิพีเดียเพื่อแปลงพาร์ติชั่นเหล่านั้นเป็นรหัสสำหรับโครงร่างการแบ่งพาร์ติชันของคุณ

เนื่องจากคุณดูเหมือนจะสามารถใช้ระบบไฟล์ของคุณได้อาจเป็นไปได้ว่าคุณddไม่ได้เขียนทับไฟล์ใด ๆ เนื่องจากบิตที่สำคัญส่วนใหญ่ของระบบไฟล์อยู่ข้างหน้า ตรวจสอบ/etc/fstabเพื่อดูว่าพาร์ติชันใดที่สอดคล้องกับส่วนของระบบของคุณจากนั้นใช้จำนวนข้อมูลที่ddคัดลอกเพื่อรับค่าประมาณจำนวนที่คุณ nuked ถ้าคุณจะเขียนข้อมูลทับเพียงส่วนหนึ่งของระบบแฟ้มที่ดีfsck อาจจะสามารถแก้ไขมันเล็กน้อย ( แต่คุณได้สูญเสียอันดีของข้อมูล)

/bootส่วนใหญ่แล้วคุณจะเขียนข้อมูลทับ คุณจะต้องติดตั้งเคอร์เนล (พร้อมaptitude) และติดตั้ง GRUB2 (พร้อมgrub-install) ใหม่อีกครั้ง (ซึ่งทำลายทั้งขั้นแรกและระยะที่สอง) GRUB2 ถูกกำหนดค่าด้วยไฟล์/etcดังนั้นคุณไม่ต้องสร้างอะไรขึ้นมาใหม่ด้วยตนเอง


15
"ตรวจสอบ/sys/block/sda/*/{start,end}และสร้างพาร์ติชั่นของคุณใหม่ด้วยข้อมูลนี้": คุณช่วยขยายให้หน่อยได้ไหม? มันไม่ได้เป็นการดำเนินการเล็กน้อยและดูเหมือนจะเป็นจุดหลักของคำตอบที่ดีของคุณ
terdon

เอาท์พุทที่ง่ายต่อการถอดรหัสพิมพ์เหล่านี้ที่เปลือกพรอมต์กับการกลับมาหลังจากที่แต่ละ ............... : sudo parted, unit s, print all,quit
Hannu

3
คัดลอกข้อมูลที่มีค่าไปยังไดรฟ์อื่น (เช่นแท่ง USB) ในขณะที่คุณค้นพบ ในกรณีที่ขั้นตอนการทำพาร์ทิชันนันทนาการไม่เป็นไปอย่างสมบูรณ์แบบคุณต้องการบันทึกสิ่งที่อยู่ในหน่วยความจำของคอมพิวเตอร์ที่ทำงานอยู่ นอกจากนี้คัดลอกไฟล์ที่มีค่าและ / หรือเล็กที่สุดของคุณ (รวมถึงไฟล์ที่ชอบ.bashrcและไฟล์ dot อื่น ๆ จากโฮมไดเร็กตอรี่ของคุณและอื่น ๆ/etcนอกเหนือจากข้อมูลจริงของคุณ) ไปยังดิสก์อื่นในขณะที่คอมพิวเตอร์ที่ทำงานอยู่ tar.gz เป็นรูปแบบที่ดีสำหรับการคัดลอกไดเรกทอรีทั้งหมด (เพราะเป็นการสงวนสิทธิ์และเนื้อหา)
Peter Cordes

เขาอาจจะต้องทำการฟอร์แมตสิ่งที่ / boot ซึ่งเป็นอันตรายเมื่อมีความไม่แน่นอนว่าเคอร์เนลคิดอย่างไรกับรูปแบบพาร์ติชั่นของคุณ ...
rackandboneman

1
@rackandboneman เคอร์เนลปฏิเสธที่จะอ่านตารางพาร์ติชันใหม่บนดิสก์ที่มีพาร์ติชั่นติดตั้งอยู่ การจัดรูป/bootแบบใหม่นี้ "ปลอดภัย" อย่างสมบูรณ์ (โมดูโลแท้จริงทุกอย่างเกี่ยวกับสถานการณ์นี้ ) เนื่องจากเคอร์เนลไม่แน่ใจเกี่ยวกับสิ่งใด
HTNW

21

ขออภัยที่ต้องอ่านเกี่ยวกับโชคร้ายของคุณ

ฉันเดาว่าคุณไม่มีการสำรองข้อมูลปัจจุบันและฉันขอโทษที่อ่านเกี่ยวกับโชคร้ายของคุณโดยใช้

sudo dd if=image.iso of=/dev/sdx

โดยที่คุณใช้อักษรระบุไดรฟ์x= aเพื่อให้คุณเขียนทับจุดเริ่มต้นของฮาร์ดดิสก์ที่คุณเก็บข้อมูลที่มีค่ามากมาย

คุณไม่ใช่คนแรกและฉันไม่กลัวคนสุดท้ายที่ได้รับผลกระทบจากปัญหานี้ ddได้รับการแนะนำในหลาย ๆ เว็บไซต์ที่จะใช้เช่นนี้ มันเป็นวิธีที่ทรงพลัง แต่อันตรายเพราะมันทำในสิ่งที่คุณบอกให้ทำโดยไม่มีคำถาม ด้วยเหตุนี้จึงมักมีชื่อเล่นว่า 'Data Destroyer'

@marcelm แสดงความคิดเห็นว่าชื่อเล่นนี้ไม่ยุติธรรม เขาเป็นคนที่เหมาะสมที่เขียนโดยตรงไปยังแฟ้มอุปกรณ์เป็นรากที่เป็นสาเหตุของความเสี่ยง ดังนั้นโปรดระวังว่าคุณสามารถเขียนทับไดรฟ์และทำลายข้อมูลที่มีค่าได้อย่างง่ายดายโดยการเขียนไปยังไฟล์อุปกรณ์ที่/dev/sdxเกี่ยวข้อง (เครื่องมือที่ปลอดภัยกว่าจะแสดงรายการเมื่อสิ้นสุดคำตอบนี้)

กู้คืนตารางพาร์ติชันระบบไฟล์และ / หรือเนื้อหาไฟล์

  • ทำสิ่งที่น้อยที่สุดเท่าที่จะทำได้ด้วยไดรฟ์และเหนือสิ่งอื่นใดอย่าเขียนอะไรลงไปเพราะจะทำให้สถานการณ์แย่ลงโดยการเขียนทับข้อมูลซึ่งยังคงเป็นไปได้ที่จะกู้คืน

  • หากข้อมูลของคุณมีค่าคุณควรทำงานกับสำเนาที่ลอกเลียนแบบไม่ใช่ไดรฟ์ต้นฉบับ (เขียนทับบางส่วน) ดูลิงค์นี้เลื่อนลงไปที่ 'การซ่อมแซมตารางพาร์ติชันขั้นสูงระบบไฟล์และ / หรือการกู้คืนไฟล์'

    ซ่อมแซมตารางพาร์ติชันและระบบไฟล์ของ pendrive

  • หากคุณมีตารางพาร์ทิชัน GUID, GPT มีการสำรองข้อมูลของตารางพาร์ทิชันในตอนท้ายของไดรฟ์และคุณอาจจะไม่สามารถที่จะเรียกคืนตารางพาร์ทิชันหลักจากตารางการสำรองข้อมูลนี้ใช้เครื่องมือ/dev/sda gdiskดูคู่มือman gdiskสำหรับรายละเอียด

  • ท่านสามารถจัดการเพื่อเรียกคืนตารางพาร์ทิชันและระบบไฟล์โดยใช้TestDiskจาก

    http://cgsecurity.org

    อ่านคำแนะนำที่เว็บไซต์ CGSecurity และลิงก์ที่ให้บริการโดย @ElderGeek พาร์ทิชันหายไปหลังจากไฟฟ้าดับขณะติดตั้ง

  • คุณสามารถจัดการกู้คืนตารางพาร์ติชั่นและระบบไฟล์โดยใช้gpart / gpartedตามลิงค์ของ @CSM

    HOWTO: กู้คืนพาร์ทิชันที่หายไปไปยังตารางพาร์ทิชันที่ถูกลบหรือเสียหาย

  • PhotoRec : หากคุณไม่สามารถกู้คืนตารางพาร์ทิชันและระบบไฟล์คุณยังสามารถกู้คืนข้อมูลไฟล์บางส่วนได้ ไฟล์ที่ส่วนหัวอาจ 1-1.5 GB ถูกเขียนทับและสูญหาย แต่ไฟล์ที่อยู่ด้านหลังของไดรฟ์นั้นยังคงอยู่ที่นั่น PhotoRec จากhttp://cgsecurity.orgเป็นเครื่องมือที่สามารถกู้คืนข้อมูล 'จากพื้นผิวไดรฟ์' โดยไม่มีระบบไฟล์ ข้อมูลทั่วไปในจุดเริ่มต้นของประเภทไฟล์ทั่วไปจะใช้สำหรับการระบุ

    ลิงค์ต่อไปนี้ให้รายละเอียดเกี่ยวกับ PhotoRec

    https://www.cgsecurity.org/wiki/PhotoRec

    คุณควรบันทึกไฟล์ไว้ในพาร์ติชันในไดรฟ์แยกต่างหาก

    ไม่สามารถกู้คืนโครงสร้างไดเรกทอรีได้และโดยทั่วไปจะไม่สามารถกู้คืนชื่อไฟล์ (และไม่ใช่สิทธิ์และความเป็นเจ้าของ) และมีปัญหาเมื่อไฟล์มีการแตกแฟรกเมนต์ แต่ PhotoRec จำนวนมากสามารถกู้คืนได้ รูปถ่ายและประเภทไฟล์ทั่วไปอื่น ๆ อีกมากมาย) แต่นี่เป็นเรื่องใหญ่ แต่ก็เป็นงานหนักที่ต้องลุยไฟล์ที่ไม่ได้เรียงลำดับจำนวนมากเพื่อระบุว่าไฟล์ใดที่มีความสำคัญจริง ๆ คุณควรเปลี่ยนชื่อเป็นชื่อไฟล์ที่มีความหมาย

เครื่องมือที่ปลอดภัยกว่าสำหรับการสร้างไดรฟ์ USB บูตด้วย Ubuntu

ในอนาคตโปรดใช้เครื่องมือที่ช่วยให้คุณระบุและเลือกอุปกรณ์เป้าหมายที่ถูกต้องและมีจุดตรวจสุดท้ายเพื่อให้คุณสามารถตรวจสอบซ้ำได้ว่าคุณจะโคลนจากไฟล์ iso ไปยังอุปกรณ์เป้าหมายที่ถูกต้องตัวอย่างเช่น

  • ใน Ubuntu: เครื่องมือสร้างดิสก์เริ่มต้นของ Ubuntu (ใน Ubuntu 16.04 LTS และรุ่นใหม่กว่า)
  • ใน Linux:

    • ดิสก์นามแฝงgnome-disks,
    • mkusb ,
  • ใน Windows: Win32DiskImager

คุณยังสามารถใช้เครื่องมือการแยกซึ่งเป็นจุดตรวจสอบขั้นสุดท้ายเช่นกัน

  • ใน Windows: รูฟัส ,
  • ใน Ubuntu, Windows, MacOS: UNetbootin

1
ฉันสามารถรับรอง Testdisk ของ cgsecurity ได้ผลดีกว่าทางเลือกอื่น ๆ ที่ฉันเคยลองมาในอดีตที่ Testdisk เป็นคนเดียวที่จัดการเพื่อกอบกู้สิ่งที่มีประโยชน์ แต่ต้องระวังตัวเล็ก ๆ ที่เป็นค่าเริ่มต้นเพื่อพยายามกู้คืนพาร์ติชันของคุณบนไดรฟ์เอง !! xx
hanshenrik

1
+1 testdiskฉันยังสามารถรับรอง นอกจากนี้สคริปต์ตัวตัดเพื่อป้องกันddการเขียนไปยัง / sda / sdb / ของคุณเป็นความคิดที่ดีเช่นกัน
WinEunuuchs2Unix

19

โดยddคำสั่งของคุณคุณเขียนทับตารางพาร์ทิชันของ / dev / sda และข้อมูลทั้งหมดเท่าที่ขนาดของ image.iso ไป

ดังนั้นสิ่งที่ดีที่สุดที่คุณสามารถทำได้คือการกู้คืนตารางพาร์ติชั่นของคุณ (ด้วยขนาดที่แน่นอน) เพื่อกู้คืนพาร์ติชั่นอย่างน้อยตอนท้ายของ / dev / sda


1
หากคุณต้องการทราบขนาดที่แน่นอนให้ดูวรรคสองของคำตอบนี้
wizzwizz4

16

ขาดการกู้คืนจากการสำรองข้อมูลไม่มีวิธีการกู้คืนเต็ม DD ได้เขียนทับตารางพาร์ติชันและข้อมูลบางส่วนของอุปกรณ์


19
ฉันเดาว่าฉันควรทิ้งการสำรองข้อมูลการกู้คืนความเสียหายทั้งหมด
stumblebee

23
@Baaing Cow แน่นอนว่ามันเป็นคำตอบและแน่นอนว่าไม่มีวิธีกู้คืนข้อมูล นั่นคือความหมายเมื่อคุณเขียนทับข้อมูล: มันหายไป
psusi

22
@ ChaiT.Rex ดูเหมือนว่าจะเป็นตำนานอย่างน้อยในอุปกรณ์ใด ๆ ที่คุณน่าจะพบในพีซีที่ผลิตขึ้นในทศวรรษที่ผ่านมา
David Schwartz

19
@ ChaiT.Rex ใช้เฉพาะกับดิสก์ที่ไม่ได้เขียนทับอย่างสมบูรณ์ซึ่งจะลบเฉพาะบางส่วนของดิสก์ หากดิสก์ทั้งหมดถูกลบหรือเขียนทับจะไม่มีการกู้คืนข้อมูล ผู้เชี่ยวชาญหรือไม่
Thomas Ward

8
@BaaingCow ดังที่คุณทราบว่าต้องมีวิธีในการกู้คืนข้อมูลโปรดให้ความกระจ่างแก่เรา หลายคนยินดีจ่ายเงินสำหรับเทคนิคของคุณ!
ทิม

9

หากคุณมีการแบ่งพาร์ติชันออกเป็นพาร์ติชั่น/และ/homeพาร์ติชั่นและ /homeพาร์ติชั่นอยู่หลัง/พาร์ติชั่นคุณจะสามารถกู้คืนข้อมูลได้ MBR ซึ่งแสดงรายการที่พาร์ทิชันส่วนใหญ่ถูกเขียนทับ อย่างไรก็ตาม gparted สามารถกู้คืน/homeพาร์ติชันของคุณ

โพสต์นี้ในฟอรั่มอูบุนตู ให้แนวคิดบางอย่างเกี่ยวกับวิธีการทำ ฉันพบว่าโดยการค้นหา "gparted recovery partition"

เมื่อคุณพบพาร์ทิชันที่สูญหาย (ในอาจจะอยู่ในพาร์ติชั่นเสริม) คุณควรเพิ่มมันเป็นพาร์ติชั่นเดียวในตารางพาร์ติชั่น

/homeเมื่อคุณทำนั้นคุณจะต้องติดตั้งลินุกซ์บอกเพื่อให้การกู้คืนพาร์ทิชันเป็น


2

ทดสอบเพื่อช่วยเหลือ

ส่วนตัวฉันสามารถรับรองTestdiskซึ่งบันทึกข้อมูลของฉันหลังจากที่ฉันคัดลอกและวางคำแนะนำสำหรับ/dev/sdbและเปลี่ยน/dev/sddเป็น USB ของฉัน เพียงครั้งเดียวที่ฉันลืมที่จะเปลี่ยนมันและมีของฉัน/dev/sdbเข้าไปในถังขยะ

ตั้งค่าระบบของคุณเพื่อไม่ให้เขียน /dev/sda

ผมขอแนะนำให้สร้างสคริปต์เสื้อคลุม: ป้องกัน `dd` จากการทำลาย SSD หรือ HDD สิ่งนี้ทำให้มั่นใจได้ว่าddไม่เคยเขียน/dev/sdaหรืออาจจะเป็น/dev/sdbหรืออุปกรณ์อื่น ๆ ของอุปกรณ์เก็บข้อมูลขนาดใหญ่ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.