Как проверить копию файла по SHA‑256
Сравните байты исходника и копии, запишите контрольную сумму и проверьте архив после переноса на другой диск.
Вы отправили на внешний диск большой архив курса. Файловый менеджер показывает то же имя и тот же округлённый размер. Несколько фотографий из архива открываются. Этого достаточно для беглой проверки, но как проверить весь файл без распаковки и ручного просмотра? Посчитайте SHA‑256 у оригинала и у копии.
Контрольная сумма вычисляется из содержимого файла. Переименование или перемещение не меняет SHA‑256, если байты остались прежними. Совпадение хешей даёт практически надёжную проверку равенства содержимого, если вы вычислили их для нужных файлов и доверяете исходной сумме. Хеш не объясняет, какая именно часть отличается, и не проверяет, что содержимое исходника годится для восстановления. Поэтому есть два разных вопроса. «Копия совпадает?» проверяется хешем. «Могу ли я открыть и использовать материал?» проверяется восстановлением.
Сделайте первый тест на одном архиве
Предположим, в папке Downloads лежит lesson-pack.zip на 1,8 ГБ, а его копия — в E:\Archive. Сначала убедитесь, что проводник уже завершил копирование. Закройте приложение, которое записывало архив, чтобы файл не менялся во время чтения. В PowerShell подставьте собственные пути, включая букву внешнего диска. Команды только читают файлы.
$original = Get-FileHash -Algorithm SHA256 -LiteralPath 'C:\Users\Reader\Downloads\lesson-pack.zip'
$copy = Get-FileHash -Algorithm SHA256 -LiteralPath 'E:\Archive\lesson-pack.zip'
$original.Hash
$copy.Hash
$original.Hash -eq $copy.Hash
В конце вы увидите True или False. -LiteralPath читает путь буквально. Квадратные скобки остаются частью имени файла. Не нужно копировать сам вывод с путём в публичное обсуждение. Если хотите согласовать проверку с другим человеком, передайте сумму и понятное имя файла, не раскрывая локальную структуру папок.
Большой файл считывается целиком, поэтому результат может появиться не сразу. Сначала проверьте доступность диска и отсутствие сообщения об ошибке. Если чтение прервано, повторите сравнение после устранения причины. Прерванная команда не даёт результата, который можно интерпретировать как несовпадение.
Зафиксируйте исходную сумму до отключения носителя
Сегодня обе копии на месте. Через год у вас может остаться только диск. Для повторной проверки сохраните небольшой текстовый лист со столбцами «файл», «SHA‑256», «когда получена сумма», «какая это версия». Запись lesson-pack.zip, SHA‑256 …, пакет курса после занятия 12 понятнее, чем длинная строка без подписи. Если архивы имеют одинаковые имена, добавьте дату экспорта или идентификатор курса.
Храните список рядом с архивом для удобства и ещё в отдельной записи, которой доверяете. Если и архив, и его манифест лежат только на одном носителе, потеря диска затронет оба. Если источник неизвестен, приложенная сумма не доказывает подлинность. Злоумышленник может заменить и файл, и текст с ожидаемым хешем. Если нужно подтвердить происхождение файла, получите ожидаемую сумму через доверенный канал или проверьте цифровую подпись.
Не обновляйте список автоматически при каждом несовпадении. Иначе ожидаемое значение незаметно подстроится под повреждённый файл. Для намеренно обновлённого архива создайте новую запись и отметьте, какая версия её породила.
Разберите несовпадение по порядку
Сначала сравните точные пути и версии. Частая причина — в одной папке пакет после занятия 12, а в другой пакет после занятия 11 с таким же именем. Посмотрите размер в байтах и время изменения. Используйте эти признаки, чтобы подобрать кандидата, затем подтвердите совпадение по хешу. Пересоздание ZIP с теми же распакованными файлами тоже может изменить байты самого архива из-за метаданных, порядка или параметров сжатия.
Если вы ожидали одну и ту же копию, повторите хеширование обоих файлов, пока никто их не записывает. Повторяющиеся разные суммы требуют расследования. Не заменяйте сразу единственную копию. Если есть доверенный исходник и свободное место, сделайте ещё одну копию под новым именем и сверьте её. Это оставит прежний файл доступным для диагностики. Если при повторном чтении один и тот же неизменяемый файл даёт разные значения или возникают ошибки ввода-вывода, зафиксируйте симптом и выясните состояние носителя, прежде чем продолжать массовый перенос.
Проверьте, что результат пригоден к использованию
После совпадения сумм откройте копию архива с внешнего диска и извлеките в пустой тестовый каталог PDF, видео и вложенный текст. Проверьте, что имена читаются, видео открывается и нужная версия документа действительно внутри. Хеш архива ничего не говорит о том, какие файлы в него положили. Если по ошибке архивировали не тот курс, хеши двух копий всё равно совпадут.
Для десятков файлов храните контрольные суммы по относительным путям. Так можно однозначно различить одинаковые имена в разных папках. Формат BagIt описывает один из способов записать такой манифест для целого пакета. Для сегодняшней задачи достаточно одного архива, доверенной исходной суммы и отдельной пробной распаковки.
Упражнение считается выполненным, когда у вас есть запись для конкретной версии, сравнение вернуло True, а тестовые материалы открылись из восстановленной папки. Добавьте дату проверки в журнал копирования. Тогда следующий человек увидит, какая версия уже прошла проверку.
Для тренировки проделайте сравнение на двух маленьких текстовых файлах. Сначала сделайте точную копию и убедитесь, что хеш совпал. Затем добавьте в тестовую копию одну строку и сравните снова. Упражнение покажет, как выглядит ожидаемое несовпадение. Рабочий архив для этого открывать на запись не требуется.