Kiểm tra tính chính xác của các tập tin sao chép


14

Sau khi tôi sao chép, hãy nói hơn 50 GB (30.000 tệp bao gồm các định dạng khác nhau) của tệp từ ổ cứng nội bộ sang ổ đĩa ngoài, có cách nào để tìm hiểu xem mọi thứ đã được sao chép chính xác chưa? Ngoài ra nếu tôi dừng lại ở giữa bằng cách hủy thao tác và sau đó nói hợp nhất khi tiếp tục thao tác thì liệu tính chính xác có bị ảnh hưởng không?

Tôi có thể sử dụng các ứng dụng như back-in-timenhưng tôi rất kén chọn trong việc sao chép tệp và lần sau tôi có ý định sử dụng copythao tác và nói mergethay vì replace. Có nên khi sao chép số lượng lớn các tập tin?


2
bạn có thể tìm thấy một câu trả lời ở đây .
Takkat

Câu trả lời:


16

Tôi đang sử dụng hashdeep để xác minh sao lưu / khôi phục và đôi khi để kiểm tra lỗi hệ thống tệp trong RAID.

Tốc độ phụ thuộc vào chức năng băm nào bạn sử dụng (một số sử dụng nhiều CPU hơn các chức năng khác) cũng như tốc độ đọc của đĩa. Trên hệ thống của tôi hashdeepcó thể xử lý hoặc xác minh khoảng 1 TB / giờ với tốc độ đọc md5 và 300 MB / s.


Ví dụ về tính toán tổng và lưu trữ chúng trong một tệp:

cd my-data
hashdeep -rlc md5 . > ~/checksums.txt

Thông số:

  • r - đệ quy
  • l - sử dụng đường dẫn tương đối
  • c - chỉ định hàm băm
  • . - đệ quy bắt đầu từ thư mục hiện tại
  • > - chuyển hướng đầu ra đến tập tin được chỉ định

Xem trang người đàn ông .


Ví dụ về xác minh tổng kiểm tra và in danh sách các điểm khác biệt:

$ cd /mnt/my-backup
$ hashdeep -ravvl -k ~/checksums.txt .
hashdeep: Audit passed
          Files matched: 40914
Files partially matched: 0
            Files moved: 0
        New files found: 0
  Known files not found: 0

Thông số:

  • a - kiểm toán (so sánh với danh sách tổng kiểm tra đã biết)
  • v- verbose (để có được danh sách không khớp, nhiều vs có nghĩa là dài dòng hơn)
  • k - tập tin băm đã biết

Lưu ý rằng kể từ tháng 3 năm 2016 hashdeepdường như bị bỏ rơi .


13

Có vẻ như nhiệm vụ hoàn hảo cho rsync . Rsync đang so sánh và sao chép khác biệt.

Các rsynctiện ích đầu tiên nảy ra trong tâm trí của tôi khi tôi thấy câu hỏi của bạn. Làm một cái gì đó như dưới đây có thể nhanh chóng hiển thị những tập tin trong thư mục anhưng không phải trong b:

$ rsync -rcnv a/* b/

-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files 
   that would be updated
-v will print the output to stdout verbosely

Đây là một tùy chọn tốt vì bạn cũng có thể so sánh nội dung của các tệp để đảm bảo chúng khớp. rsyncThuật toán delta được tối ưu hóa cho loại trường hợp sử dụng này. Sau đó, nếu bạn muốn làm cho bphù hợp với nội dung của a, bạn chỉ cần xóa -ntùy chọn để thực hiện đồng bộ hóa thực tế.

Một số câu hỏi liên quan:


1
rsync chắc chắn là công cụ cho công việc này, nhưng nó không so sánh và sao chép diffs, mỗi se. Nó so sánh các tập tin bằng cách sử dụng kích thước và băm.
Justin Force

@JustinForce Sử dụng kích thước? Chắc chắn, kích thước khác nhau chắc chắn rằng tệp không hoàn toàn giống nhau, nhưng rsync rất linh hoạt, nó có thể tùy chọn tin cậy siêu dữ liệu (như thời gian) để tránh đọc lại tất cả các tệp. Khi sao chép qua mạng, nó sẽ tính toán hàm băm để phát hiện chính xác các bộ phận thông thường để tránh chuyển chúng, nhưng trên ổ đĩa cục bộ theo mặc định băm không đóng vai trò này (nếu được sử dụng). Bạn thậm chí có thể yêu cầu nó tin tưởng rằng một điểm đến ngắn hơn đã có nội dung chính xác và chỉ cần nối thêm, mặc dù vậy hãy tiếp tục chủ đề.
Stéphane Gourichon

8

Nếu các ứng dụng GUI được đề xuất tại Công cụ so sánh tệp và thư mục? đừng làm điều đó cho bạn, hãy cố gắng diff -rq /path/to/one /path/to/otherlặp lại qua cả hai thư mục, chỉ ghi lại sự khác biệt trên màn hình.


3

Tình huống bạn đang nói quá phức tạp. Mặc dù bạn có thể viết một tập lệnh để tính MD5 của tất cả các tệp bạn muốn sao chép và sau đó so sánh chúng với các tệp được sao chép:

Nếu bạn muốn một cái gì đó đơn giản và nhanh chóng (nó sẽ không hoạt động trong các tình huống rất phức tạp), bạn có thể sử dụng Meld

sudo apt-get install meld

0

Trên "nếu mọi thứ đã được sao chép chính xác", tôi sử dụng một cp (hoặc mv) đã sửa đổi bao gồm kiểm tra (được lưu trữ tùy chọn trong xattr, do đó chỉ phải tính một lần cho nguồn) http://sourceforge.net/projects / crcsum /


1
Mặc dù câu trả lời của bạn là chính xác 100%, nhưng người dùng mới bắt đầu cũng gần như không thể thực hiện được. Do đó, vui lòng chỉnh sửa câu trả lời của bạn và bao gồm các bước về cách tải xuống, biên dịch, cài đặt và gỡ cài đặt crccptrong câu trả lời của bạn! ;-) Bạn luôn có thể để lại liên kết ở cuối câu trả lời của bạn làm nguồn cho tài liệu của bạn ...
Fabby
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.