Làm cách nào để tạo hình ảnh giống hệt một thanh USB?


21

Tôi có một thanh usb không thể đọc được vì một số lý do. Tôi muốn tạo một hình ảnh của nó cho mục đích lưu trữ để tôi có thể cố gắng lấy dữ liệu từ hình ảnh vào một ngày sau đó.

Làm thế nào tôi có thể tạo ra một hình ảnh giống hệt như vậy của một thanh USB?


Đây là lỗi tôi gặp phải khi sử dụng 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:~$ 

Bạn sử dụng trình soạn thảo hex nào?
AJMansfield

Khi bạn không thể đọc từ thiết bị /dev/sdxtrỏ vào thanh USB, có một vấn đề nghiêm trọng và tôi nghĩ rằng không có công cụ nào có sẵn cho người dùng bình thường, nó sẽ hoạt động. Xem liên kết này để biết thêm chi tiết, askubuntu.com/questions/144852/... ; Đừng bỏ cuộc ngay lập tức. Hãy thử theo danh sách những điều có thể khiến việc đọc trở nên hiệu quả. Có lẽ bạn có thể kéo ổ USB ra ngoài và tìm thẻ micro SD, nó vẫn hoạt động theo nhận xét của @ ubfan1 (tại câu trả lời được liên kết).
sudodus

bạn có 2 tùy chọn để xử lý vấn đề của mình: Thứ nhất dễ dàng: chạy sudo su và sau đó là root chạy lệnh dd của bạn phiên bản thứ hai có nhiều kỹ năng hơn chạy dd với trạng thái và '' sudo bash -c 'dd status = process if = / dev / sd * | gzip> ~ / Sao lưu-USB.img.gz '
WiKrIe

Câu trả lời:


39

dd

Cách sử dụng sẽ giống như sudo dd if=/dev/sdb of=~/USB_imagetrong đó / dev / sdb là ổ đĩa USB của bạn như được liệt kê bởi sudo fdisk -l~ / USB_image là tệp hình ảnh nơi bản sao sẽ được tạo (đường dẫn nơi tệp hình ảnh sẽ được tạo).

Để khôi phục hình ảnh sang ổ USB khác, chỉ cần đảo ngược quá trình: sudo dd if=~/USB_image of=/dev/sdbsẽ khôi phục ~ / USB_image vào sdb của thiết bị . Chỉ cần đảm bảo rằng ổ USB mới lớn hơn hoặc lớn hơn ổ đĩa gốc.

Bạn cũng có thể gắn tệp hình ảnh bạn vừa tạo vào một đường dẫn mà không cần khôi phục nó trước tiên sang ổ USB khác mount ~/USB_image /mnt/USB_image -o loop.


Nếu fdisk -lkhông thể nhìn thấy ổ USB thì sao? Tuy nhiên, tôi có thể thấy nó từ chương trình Disk Utility là / dev / sdd, nhưng khi tôi cố gắng sử dụng lệnh của bạn, nó dường như thất bại.
oshirowanen

Thất bại với lỗi gì?
Bruno Pereira

Đã thêm lỗi vào câu hỏi ban đầu vì nó quá nhiều cho một bình luận.
oshirowanen

1
Nếu fdisk không hiển thị thiết bị, hãy sử dụng dmesg để xem những gì đang xảy ra khi thiết bị được cắm. Dmesg là danh sách các tương tác kernel, vì vậy, về cơ bản, nếu phần cứng thực hiện điều gì đó trên máy tính của bạn thì sẽ có thông báo về nó trong dmesg.
j0h

2
@Alex sử dụng status='progress'với dd trên Ubuntu hoặc tìm ra ddlệnh PID của lệnh của bạn và gửi SIGUSR1tín hiệu. Không chắc chắn về việc thực hiện khác, mặc dù.
Sergiy Kolodyazhnyy

7

Sử dụng ddrescue. Nó sẽ tiếp tục sau khi lỗi, nơi ddđơn giản sẽ thất bại.

Ngoài ra, ddrescuelà trong repos. Ngày 13.04, tôi gõ sudo apt-get install gddrescue để cài đặt.

Sử dụng sudo fdisk -lhoặc dmesgđể tìm ra vị trí thiết bị, ví dụ : /dev/sdb, sau đó chạy một lệnh như

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

có nhiều lựa chọn ddrescuevà bạn có thể muốn đọc các mantrang. Ngoài ra tôi không chắc tại sao phần cứng của bạn bị lỗi và bán phá giá dd. Một khối xấu có thể ddthoát ra, nhưng do đó có thể mất điện liên tục. dmesgcó thể cho bạn biết thêm về các lỗi phần cứng bạn có thể gặp phải.

ĐẢM BẢO thiết bị không được gắn kết! khi bạn cố gắng phục hồi dữ liệu, hình ảnh, vv Điều này có thể gây ra vấn đề.

Có rất nhiều điều có thể sai trong việc phục hồi dữ liệu. Đăng lại nếu bạn có vấn đề. testdisklà một tiện ích tốt để thực hiện phục hồi dữ liệu khi bạn có một hình ảnh.

Nói rõ hơn, đây là ổ cứng USB hay thiết bị usb (bộ nhớ trạng thái rắn)?

Lỗi I / O thường biểu thị cho sự cố phần cứng thay vì hỏng hệ thống tệp.

Ngoài ra, hãy thử lấy phân tích dữ liệu SMART của thiết bị, nếu có. Điều này có thể cho bạn biết những điều như nếu thiết bị của anh ta quá nóng, được bật nguồn trong một thời gian dài, có các thành phần xấu, tiếp xúc với nhiều hơn X không. của Gs, v.v.


USB, không có dữ liệu SMART để phân tích ... Tôi cũng nghĩ rằng bạn cần phải sử dụng sudocho ddrescue, * nơi dd chỉ đơn giản là sẽ thất bại * là loại không thực sự đúng vì bạn có thể cấu hình ddđể bỏ qua lỗi đọc. testdisklà tuyệt vời khi bạn có thể đọc các lĩnh vực dữ liệu bị mất , không phải khi ổ đĩa đã chết.
Bruno Pereira

# là ký hiệu cho root nên không, sudo không bắt buộc. nếu là $ thì có.
j0h

Tôi cũng muốn lưu ý rằng, nếu ddresTHER, hoặc thậm chí dd bị lỗi, nhưng bạn có thể tạo một hình ảnh, bạn vẫn có thể thử phục hồi dữ liệu trên hình ảnh đó.
j0h

Tôi sẽ đề nghị sử dụng gddrescuechống lại ddrescuegddrescuemới hơn và có thể thực hiện công việc đó ddrescue.
Bruno Pereira

1
Tôi thậm chí không biết người đàn ông, đọc bài viết của tôi. gddresTHER là gói và ddresTHER là lệnh.
j0h

2

Bạn có thể tạo hình ảnh của thanh USB (hoặc thiết bị khác) bằng cách sử dụng dd.

Ví dụ

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

Bạn có thể thêm nhiều tham số ddđể tối ưu hóa lệnh (ví dụ bs).


2

dd, như được đề cập bởi một poster trước đó, là cách bản địa để đi. Tuy nhiên, bạn sẽ muốn nó tiếp tục sửa lỗi, vì vậy bạn sẽ bắt đầu với:

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

Phần quan trọng là phần cuối cùng: conv=syncyêu cầu dd đệm tất cả các khối mà nó chỉ có thể đọc được một phần bằng số 0, vì vậy hình ảnh thu được có thể có một vài số 0 quá nhiều, nhưng sẽ có cấu trúc bằng đĩa flakes, trừ đi lỗi đọc. conv=noerror đã quan tâm đến những lỗi đọc, bảo dd tiếp tục với khối tiếp theo. Tại thời điểm này, kích thước khối có vấn đề, vì nếu lớn hơn mức cần thiết để bỏ qua lỗi, dữ liệu có thể đọc được sẽ bị mất ở đây. Các khối phải luôn luôn là một yếu tố của hai - nếu nghi ngờ, 512knên thực hiện thủ thuật.

Sau đó, tôi đề nghị:

  • lưu trữ một bản sao chưa sửa đổi của hình ảnh đó ở một nơi an toàn
  • fsck một bản sao của hình ảnh đĩa
  • gắn hình ảnh đĩa
  • kiểm tra tệp của bạn - hiện tại chúng có thể đọc được mà không gặp sự cố, nhưng một số có thể bị thiếu hoặc bị cắt ngắn
  • Nếu bản thân thiết bị không thể đọc được, bạn có thể không gặp may. Ngoài ra, nếu thiết bị có chứa một số phần mềm độc quyền, nó có thể được thiết lập để trả về lỗi đọc khi được truy cập trong các khối đầu tiên.

(Một phần trích dẫn bản thân tôi từ một bài báo viết lại vào năm 2010)

Nếu bạn không cần duy trì nguồn gốc, bạn luôn có thể thử các công cụ đang cố gắng giảm bớt phần nào quá trình, chẳng hạn như ddresTHER (gói gddrescue) và bạn đồng hành của nó ddrescueview( sourceforge ) để trực quan hóa các lỗi.


2

Liên quan đến nửa sau câu hỏi của bạn "Đây là lỗi tôi gặp phải khi sử dụng dd": Tôi có thể thấy một vài khả năng.

  1. Lưu ý sự khác biệt trong lệnh bạn đã nhập so với câu trả lời được chấp nhận; bạn đang thiếu một ~ở phía trước /USB_image. Nói cách khác, bạn đang cố gắng xuất ra hệ thống tập tin gốc thay vì vào thư mục chính của bạn.
  2. /dev/sddcó thể không phải là ổ đĩa chính xác. Chạy sudo fdisk -lvà so sánh kích thước của ổ đĩa với kích thước đã biết của thanh USB. Chẳng hạn, tôi biết đây là thanh USB của mình vì nó gần 16GB : Disk /dev/sdf: 15.8 GB, 15805186048 bytes.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.