Có lệnh sao chép và xác minh trong Ubuntu / Linux không?


23

Tôi sao lưu tất cả các bức ảnh kỹ thuật số của tôi đến một vài nơi. Tôi đã sử dụng lệnh cp, nhưng - với giá trị cá nhân - đã bắt đầu tự hỏi liệu có cách nào đáng tin cậy hơn không. Tôi không xa lạ gì với Linux, Bash, Perl, v.v., vì vậy tôi có thể viết một cái gì đó để sao chép và so sánh băm md5, nhưng tôi tự hỏi liệu có thứ gì đó đã tồn tại (phát minh lại, bánh xe và không).

Hầu hết các googling của tôi để sao chép và (xác minh | hợp lệ | kiểm tra | băm | xác nhận) bật rsync. Tuy nhiên, theo như tôi có thể nói, rsync chỉ sử dụng băm để xem có cần cập nhật tệp hay không. Nó không thực hiện so sánh băm sau đó.

Đối với việc sử dụng này, cụ thể, các tệp là nhị phân và thường là 8-10 MB. Bất kỳ đề xuất cho các tiện ích hoặc hướng dẫn cho các giải pháp DIY sẽ được đánh giá rất cao.


Làm thế nào về unison ? Nó được sử dụng để đồng bộ hóa hai chiều nhưng nó chắc chắn kiểm tra tổng kiểm tra của một tệp.
côn

Câu trả lời:


19

Từ man rsync, dưới -ctùy chọn:

-c, --checksum: bỏ qua dựa trên tổng kiểm tra, không phải mod-time & size

Lưu ý rằng rsync luôn xác minh rằng mỗi tệp được chuyển đã được xây dựng lại một cách chính xác ở bên nhận bằng cách kiểm tra tổng kiểm tra toàn bộ tệp được tạo khi tệp được chuyển, nhưng xác minh sau khi chuyển tự động không liên quan gì đến tùy chọn này trước khi chuyển "Tập tin này có cần được cập nhật không?" kiểm tra.


7
Một số người nhận ra rằng hướng dẫn sử dụng rsync là sai lệch về kiểm tra sao chép bài đăng mặc định: unix.stackexchange.com/a/66702/148560 Dường như không có kiểm tra nào như vậy. Để xác minh tất cả các bản sao bạn phải thực hiện một rsync khác với tùy chọn --checksum, họ nói.
Rotareti

5

Vài năm trước tôi có những yêu cầu giống như bạn. Giải pháp tôi chọn là sử dụng ZFS thông qua trình điều khiển ZFS-FUSE trên máy chủ lưu trữ của tôi. Suy nghĩ của tôi là ảnh cá nhân, tài liệu được quét và các tệp tương tự khác là những thứ mà tôi chỉ có thể truy cập đôi khi, vì vậy có thể là một thời gian rất dài, nói một năm hoặc hơn, trước khi tôi nhận thấy rằng một tệp đã bị hỏng do một lỗi ổ đĩa hoặc tương tự.

Vào thời điểm đó, tất cả các bản sao lưu mà tôi có có thể là phiên bản bị xé nhỏ của tệp này.

ZFS có lợi ích hơn RAID-5 ở chỗ nó có thể phát hiện và sửa chữa các lỗi trong dữ liệu được lưu trữ trên các đĩa riêng lẻ, ngay cả khi các ổ đĩa không báo lỗi đọc trong khi đọc dữ liệu. Nó sẽ phát hiện, thông qua tổng kiểm tra, rằng một trong những đĩa trả về thông tin bị hỏng và sẽ sử dụng dữ liệu dư thừa để sửa chữa đĩa đó.

Do cách thức kiểm tra trong ZFS được thiết kế, tôi cảm thấy rằng tôi có thể dựa vào nó để lưu trữ dữ liệu được sử dụng không thường xuyên trong thời gian dài. Mỗi tuần tôi chạy một "zpool chà" đi qua và đọc lại tất cả dữ liệu và xác minh tổng kiểm tra.

ZFS-FUSE đã hoạt động khá tốt đối với tôi trong vài năm qua.

Trước đây, đối với một khách hàng, tôi đã triển khai một hệ thống cơ sở dữ liệu lưu trữ thông tin tổng kiểm tra trên tất cả các tệp được lưu trữ trong một thư mục cụ thể. Sau đó tôi đã có một tập lệnh khác sẽ chạy định kỳ và kiểm tra tệp dựa trên tổng kiểm tra được lưu trữ trong cơ sở dữ liệu. Với điều đó, chúng tôi có thể nhanh chóng phát hiện một tệp bị hỏng và khôi phục từ bản sao lưu. Về cơ bản chúng tôi đã thực hiện các loại kiểm tra tương tự mà ZFS thực hiện trong nội bộ.


Tại sao bỏ phiếu xuống? Vì không có bình luận nào được để lại nên tôi cho rằng đó là "-1, không đồng ý". :-)
Sean Reifschneider

... nhưng sau đó: phần nào không đồng ý? Mặc dù có thể hơi lạc đề đối với câu hỏi, nhưng điều này nghe có vẻ chắc chắn với tôi. Vì vậy, tôi hy vọng downvote là "không trả lời cho câu hỏi" thay vì để chúng tôi quên đi một số lỗ hổng thực sự ở trên ...
Arjan

Tôi nhận ra sáng nay rằng tôi đã cho rằng icyrock đang hỏi vì lo lắng về thối bit, đó là điều tôi quan tâm. Nhưng có lẽ nó bằng cách nào đó khác nhau. Mặc dù tôi không thể tưởng tượng trường hợp sử dụng sẽ thay đổi nội dung tệp một cách hợp pháp mà không thay đổi thời gian tệp.
Sean Reifschneider

Tôi nghĩ rằng mối quan tâm của OP là tham nhũng dữ liệu trong quá cảnh. Bạn sao chép một tập tin và bản sao cuối cùng khác với bản gốc.
Jon Bentley

btrfs? có tổng kiểm tra và có nguồn gốc ...
Dmitry Kudriavtsev


1

Tôi đã tìm thấy tiện ích này (Linux và Windows) thực hiện đúng những gì bạn muốn (băm sao chép + xác minh băm với nhật ký): http://sourceforge.net/projects/quickhash/

Nhược điểm duy nhất là nó chỉ tồn tại dưới dạng GUI (không có quyền truy cập dòng lệnh)

Kể từ v1.5.0, một thư mục nguồn được chọn có thể được băm, sau đó sao chép và xây dựng lại vào thư mục đích nơi nội dung được băm lại để xác minh. Kể từ 1.5.5, mặt nạ tệp đã chọn cũng có thể được sử dụng (* .doc; * .xls, v.v.).


0

nếu bạn đang sao chép tệp cục bộ (như được tham chiếu bởi tham chiếu của bạn cpthay vì scpvv), thì chỉ là cmptệp nguồn và tệp đích ... nhưng thực tế, nếu cpkhông phát ra một loại lỗi nào đó (trên dòng lệnh hoặc trong giá trị trả về thực thi), không có lý do nào để tin rằng nó không hoạt động.

nếu bạn thực sự muốn sao lưu dự phòng hợp pháp, hãy xem xét một giải pháp từ xa như dropbox .


+1. Không rõ lý do tại sao câu trả lời này bị hạ cấp vì nó cung cấp (những gì dường như với tôi) là một giải pháp hoàn toàn hợp lệ cho vấn đề, mặc dù nó yêu cầu hai lệnh chứ không phải một.
Jon Bentley

Bạn thực sự cần phải viết một tập lệnh với một vòng lặp để sử dụng câu trả lời này, vì nó không đưa nhiều tệp và thư mục vào tài khoản.
Gringo Suave
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.