Có lệnh nào so sánh hình ảnh đĩa mềm (ví dụ: tệp .iso) với nội dung thực tế của đĩa mềm mà hình ảnh được ghi trên (vd / dev / fd0) không?
Có lệnh nào so sánh hình ảnh đĩa mềm (ví dụ: tệp .iso) với nội dung thực tế của đĩa mềm mà hình ảnh được ghi trên (vd / dev / fd0) không?
Câu trả lời:
Một tập tin thiết bị đĩa mềm là một tập tin. Bất kỳ lệnh nào đọc tệp sẽ làm việc trên nó.
cmp /dev/fd0 image.fat
Vượt qua -ltùy chọn nếu bạn muốn một danh sách tất cả các byte khác nhau; đối với tiêu dùng của con người, điều này chủ yếu hữu ích ở dạng
cmp -l /dev/fd0 image.fat | wc -l
để biết có bao nhiêu byte khác nhau. Chạy cmp -s /dev/fd0 image.fatnếu bạn không muốn bất kỳ đầu ra nào, chỉ là trạng thái trả về 0 nếu hai tệp giống nhau và 1 nếu chúng khác nhau.
Điều này so sánh các hình ảnh byte theo byte. Nếu đĩa mềm và hình ảnh chứa các tệp và bạn chỉ muốn so sánh các tệp chứ không phải siêu dữ liệu (ngày tệp, v.v.) cũng như không gian trống, hãy gắn đĩa mềm và hình ảnh và so sánh các cây thư mục.
Tôi không có đĩa mềm để kiểm tra nữa, nhưng tôi đoán:
diff <( dd if=/dev/fd0 ) floppy.img
các <( dd ..... )lần đọc các nội dung của đĩa mềm và hành động như thể nó là một tập tin vào diff. Sau đó diff so sánh nó với tập tin.
cmplà một thay thế thả trong cho difftrường hợp cụ thể này. Kudos đến Gilles cho cmpgợi ý.
<(dd if=dev/fd0) is an awfully complicated way of writing / dev / fd0 . Are you sure you didn't mean to write diff <(cat / dev / fd0 | dd if = - | tee / dev / fd / 3 3> & 1 | tr az az | tail -n +1) floppy.img ? And on top of that diff` có xu hướng không đối phó với nhị phân dữ liệu tốt, cmplà công cụ phù hợp ở đây.
<( dd if=/dev/fd0 ). Nhưng OK, bạn đã đưa ra quan điểm của mình; Tôi chỉ không chắc chắn nếu một đồng bằng /dev/fd0sẽ đọc từ thiết bị chứ không phải kiểm tra nút thiết bị. Đó là lý do tại sao tôi thêm ma thuật đen <( ... ).
<(...)-magic; o)