Команда cksum в Ubuntu: проверка контрольных сумм и целостности

Введение в контроль целостности данных

При системном администрировании серверов Linux после сетевой синхронизации или создания резервных копий критически важно убедиться, что файлы не были повреждены или скомпрометированы. В этом практическом руководстве мы подробно разберем штатную утилиту cksum в Ubuntu 24.04, научимся вычислять контрольные суммы и на реальных примерах проверять подлинность данных.

Базовый синтаксис cksum и расчет контрольной суммы для одного файла

Для изолированного тестирования развернем отдельный рабочий каталог с помощью mkdir -p ~/cksum_demo && cd ~/cksum_demo.

mkdir -p ~/cksum_demo && cd ~/cksum_demo

Затем сформируем тестовый текстовый документ, выполнив echo 'Hello Ubuntu cksum test' > original.txt.

echo ‘Hello Ubuntu cksum test’ > original.txt

Утилита cksum сканирует целевой файл и выводит 32-битное значение контрольной суммы (алгоритм CRC), а также точный размер объекта в байтах.
В стандартном выводе первое число представляет собой рассчитанную контрольную сумму CRC, а второе — объем файла (в данном случае ровно 24 байта).
⚙️ [Ключевые параметры утилиты]

-a, --algorithm : Позволяет выбрать алгоритм вычисления хеша (например, md5, sha1, sha256) вместо классического CRC.
-c, --check : Выполняет пакетную проверку состояния файлов по заранее сохраненному списку контрольных сумм.
--untagged : Формирует классический вывод без указания префикса алгоритма (только хеш и имя файла).
--base64 : Отображает полученный дайджест в представлении base64 вместо стандартного шестнадцатеричного.
--raw : Выводит результат вычислений в виде “сырых” бинарных байтов.

cksum original.txt

Сравнение нескольких объектов и обнаружение повреждений

Подготовим идентичный дубликат исходного документа с помощью команды cp original.txt copy.txt.

cp original.txt copy.txt

Для имитации несанкционированного изменения создадим еще одну копию и добавим в нее произвольную строку через cp original.txt modified.txt && echo 'unexpected change' >> modified.txt.

cp original.txt modified.txt && echo ‘unexpected change’ » modified.txt

Теперь запустим одновременный анализ всех трех документов командой cksum original.txt copy.txt modified.txt.
Файлы original.txt и copy.txt с абсолютно одинаковым содержимым демонстрируют идентичные CRC (306207352) и размер (24 байта).
В свою очередь, модифицированный modified.txt выдает совершенно другую контрольную сумму (633487654) и возросший объем (42 байта), что позволяет мгновенно зафиксировать факт искажения информации.

cksum original.txt copy.txt modified.txt

Работа со стандартным потоком ввода (stdin) и конвейерами

Передадим текстовую строку непосредственно через конвейер (|) в утилиту с помощью echo 'Streaming text data' | cksum.
Этот подход позволяет оценить контрольную сумму (1759270211) и объем переданного потока (20 байт) «на лету», минуя сохранение промежуточных данных на накопитель.

echo ‘Streaming text data’ | cksum

Проверим целостность сформированного архива на практике, запустив цепочку tar -cf demo_archive.tar original.txt copy.txt && cksum demo_archive.tar.
Утилита корректно обработает созданный архив demo_archive.tar, вернув итоговую сумму (2343346160) и точный размер контейнера (10240 байт).

tar -cf demo_archive.tar original.txt copy.txt && cksum demo_archive.tar

Применение криптографических алгоритмов (SHA256, MD5) и проверка по файлу

Рассчитаем надежный криптографический хеш SHA256 с помощью флага -a sha256 и перенаправим вывод (>) в файл манифеста с помощью cksum -a sha256 original.txt > original.sha256.

cksum -a sha256 original.txt > original.sha256

Ознакомимся с содержимым созданного контрольного файла с помощью команды cat original.sha256.
Внутри сохранена стандартная запись с указанием типа алгоритма, 64-значного шестнадцатеричного дайджеста SHA256 и целевого файла.

cat original.sha256

Для автоматизированной сверки воспользуемся ключом -c, выполнив cksum -c original.sha256.
Утилита повторно сгенерирует хеш для файла, сопоставит его с эталоном и выведет статус original.txt: OK, подтверждающий стопроцентную сохранность данных.

cksum -c original.sha256

Мы подробно рассмотрели ключевые сценарии применения системной утилиты cksum в среде Ubuntu Linux — от простого CRC-анализа до работы с современными криптографическими алгоритмами.
Используйте этот гибкий инструмент в своих bash-скриптах и регулярных регламентах обслуживания серверов для быстрого контроля целостности критически важных архивов и резервных копий.