Вопрос или проблема
У меня есть локальный файл file1
, а также контрольная сумма sha256 оригинального файла.
Удаленный сервер – это rhel8 server
, локальный инструмент sha256sum
внутри git bash
на ноутбуке с Windows10.
Ради бога, я, кажется, не могу адекватно сравнить их.
На удаленном сервере я получаю
~> sha256sum file1
55dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27 file1
Итак, мой вопрос в том, как я могу сравнить эту локально созданную сумму с контрольной суммой, которую я получил на удаленном сервере?
Я предполагал, что должен быть способ сделать это с помощью самой команды sha256sum
, которая затем как-то выводила бы контрольные суммы совпадают
или контрольные суммы различаются
.
Или действительно приходится полагаться на зрение, чтобы сравнить эти два значения, или создавать дополнительные текстовые файлы, содержащие каждую контрольную сумму, и выполнять сравнение?
Лучший способ, который я смог придумать, это
echo [sha удаленного файла] ; sha256sum file1
55dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27
55dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27 *file1
… а затем сравнивать эти две строки, используя свое зрение.
Нет ли ничего лучше?
В инструкции сказано
-c, --check
прочитать контрольные суммы SHA256 из файлов и проверить их
Но что это практически означает?
sha256sum file1 --check [sha удаленного файла]
звучит логично для меня, но не работает.
Также не работает
:~> sha256sum file1 --check
sha256sum: file1: сформатированные строки контрольной суммы SHA256 не найдены
Вам нужно поместить строку контрольной суммы в файл и использовать это:
- поместите
55dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27 file1
в файл, скажем, checksum.txt, рядом с file1. sha256sum -c checksum.txt
.
В качестве альтернативы, sha256sum также может читать файлы контрольных сумм из стандартного ввода:
echo "55dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27 file1" | sha256sum -c -
Спасибо @ZOOM за комментарий. Я нашел рабочее решение на YouTube. И ответ – grep
:~> sha256sum file1 | grep 5dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27
Если это успешно, выход вашей локальной команды sha совпадает с удаленным хешем.
Ответ или решение
Для сравнения локального файла с контрольной суммой SHA256 оригинального файла, находящегося на удалённом сервере RHEL 8, вы можете использовать несколько подходов.
1. Сравнение с использованием файла контрольных сумм
Наиболее простым и надёжным способом является создание текстового файла, в котором будет записана контрольная сумма и имя файла. Вот пошаговая инструкция:
Шаг 1: Создание текстового файла контрольных сумм
На удалённом сервере выполните следующую команду, чтобы получить контрольную сумму вашего файла:
sha256sum file1
Вы увидите вывод, который будет похож на:
55dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27 file1
Скопируйте эту строку и создайте текстовый файл, например, checksum.txt
, на сервере с содержимым:
55dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27 file1
Шаг 2: Использование команды sha256sum для проверки
Теперь, находясь в вашем терминале Git Bash на Windows, выполните следующую команду:
sha256sum -c checksum.txt
Эта команда проверит контрольную сумму вашего локального файла и сообщит, совпадает ли она с сохраненной в checksum.txt
. Если контрольные суммы совпадают, вы получите вывод:
file1: OK
Если контрольные суммы различаются, будет показано сообщение об ошибке.
2. Проверка контрольной суммы с помощью стандартного ввода
Второй вариант заключается в том, чтобы использовать стандартный ввод. Вы можете передать строку с контрольной суммой непосредственно в команду sha256sum
. Для этого выполните следующую команду в вашем термнале Git Bash:
echo "55dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27 file1" | sha256sum -c -
Если контрольная сумма совпадает, то вывод будет аналогичен:
file1: OK
3. Использование grep для быстрой проверки
Если вы предпочтете более простой и быстрый способ, вы можете воспользоваться командой grep
. Сделайте хэш вашего локального файла и сравните его с контрольной суммой:
sha256sum file1 | grep 55dcd0a7046a24e5ee296d1481d6f787b1956d138bbfb6e44ca8591006367f27
Если совпадение найдено, то это означает, что контрольная сумма локального файла соответствует оригинальной.
Вывод
В зависимости от ваших потребностей, вы можете выбрать один из вышеописанных методов. Первый и второй подходы более системные и уменьшают вероятность ошибки, в то время как использование команды grep
является быстрой альтернативой. Каждый из этих методов обеспечит надёжную проверку целостности файла и поможет убедиться в том, что файл на вашем локальном компьютере соответствует оригиналу на удалённом сервере.