Câu trả lời:
ddresTHER có thể được nối lại, nhưng nó đòi hỏi một tệp nhật ký để có thể làm như vậy. Tệp nhật ký sẽ ghi lại tiến trình mà ddresTHER đã thực hiện cho đến nay và khởi động lại ddresTHER sẽ đọc tệp nhật ký và bắt đầu nơi nó rời đi.
Tệp nhật ký sẽ là tham số thứ ba:
ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log
Nếu bạn đã bắt đầu chạy ddresTHER mà không có tệp nhật ký và hủy nó, lần tiếp theo ddresTHER chạy, nó sẽ bắt đầu ngay từ đầu vì nó không có bản ghi về những gì đã được phục hồi.
Lưu ý : ddresTHER và dd_resTHER là các chương trình khác nhau.
Ngay cả khi bạn quên chỉ định một logfile, vẫn có thể có hy vọng:
Vì vậy, bạn đã không đọc hướng dẫn và bắt đầu ddresTHER mà không cần logfile. Bây giờ, hai ngày sau, máy tính của bạn gặp sự cố và bạn không thể biết được bao nhiêu dữ liệu được quản lý để lưu. Và thậm chí tệ hơn, bạn không thể tiếp tục giải cứu; bạn phải khởi động lại nó ngay từ đầu.
Hoặc có thể bạn đã bắt đầu sao chép một ổ đĩa dd conv=noerror,sync
và hiện đang trong tình trạng tương tự được mô tả ở trên. Trong trường hợp này, lưu ý rằng bạn không thể sử dụng bản sao được tạo bởi dd trừ khi nó được gọi với sync
đối số chuyển đổi.
Đừng tuyệt vọng (chưa). Trong một số trường hợp, DdresTHER có thể tạo ra một tệp dữ liệu gần đúng, từ tệp đầu vào và bản sao (một phần), gần như là một tệp dữ liệu chính xác. Nó thực hiện điều này bằng cách đơn giản giả định rằng các thành phần chứa tất cả các số 0 không được giải cứu.
Tuy nhiên, nếu đích của bản sao là một ổ đĩa hoặc một phân vùng, (hoặc một tệp thông thường và cắt ngắn hiện tại không được yêu cầu), hầu hết có lẽ bạn sẽ cần phải khởi động lại ddresTHER ngay từ đầu. (Lần này với một logfile, tất nhiên). Lý do là dữ liệu cũ có thể có trong ổ đĩa chưa được ghi đè và do đó có thể không được thử nhưng khác không.
Ví dụ: nếu lần đầu tiên bạn thử một trong các lệnh sau:
ddrescue infile outfile
hoặc là
dd if=infile of=outfile conv=noerror,sync
bạn có thể tạo một logfile gần đúng bằng lệnh này:
ddrescue --generate-mode infile outfile logfile
Như những người khác đã nói, bạn phải luôn chỉ định một logfile là tham số thứ ba, điều này sẽ cho phép tiếp tục. Vì bạn đã không làm điều đó, điều đó sẽ không giúp bạn ở đây. Nếu bạn biết khoảng thời gian mà quá trình đạt được, bạn có thể sử dụng các tham số --input-position
và --output-position
để bắt đầu từ điểm đó (đảm bảo đặt cả hai tham số đó thành cùng một giá trị, nếu không đầu ra sẽ bị hỏng).
Vì bạn không chỉ định tệp nhật ký làm tham số thứ ba, nên việc tiếp tục lại có thể được thực hiện tự động. Bạn có thể tạo một logfile bằng tay nếu bạn biết các khu vực đã được giải cứu, cú pháp rất dễ dàng. Chỉ cần bắt đầu một cuộc giải cứu giả cho một tập tin khác trong khi chỉ định một bản ghi và để nó đọc các khu vực khác nhau. Sau đó chỉnh sửa nhật ký để thể hiện các khu vực đã được giải cứu trong tệp đầu tiên của bạn. Bây giờ chạy lại lệnh trước đó của bạn nhưng đặt tên của tệp nhật ký làm tham số thứ ba. ddresTHER sau đó sẽ tiếp tục trên khu vực chưa được thử nghiệm đầu tiên.
Mỗi https://wiki.archlinux.org/index.php/Disk_clelling có vẻ như với công conv=noerror,sync
tắc, dd
trên thực tế, có thêm số không ở cuối một khối, không chính xác là nơi xảy ra lỗi đọc. Điều này trái với thông tin trong câu trả lời của Miles Wolbe từ 2013-08-29.
Chẳng hạn, nếu một chuỗi đúng là 198123283
và có lỗi đọc ở giữa thì nó sẽ ghi 198283000
, không 198000283
.
Vì vậy, trong trường hợp có lỗi đọc thực sự, phương pháp được đề xuất sẽ không chính xác - sẽ có những khu vực có thể đọc được và cuối cùng chứa đầy số không, nhưng sẽ được coi là "giải cứu".
Nhân tiện, đây là một cách tốt để bắt đầu một nỗ lực phục hồi như vậy bằng cách lấp đầy ổ đĩa đích bằng số không (hoặc ít nhất là không gian trống, có thể được thực hiện với WinHex chẳng hạn).