Контрольные суммы: как считать и сверять
Контрольная сумма — короткая строка, полученная из содержимого файла. Если файл изменился хотя бы на байт, сумма изменится. Так проверяют, что копия совпадает с оригиналом, а данные не повреждены при передаче или хранении. Ниже — как это делать на практике.
Зачем контрольная сумма
Это короткая строка, полученная из содержимого файла. Если файл изменился хотя бы на байт, сумма изменится. Так проверяют, что копия совпадает с оригиналом, а данные не повреждены при передаче или хранении.
Как это работает
Программа читает файл и вычисляет значение по алгоритму. Для одного и того же файла значение всегда одинаково, для изменённого — другое. Сравнив два значения, вы узнаёте, совпадают ли файлы, не открывая их.
Алгоритмы
Распространены несколько алгоритмов, различающихся длиной и скоростью. Для проверки копий подходит любой стандартный. Главное — использовать один и тот же алгоритм при сравнении, иначе значения не совпадут даже у идентичных файлов.
Как посчитать в системе
В большинстве систем есть встроенная утилита. Её запускают для одного файла или для папки целиком, сохраняя список в текстовый файл. Список прикладывают к набору данных или к архиву.
Список сумм
Файл со списком: имя файла и сумма. Он позволяет проверить весь набор одной командой. Храните список рядом с данными и обновляйте при изменениях. Устаревший список бесполезен и вводит в заблуждение.
Сверка
Сравните списки двух копий. Расхождения показывают, какие файлы повреждены или изменились. Если файлов много, автоматизируйте сравнение: глазами это занимает часы и приводит к ошибкам.
Что делать при расхождении
Сначала определите, где ошибка: в источнике или в копии. Повреждённую копию удалите и скопируйте заново. Если сумма меняется при каждом копировании, проверьте носитель и кабель.
Когда проверять
После копирования, после передачи и после длительного хранения. Раз в год для архива достаточно. Проверка перед удалением источника — обязательна.
Ограничения
Сумма подтверждает совпадение байтов, но не смысл. Если исходный файл был испорчен ещё до копирования, сумма совпадёт. Поэтому храните исходник и не перезаписывайте его.
При передаче
Сообщите получателю сумму или приложите список. После скачивания он сравнивает и подтверждает. Это простая договорённость, которая снимает споры о том, кто виноват в повреждении.
При архивировании
Список сумм кладут в архив и отдельно отправляют получателю. Если архив разбит на части, суммы считают для каждой части. Так можно найти повреждённую часть, не перекачивая всё.
Типичные ошибки
Сравнивать разные алгоритмы, хранить устаревший список, не проверять после передачи, считать только размер, игнорировать расхождения. Каждая ошибка приводит к работе с повреждёнными данными.
Итог
Контрольная сумма — простой способ убедиться, что копия совпадает с оригиналом; список сумм хранится рядом с данными и сверяется после каждой передачи.
Почему одной суммы недостаточно для набора
Сумма подтверждает целостность конкретного файла, но не полноту набора. Файл может быть целым, а весь набор — неполным, если часть файлов не скопировалась. Поэтому список сумм должен охватывать все файлы, а проверка — сравнивать списки целиком, а не отдельные строки, которые вы вспомнили.
Как оформить список
Простой текст: сумма и имя файла, по одной строке. Такой список читается любым инструментом и не зависит от программы. Храните его рядом с данными, а копию отправляйте получателю вместе с архивом. Формат не важен, важна согласованность: один алгоритм и одна структура строк во всех проверках.
Как объяснить смысл коллеге
Скажите так: сумма — это отпечаток файла. Если отпечаток совпал, файл дошёл без изменений. Если нет, где-то произошла ошибка, и его нужно передать заново. Такое объяснение занимает одну фразу и снимает вопрос, зачем тратить время на непонятные строки символов.
Проверка больших наборов
Для набора из тысяч файлов ручная сверка невозможна. Сохраните список сумм в файл и сравните два списка автоматически. Расхождения выведутся списком, и вы сразу увидите, какие файлы нужно переслать. Это занимает секунды и надёжнее, чем выборочная проверка наугад.
Как поступить, если суммы не совпадают после повторной передачи
Проверьте сам источник: возможно, файл был изменён уже после копирования. Сравните дату изменения и содержимое. Если источник цел, а копия стабильно расходится, замените носитель или канал. Повторять передачу на том же неисправном оборудовании бессмысленно — вы получите тот же результат.
Чек-лист
- Один алгоритм используется во всех проверках.
- Список сумм охватывает все файлы набора.
- Список хранится рядом с данными и обновлён.
- Сверка выполнена после передачи, а не только после копирования.
- При расхождении найден повреждённый файл.
- Источник не удалён до успешной проверки копии.
- Получатель подтвердил совпадение сумм.
Частые вопросы
Заменяет ли сумма проверку смысла?
Нет, она подтверждает только совпадение байтов.
Что сравнивать?
Списки сумм, посчитанные одним алгоритмом.
Что важнее всего?
Сверка после каждой передачи.
Пример
При передаче архива два файла из трёхсот не открылись. Сверка списков сумм показала, какие именно, и их перекачали отдельно, не повторяя всю передачу.
Итог
Контрольные суммы позволяют найти повреждённые файлы без полной перезагрузки набора.