ฉันจะสร้างรูปแท่ง usb ได้อย่างไร?


21

ฉันมี usb stick ซึ่งอ่านไม่ได้ด้วยเหตุผลบางอย่าง ฉันต้องการสร้างภาพเพื่อการจัดเก็บเพื่อให้ฉันสามารถดึงข้อมูลจากภาพในภายหลัง

ฉันจะสร้างภาพแท่ง usb ที่เหมือนกันได้อย่างไร


นี่เป็นข้อผิดพลาดที่ฉันได้รับเมื่อใช้งานdd:

oshirowanen@desktop:~$ sudo dd if=/dev/sdd of=/USB_image
[sudo] password for oshirowanen: 
dd: reading `/dev/sdd': Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.00783 s, 0.0 kB/s
oshirowanen@desktop:~$ 

คุณใช้ตัวแก้ไข hex แบบใด
AJMansfield

เมื่อคุณไม่สามารถอ่านจากอุปกรณ์ที่/dev/sdxชี้ไปที่แท่ง USB มีปัญหาร้ายแรงและฉันคิดว่าไม่มีเครื่องมือสำหรับผู้ใช้ทั่วไปที่จะใช้งานได้ ดูลิงค์นี้สำหรับรายละเอียดเพิ่มเติมaskubuntu.com/questions/144852/… ; อย่ายอมแพ้ทันที ลองตามรายการสิ่งต่าง ๆ ที่อาจทำให้อ่านหนังสือได้ บางทีคุณอาจดึง USB pendrive ออกจากกันและค้นหาการ์ด micro SD ที่ยังคงทำงานตามความคิดเห็นโดย @ ubfan1 (ตามคำตอบที่เชื่อมโยง)
sudodus

คุณมี 2 ตัวเลือกในการจัดการปัญหาของคุณ: อันดับที่หนึ่งง่าย: เรียกใช้ sudo su แล้วตามที่รูทรันคำสั่ง dd ของคุณรุ่นที่สองที่มีทักษะมากขึ้นเรียกใช้ dd ด้วยสถานะและ '' sudo bash -c 'dd status = คืบหน้าถ้า = / dev / sd * | gzip> ~ / Backup-USB.img.gz '
WiKrIe

คำตอบ:


39

dd มัน!

การใช้งานจะเป็นเช่นsudo dd if=/dev/sdb of=~/USB_imageที่/ dev / sdbเป็นไดรฟ์ usb ของคุณตามที่ระบุไว้sudo fdisk -lและ~ / USB_imageเป็นไฟล์ภาพที่จะทำการคัดลอก (เส้นทางที่จะสร้างไฟล์รูปภาพ)

เพื่อเรียกคืนภาพไปยังไดรฟ์ USB อีกเพียงแค่สลับกระบวนการ: sudo dd if=~/USB_image of=/dev/sdbจะเรียกคืน~ / USB_imageไปยังอุปกรณ์SDB เพียงตรวจสอบให้แน่ใจว่าไดรฟ์ USB ใหม่ใหญ่หรือใหญ่กว่าไดรฟ์เดิม

นอกจากนี้คุณยังสามารถติดไฟล์ภาพที่คุณเพิ่งสร้างเข้าไปในเส้นทางโดยไม่จำเป็นต้องเพื่อเรียกคืนมันเป็นครั้งแรกที่จะไดรฟ์ USB mount ~/USB_image /mnt/USB_image -o loopอีกด้วย


เกิดอะไรขึ้นถ้าfdisk -lไม่เห็นไดรฟ์ usb อย่างไรก็ตามฉันสามารถดูได้จากโปรแกรม Disk Utility เป็น / dev / sdd แต่เมื่อฉันพยายามใช้คำสั่งของคุณดูเหมือนว่าจะล้มเหลว
oshirowanen

ล้มเหลวด้วยความผิดอะไร?
Bruno Pereira

เพิ่มข้อผิดพลาดในคำถามเดิมเนื่องจากมีความคิดเห็นมากเกินไป
oshirowanen

1
หาก fdisk ไม่แสดงอุปกรณ์ให้ใช้ dmesg เพื่อดูว่าเกิดอะไรขึ้นเมื่อเสียบอุปกรณ์ dmesg เป็นรายการของการโต้ตอบของเคอร์เนลดังนั้นโดยพื้นฐานแล้วหากฮาร์ดแวร์ทำอะไรบางอย่างในคอมพิวเตอร์ของคุณจะมีข้อความเกี่ยวกับมันใน dmesg
j0h

2
@Alex ใช้status='progress'กับdd Ubuntu หรือหา PID ของddคำสั่งของคุณแล้วส่งSIGUSR1สัญญาณ ไม่แน่ใจเกี่ยวกับการใช้งานอื่น ๆ
Sergiy Kolodyazhnyy

7

ddrescueใช้ มันจะดำเนินการต่อหลังจากเกิดข้อผิดพลาดซึ่งddจะล้มเหลว

นอกจากนี้ddrescueอยู่ใน repos ใน 13.04 ฉันพิมพ์sudo apt-get install gddrescue เพื่อติดตั้ง

ใช้sudo fdisk -lหรือdmesgเพื่อหาที่ตั้งของอุปกรณ์เช่น: /dev/sdbจากนั้นเรียกใช้คำสั่งเช่น

ddrescue /dev/sdb /home/user/desktop/bkp.img

มีตัวเลือกมากมายให้ddrescueและคุณอาจต้องการอ่านmanหน้า ddนอกจากนี้ผมไม่แน่ใจว่าทำไมฮาร์ดแวร์ของคุณเป็นความล้มเหลวและการทุ่มตลาด บล็อกที่ไม่ดีอย่างหนึ่งอาจทำให้ddเลิกได้ แต่ก็อาจทำให้ไฟฟ้าดับเป็นระยะ dmesgอาจบอกคุณเพิ่มเติมเกี่ยวกับความล้มเหลวของฮาร์ดแวร์ที่คุณอาจประสบ

ทำให้แน่ใจว่าอุปกรณ์ไม่ได้ติดตั้ง! เมื่อคุณพยายามกู้คืนข้อมูลสร้างภาพ ฯลฯ อาจทำให้เกิดปัญหาได้

มีหลายสิ่งที่ผิดพลาดในการกู้คืนข้อมูล โพสต์กลับหากคุณมีปัญหา testdiskเป็นเครื่องมือที่ดีสำหรับการกู้คืนข้อมูลเมื่อคุณมีภาพ

เพื่อความชัดเจนนี่คือฮาร์ดไดรฟ์ usb หรืออุปกรณ์ usb (โซลิดสเตตหน่วยความจำ) หรือไม่

ข้อผิดพลาด I / O มักจะบ่งบอกถึงความผิดปกติของฮาร์ดแวร์มากกว่าความเสียหายของระบบไฟล์

ลองรับการวิเคราะห์ข้อมูล SMART ของอุปกรณ์หากพร้อมใช้งาน สิ่งนี้อาจบอกคุณได้ว่าอุปกรณ์ของเขาผ่านการทำความร้อนซึ่งเปิดเครื่องเป็นเวลานานมีเซกเตอร์เสียสัมผัสมากกว่า X no ของ Gs ฯลฯ


USB stick ไม่มีข้อมูลสมาร์ทที่จะวิเคราะห์ ... ฉันคิดว่าคุณต้องใช้sudoสำหรับddrescue* ที่ dd จะล้มเหลว * เป็นประเภทที่ไม่เป็นความจริงเพราะคุณสามารถกำหนดค่าddให้ละเว้นข้อผิดพลาดในการอ่านได้ testdiskมันยอดเยี่ยมเมื่อคุณสามารถอ่านเซกเตอร์ของข้อมูลที่สูญหายได้ไม่ใช่เมื่อไดรฟ์นั้นตาย
Bruno Pereira

# เป็นสัญลักษณ์สำหรับรูทดังนั้นไม่จำเป็นต้องใช้ sudo ถ้ามันคือ $ ใช่แล้ว
j0h

ฉันยังต้องการที่จะทราบว่าถ้า ddrescue หรือแม้กระทั่ง dd ล้มเหลว แต่คุณสามารถสร้างภาพคุณอาจยังคงพยายามกู้คืนข้อมูลในภาพนั้น
j0h

ฉันขอแนะนำให้ใช้gddrescueต่อต้านddrescueเนื่องจากgddrescueเป็นรุ่นที่ใหม่กว่าและสามารถทำงานที่ddrescueทำ
Bruno Pereira

1
ฉันไม่รู้แม้แต่มนุษย์อ่านโพสต์ของฉัน gddrescue เป็นแพคเกจและ ddrescue เป็นคำสั่ง
j0h

2

คุณสามารถสร้างภาพของ USB ติด (หรืออุปกรณ์อื่น) ddโดยใช้

เช่น

dd if=<usb device> of=usb.img

คุณสามารถเพิ่มพารามิเตอร์เพิ่มเติมddเพื่อเพิ่มประสิทธิภาพคำสั่ง (เช่นbs)


2

ddตามที่กล่าวถึงโดยผู้โพสต์ก่อนหน้านี้เป็นวิธีที่จะไป อย่างไรก็ตามคุณจะต้องดำเนินการต่อเพื่อหาข้อผิดพลาดดังนั้นคุณจะต้องเริ่มด้วย:

dd if=<usb device> of=<new file on disk with enough space> bs=<should match your blocksize> conv=noerror,sync 

ส่วนที่สำคัญคือส่วนสุดท้าย: conv=syncบอก dd เพื่อวางบล็อคทั้งหมดที่สามารถอ่านได้เพียงบางส่วนด้วยศูนย์ดังนั้นภาพที่ได้อาจมีศูนย์ไม่กี่ตัวมากเกินไป แต่โครงสร้างจะเท่ากันกับดิสก์ที่เป็นแผ่น conv=noerror ดูแลข้อผิดพลาดในการอ่านบอกให้ dd ดำเนินการต่อในบล็อกถัดไป ณ จุดนี้ขนาดของบล็อกมีความสำคัญเนื่องจากหากมีขนาดใหญ่เกินกว่าที่จำเป็นในการข้ามข้อผิดพลาดข้อมูลที่อ่านได้จะหายไปที่นี่ Blocksize ควรเป็นปัจจัยสอง - หากมีข้อสงสัย512kควรทำการหลอกลวง

จากนั้นฉันแนะนำให้:

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

(บางส่วนอ้างถึงตัวฉันเองจากบทความที่เขียนย้อนกลับไปในปี 2010)

หากคุณไม่จำเป็นต้องคงอยู่ในสภาพดั้งเดิมคุณสามารถลองใช้เครื่องมือที่พยายามทำให้กระบวนการง่ายขึ้นเช่น ddrescue (แพ็คเกจgddrescue) และผู้ร่วมใช้ddrescueview( sourceforge ) เพื่อดูข้อผิดพลาด


2

เกี่ยวกับคำถามครึ่งหลังของคุณ "นี่เป็นข้อผิดพลาดที่ฉันได้รับเมื่อใช้ dd": ฉันเห็นความเป็นไปได้สองสามอย่าง

  1. สังเกตความแตกต่างในคำสั่งที่คุณพิมพ์กับคำตอบที่ยอมรับ คุณกำลังขาดหายไปในด้านหน้าของ~ /USB_imageคุณกำลังพยายามที่จะเอาท์พุทรูทของระบบไฟล์แทนที่จะไปยังโฮมไดเร็กตอรี่ของคุณ
  2. /dev/sddอาจไม่ใช่ไดรฟ์ที่ถูกต้อง เรียกใช้sudo fdisk -lและเปรียบเทียบขนาดของไดรฟ์กับขนาดที่รู้จักของก้าน USB ยกตัวอย่างเช่นฉันรู้ว่านี้คือติด USB ของฉันเพราะมันใกล้ถึง Disk /dev/sdf: 15.8 GB, 15805186048 bytes16GB:
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.