Cách tốt nhất để sao chép tất cả các tập tin, bỏ qua lỗi?


36

Tôi có một HD bị hỏng một phần mà Disk Utility không thể sửa chữa được, nhưng nó có thể được gắn ở chế độ chỉ đọc để làm cho dữ liệu trên đó có thể truy cập được.

Tôi đang cố gắng sao chép tất cả các nội dung có thể phục hồi vào HD dự phòng, nhưng mọi phương pháp tôi thử đều thất bại khi gặp lỗi - khiến các tệp còn lại không được xử lý.

Trình tìm kiếm - Thất bại. SuperDuper - Thất bại. Ditto (lệnh đầu cuối) - Thất bại.

Tôi đã hy vọng rằng Ditto sẽ thực hiện mánh khóe, trang người đàn ông Ditto nói:

ditto trả về 0 nếu mọi thứ được sao chép, nếu không thì không. ditto gần như không bao giờ bỏ cuộc, thích báo cáo lỗi trên đường đi. Thông báo chẩn đoán sẽ được in thành lỗi tiêu chuẩn.

Tôi đã gửi một lỗi cho Apple re ditto không thực hiện như quảng cáo.

Còn ý tưởng nào khác không?


Xem stackoverflow.com/a/27637277 thay vì các --ignore-errorscâu trả lời dưới đây.
spyle

Câu trả lời:


28

Tôi sử dụng cp -Rfv sourcefile destinationfilevới thành công trên cơ sở khá thường xuyên.

cp = bản sao

R = duy trì phân cấp tập tin

f = nếu một tệp đích hiện tại không thể mở được, hãy xóa nó và thử lại

v = chế độ dài dòng, hiển thị các tập tin được chuyển khi tiến trình

sourcefile = dữ liệu bạn muốn sao chép

Destinationfile = thư mục / ổ đĩa bạn muốn sao chép vào


3
Làm thế nào để bỏ qua lỗi trên ổ đĩa nguồn (xem câu hỏi)?
nohillside

1
@patrix Nó không "bỏ qua" lỗi nhưng cờ "f" buộc thông qua chúng, chỉ sao chép dữ liệu nguyên vẹn. Khi bạn xem tiến trình (nhờ cờ dài dòng), bạn sẽ thấy đầu ra dọc theo dòng "dữ liệu không được sao chép do lỗi I / O" khi gặp dữ liệu xấu. Khi lỗi được hiển thị, nó sẽ chuyển sang tệp tiếp theo mà không có bất kỳ đầu vào nào của người dùng. Kịch bản của người gửi có vẻ rất giống với hàng chục lần tôi đã sử dụng lệnh này để truy xuất dữ liệu từ các đĩa / ổ đĩa.
Ông Thỏ

Có cách nào để sao chép một tập tin bị lỗi với một số postfix, vì vậy tất cả các tập tin bị thiếu được tìm thấy tốt hơn?

1
Từ cphướng dẫn sử dụng BSD (macOS): "Ở chế độ -R, cp sẽ tiếp tục sao chép ngay cả khi phát hiện lỗi."
Matt

Cảm ơn rất nhiều vì điều này. Tôi hiện đang cố gắng cứu vãn hết mức có thể từ một ổ cứng bị lỗi, mặc dù tôi không quan tâm đến dữ liệu bị hỏng, tôi sẽ không lãng phí thời gian để cố gắng sửa nó mà chỉ xóa nó. Đây là một phương pháp làm việc để đạt được điều này một cách nhanh chóng. Tôi đang xử lý các lỗi vào một logfile, sau này tôi có thể phân tích cú pháp để xóa các tệp bị cắt bớt với các lỗi đọc, bằng cách nối thêm các phần sau:2> error.log
0x01

23

Hãy dùng thử Gnu ddresTHER - đây là chương trình khôi phục dữ liệu thực hiện sao chép dựa trên khối với phục hồi dữ liệu bị hỏng trong các hoạt động sao chép. Bạn có thể tải nó cho OS X nếu bạn đang sử dụng Homebrew bằng cách nhập vào cửa sổ Terminal:

brew install ddrescue

Một hướng dẫn về ArsTechnica mô tả làm thế nào để giải cứu một đĩa thất bại sử dụng ddrescue. Hãy chắc chắn rằng bạn đọc qua hướng dẫn, vì nó chứa thông tin hữu ích. Đây là một ý chính về làm thế nào để đạt được điều đó.

  • Xác định vị trí ổ đĩa bằng cách sử dụng diskutil list. Cột định danh là những gì bạn đang tìm kiếm:

    /dev/disk1
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *750.2 GB   disk1
       1:                        EFI EFI                     209.7 MB   disk1s1
       2:                  Apple_HFS Macintosh HD 2          80.0 GB    disk1s2
       3:                  Apple_HFS Home                    509.1 GB   disk1s3
    
  • Tháo đĩa trong câu hỏi:

    diskutil unmount /dev/disk1s3    
    
  • Bắt đầu một hoạt động giải cứu đĩa vào một hình ảnh. Đảm bảo vị trí của Rescue.dmgđược thay thế bằng vị trí mong muốn của bạn.

    sudo /usr/local/bin/ddrescue -v -n -c 4096 /dev/disk1s3 Rescue.dmg Rescue.log
    
  • Khôi phục hình ảnh vào một ổ đĩa mới :

    sudo /usr/local/bin/ddrescue --force -v -c 4096 Rescue.dmg /dev/disk2s0 recovery.log
    

Bạn cũng nên đọc hướng dẫn sử dụng ddresTHER để tự học về các tùy chọn có sẵn bằng cách chạy man ddrescue.


1
Để thêm vào thông báo của người điều hành: đây có thể là một câu trả lời rất tốt cho vấn đề nhưng nó cần nhiều công việc hơn. Bạn có thể thêm một số lệnh ddresTHER mẫu cho các thiết bị OS X vào câu trả lời không? Tôi đã sửa nó một chút với loại thông tin và thông tin chúng tôi muốn thấy trong câu trả lời ở đây. Nếu bạn làm điều đó, tôi chắc chắn đó sẽ là một phản hồi tuyệt vời.
Ian C.

Tôi đã sử dụng ddresTHER thành công một hoặc hai năm trước, để sao chép dữ liệu từ một đĩa xấu. Nó đã vượt qua có lẽ 200 lỗi, và cuối cùng đã đọc được khoảng một nửa trong số đó. Đĩa sao chép được đưa vào đĩa chiến binh và kết quả có thể làm hỏng 10 tệp trong số khoảng 1 triệu.
Pittsburgh Mike

7

Tôi thích sử dụng rsyncđể sao chép các tệp từ nguồn bị hỏng đến đích chức năng:

rsync -auv --delete --ignore-errors /path/to/source/ /path/to/destination/

Ở đâu:

-a = "chế độ lưu trữ" = đệ quy vào thư mục, sao chép liên kết tượng trưng dưới dạng liên kết tượng trưng, ​​giữ quyền, thời gian, nhóm và tệp đặc biệt, cũng bảo vệ chủ sở hữu (khi chủ sở hữu = root) và thiết bị (khi chủ sở hữu = root)

-u= bỏ qua tệp trong nguồn nếu bản sao tương ứng của nó ở đích mới hơn

-v = đầu ra dài dòng

--delete= các tệp trong đích không tồn tại trên nguồn sẽ bị xóa

--ignore-errors = xóa một tập tin / thư mục trong trường hợp lỗi I / O trong quá trình sao chép


4

Gợi ý Macworld này gợi ý sử dụng dd để tạo bản sao từng bit (bỏ qua lỗi) sau đó gắn hình ảnh kết quả vào Finder để khôi phục các tệp của bạn. Tôi đã không thử nó, nhưng có vẻ như nó có thể hoạt động.


Điều này là tốt, bởi vì bạn muốn dữ liệu của bạn tắt nhanh nếu đĩa đó là duff. Bằng cách này, bạn có được một khối để sao chép khối, bao gồm các lỗi, sau đó sẽ có sẵn để kiểm tra khi bạn rảnh mà không lo rằng đĩa sẽ chết liên tục trước khi bạn lấy hết mọi thứ. Tôi sẽ thực hiện một thao tác, trong một khởi đầu gọn gàng để kết thúc mà không bỏ qua mọi nơi từ phân đoạn tệp đến phân đoạn tệp, công việc sẽ khó hơn trên ổ đĩa đã tạo bản sao DD.
nhồi

3
ddresTHER tốt hơn dd ở đây, vì nó sẽ thử lại các phần xấu trong chừng nào bạn để nó chạy - hãy xem câu trả lời trước đó trong đó OP sẽ loại bỏ dữ liệu của anh ta sau vài tuần (!). Lưu ý rằng đây là một cách tiếp cận tốt nếu phần cứng HD bị lỗi, nhưng hoàn toàn không khắc phục được lỗi cấu trúc âm lượng - mà chỉ được sao chép cùng với các tệp.
Gordon Davisson

3

Bạn có thể cân nhắc sử dụng ddlệnh để thực hiện sao chép từng khối từ ổ cứng bị hỏng sang ổ cứng mới.

Giả sử ổ cứng mới ( /dev/disk2) của bạn có kích thước bằng hoặc lớn hơn ổ cứng bị hỏng ( /dev/disk1), thì bạn có thể đưa ra:

dd if=/dev/disk1 of=/dev/disk2 bs=4096 conv=notrunc,noerror

bị chặn @ 4k, không cắt bất kỳ khối dữ liệu nào, bỏ qua tất cả các lỗi

Để tìm tên thiết bị, chạy mounttừ Terminal trước.


0

Các dittolệnh nên làm việc, tôi sẽ sử dụng dittokết hợp với -vlựa chọn cho tiết để bạn có thể nhìn thấy chính xác những gì mang đến cho bạn một lỗi về những gì nó sao chép.


3
Theo người hỏi dittokhông làm việc. Tại sao bạn nghĩ rằng nó làm?
nohillside

op đang hỏi về các lựa chọn thay thế choditto
juniorRubyist

0

Bạn có thể thử chạy SuperDuper và bỏ qua các tệp có lỗi io, nếu đó chỉ là một vài và bạn sử dụng tính năng cập nhật thông minh đó là một cách khá hiệu quả để loại bỏ hầu hết dữ liệu. (Tôi nghĩ rằng lệnh dd sẽ thích hợp hơn nếu bạn có thể làm điều đó).

Các bước:

  1. Chọn 'sao lưu tất cả các tệp' làm chiến lược sao lưu
  2. Trong các tùy chọn, chọn update cập nhật thông minh '(nếu không, quá trình này sẽ mất nhiều thời gian một cách nực cười nếu bạn có nhiều hơn một hoặc hai lỗi, bạn sẽ cần phiên bản trả phí cho việc này)
  3. Chạy bản sao
  4. Khi sao chép thất bại, hãy đọc nhật ký để tìm tệp nào không sao chép, sau đó nhấn ok / close để quay lại màn hình 'bắt đầu'
  5. Chọn 'chỉnh sửa tập lệnh sao chép đã chọn' từ danh sách sử dụng
  6. Trong các lệnh Script, thêm tệp không thể sao chép, nó sẽ hiện 'bỏ qua' một khi nó được thêm vào danh sách các tệp
  7. Lưu tập lệnh của bạn với một số tên (ví dụ: bỏ qua tệp bị hỏng)
  8. Chọn tập lệnh của bạn và lặp lại các bước từ 3 đến 7 lần nếu cần để bỏ qua tất cả các tệp bị hỏng.

-2

Nếu ổ đĩa của bạn vẫn có thể truy cập được và bạn có thể thấy các tệp hirrarchy, nhưng chỉ dừng quá trình sao chép vì lỗi, bạn có thể sử dụng Unstoppable Copierchương trình.

http://www.roadkil.net/program.php?ProgramID=29


Đó là chương trình chỉ dành cho Windows và OP đang yêu cầu các giải pháp cho Mac (trên diễn đàn dành riêng cho Mac!)
Haydentech
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.