cksum
Что делает команда cksum в Linux
Команда cksum в Linux — это встроенная утилита для вычисления и проверки контрольной суммы (CRC) файлов или потока данных. Она используется системными администраторами, разработчиками и инженерами DevOps для проверки целостности данных при передаче, копировании или резервном копировании.
Контрольная сумма — это уникальное числовое значение, которое создаётся на основе содержимого файла. Если хотя бы один байт в файле изменится, контрольная сумма также изменится, что позволяет легко определить факт повреждения или изменения данных.
При запуске команда cksum выводит три значения:
- Контрольная сумма (CRC) — число, полученное по алгоритму CRC-32.
- Размер файла (в байтах).
- Имя файла (если файл указан).
Пример простого использования:
cksum example.txtВывод может быть примерно таким:
4038471503 1256 example.txtЗдесь 4038471503 — контрольная сумма, 1256 — размер файла в байтах, а example.txt — имя проверяемого файла.
Основные параметры команды cksum в Linux
Хотя команда cksum в Linux имеет минимальное количество опций, она поддерживает несколько полезных параметров, совместимых с другими утилитами GNU. Рассмотрим основные из них.
1. Использование стандартного потока ввода
Если не указывать имя файла, cksum будет читать данные из стандартного ввода. Это позволяет применять команду к результату работы других программ:
echo "Hello World" | cksumТакой приём часто используют при автоматической проверке данных в конвейерах (pipes) или при обработке логов.
Если вы проверяете результат работы скрипта или вывода программы, перенаправление потока через
cksum поможет убедиться, что данные не были искажены в процессе обработки.2. Проверка нескольких файлов
Можно указать сразу несколько файлов:
cksum file1.txt file2.txt file3.txtКоманда вычислит контрольные суммы для каждого файла по отдельности. Это удобно при проверке содержимого больших архивов, бэкапов или пакетов перед передачей на сервер.
Храните список контрольных сумм всех файлов проекта в отдельном
.crc файле. Это ускорит проверку целостности при массовом сравнении данных.3. Сравнение контрольных сумм
Хотя команда cksum в Linux не имеет встроенной функции проверки по ранее сохранённым значениям (в отличие от md5sum или sha256sum), её можно использовать совместно с другими инструментами:
cksum file.txt > checksum.txt
cksum -c checksum.txtПараметр -c здесь используется в GNU-совместимых системах (например, в некоторых дистрибутивах Linux с расширенной версией cksum). Однако в классической реализации POSIX он может отсутствовать. Поэтому для проверки контрольных сумм следует применять ручное сравнение:
cksum file.txt | diff - checksum.txtЕсли различий нет, значит файл не был изменён.
Практическое использование команды cksum в Linux
Рассмотрим реальные сценарии, где команда cksum в Linux применяется в системном администрировании и DevOps.
1. Проверка целостности после копирования
При передаче файлов между серверами важно убедиться, что данные не искажены. Для этого можно использовать cksum до и после копирования:
# На исходном сервере
cksum backup.tar.gz > checksum.txt
# На целевом сервере
cksum backup.tar.gz > new_checksum.txt
diff checksum.txt new_checksum.txtЕсли вывод diff пуст, значит файлы идентичны. Этот метод прост и не требует установки дополнительных пакетов.
2. Интеграция с системами CI/CD
Во многих пайплайнах CI/CD важно убедиться, что артефакты сборки не были изменены. cksum можно использовать в автоматизированных скриптах:
#!/bin/bash
artifact="build/output.zip"
expected_sum=$(cat expected_checksum.txt | awk '{print $1}')
actual_sum=$(cksum "$artifact" | awk '{print $1}')
if [ "$expected_sum" != "$actual_sum" ]; then
echo "Ошибка: контрольная сумма не совпадает!"
exit 1
else
echo "Контрольная сумма подтверждена."
fiТакой скрипт быстро выявит повреждения сборки при автоматическом деплое.
3. Проверка содержимого каталогов
Можно сгенерировать список контрольных сумм для всех файлов каталога:
find /var/log -type f -exec cksum {} \; > log_checksums.txtПозже можно сравнить этот список с новым, чтобы определить, какие файлы были изменены:
find /var/log -type f -exec cksum {} \; > new_checksums.txt
diff log_checksums.txt new_checksums.txtТакой способ помогает отслеживать изменения в системных логах и конфигурациях.
Преимущества и особенности использования cksum
- Простота — команда
cksumдоступна во всех Unix-подобных системах без установки дополнительных пакетов. - Скорость — вычисление CRC происходит быстро, даже на больших файлах.
- Совместимость — результаты
cksumстандартизированы POSIX, что делает их одинаковыми во многих системах. - Ограничение — алгоритм CRC-32 не столь надёжен, как криптографические хеши (например, SHA256). Его достаточно для проверки целостности, но не для защиты от преднамеренных изменений.
Если вы хотите проверить не только целостность, но и подлинность файла (например, защиту от подмены), используйте
sha256sum вместо cksum.Заключительные рекомендации по работе с командой cksum в Linux
Хотя команда cksum в Linux часто недооценивается, она остаётся важным инструментом для быстрой и надёжной проверки целостности данных. Её простота делает её отличным выбором в автоматизированных скриптах, резервных копиях и при передаче файлов по сети.
Используйте cksum там, где требуется минимальная зависимость от сторонних утилит и высокая скорость проверки. В сочетании с утилитами diff, awk и find команда превращается в мощный инструмент контроля данных в Linux.
Итого:
- Команда
cksumвычисляет CRC-32 контрольную сумму. - Работает с файлами и стандартным вводом.
- Подходит для проверки целостности при копировании, резервировании и автоматизации.
- Простая, быстрая и совместимая со всеми Unix-системами.