Войти

Показать полную графическую версию : Сравнение контрольных сумм md5


vodka
05-03-2012, 15:46
Здраствуйте. Думаю прежде чем задавать вопрос как это реализовать . Расскажу картину того как выглядит место где это нужно сделать.=)
Имеется 2 сервера.
на 1-вом сервере происходит бекап базы в определённую папку.
после происходит передача по фтп этого файла(тоесть бекапа базы) с помощью curl5 с 1-го сервера на -> второй сервер, также в определённую папку.
после того как она передалась в определённую папку, Служба advanced host monitor проверяет есть ли в папке этот файл. и если да то отправляет письмо что всё вопорядке. Если его нету в этой папке(не забекапилась не передалась) отправляется письмо что всё плохо.
Бывают случаи когда файл при передачи бьётся, не до пересылается или вообще имеет размер 0 байт. Но он находится в этой этой папке и служба отправляет пиьсмо что всё впорядке.
Поэтому решил сделать проверку на контрольные суммы md5 файла базы до отправки и после уже того файла который находиться на втором сервере.

Тоесть идея такая.
1-ый сервер. бекап базы. создание тхт файла с суммой мд5. передачи по фтп 2-ух файлов на второй сервер.
2-ой сервер.получение 2-ух файлов. тут вот как раз весь вопрос. как лучше проверить суммы этих двух файлов тоесть мы имеем ткст файлик с контрольной суммой базы и саму базу после передачи.
лучше создать второй файлтик тхт и их сравнивать или сохранить сумму в буфер и проверить буфер и тхт файлик. я хз(


в данный момент я сделал только до того шага когда мы имеем на втором сервере файл баз и 1 файл тхт с суммой который передался по фтп.
сейчас имеется вот такой вот скрипт в котором происходит проверка нахождения файла в папке. да-хорошо. нет -плохо.
был бы признателен в подсказках ну или возможных вариантах.


скрипт.

@echo off
chcp 1251

SET FOLDER=%DATE%
SET badbases=
SET err=0

dir N:\Everyday_bas\%FOLDER%\BAckup_bas1.dt /a-d 2>nul >nul && goto 1
SET badbases=%badbases% bas1,
SET err=1
:1

dir N:\Everyday_bas\%FOLDER%\BAckup_bas2.dt /a-d 2>nul >nul && goto 2
SET badbases=%badbases% bas2,
SET err=1
:2

IF "%err%"=="0" goto ok
echo ScriptRes:Bad:%badbases%
exit

:0k

echo ScriptRes:0k:%bsdbases%
exit

Iska
05-03-2012, 17:00
тут вот как раз весь вопрос. как лучше проверить суммы этих двух файлов тоесть мы имеем ткст файлик с контрольной суммой базы и саму базу после передачи. »
Внешней утилитой. Например, «Microsoft File Checksum Integrity Verifier» (Информация о программе File Checksum Integrity Verifier и ее описание (http://support.microsoft.com/?kbid=841290)):
@echo off
setlocal enableextensions enabledelayedexpansion

set sArcFile=%~1
set sMD5File=%~2

if defined sArcFile (
if exist "%sArcFile%" (
if defined sMD5File (
if exist "%sMD5File%" (
for /f "skip=3 tokens=1" %%i in (
'fciv.exe "%sArcFile%"'
) do set sCalcMD5=%%i

<"%sMD5File%" set /p sInMD5=

if defined sCalcMD5 (
if defined sInMD5 (
if /i "%sInMD5%" equ "%sCalcMD5%" (
echo File [%sArcFile%] sent correctly
) else (
echo Checksum not equal
)
) else (
echo Can't determine in-hash
)
) else (
echo Can't calculate hash of [%sArcFile%]
)
) else (
echo Not found checksum file [%sMD5File%]
)
) else (
call :Usage
)
) else (
echo Not found archive file [%sArcFile%]
)
) else (
call :Usage
)
endlocal
exit /b 0

:Usage
echo %~nx0 ^<Archive file^> ^<MD5 file^>
exit /b 0

Предполагается, что «fciv.exe» доступен через PATH, текстовый файл с контрольной суммой содержит одну строку с вычисленной суммой MD5.

vodka
05-03-2012, 17:11
спс за ответ.=) видимо я неправлино составил вопрос.
мне больше интеерсно как правильно оформить скрипт чтобы он делал всё это автоматически.
тоесть проверку сумм.
короче говоря я незнаю как правильно подправить скриптик для того чтобы он проверял не только наличие файла но и чтобы совпадала контрольная сумма.

Iska
05-03-2012, 18:58
чтобы он проверял не только наличие файла но и чтобы совпадала контрольная сумма. »
Выложенный мною пакетный файл это и делает. Вы его пробовали?

vodka
05-03-2012, 23:25
извиняюсь =) забыл уточнить что для создания сумм использовал программу под названием md5(фряшная но импортированная и под дос).
Ей как раз я и создавал контрольные суммы.
стандартный пакет который закинул в программс файлс.
после чего в тхт документике прописал адрес программы потом команду md5 и название файла после перенаправление вывода в файл.
тоесть саму программу то я нашёл и она прекрасно всё выполняет.
можно сказать дело за малым. создание второй контрольной суммы и её проверки .
кстати да спс за ссылку. когда гуглил эту программу тоже видел. но посоветовали md5.

Iska
05-03-2012, 23:40
vodka, мы явно говорим на разных языках :(.

Приведите ссылку на загрузку Вашего:
для создания сумм использовал программу под названием md5(фряшная но импортированная и под дос). »
средства и укажите путь, куда конкретно Вы его помещаете в:
закинул в программс файлс. »

vodka
05-03-2012, 23:58
возможно=) к сожалению я в этой сфере не продвинутый специалист=) и бывает что в банальных темах могу имметь в виду совсем другое.
в данный момент болею=) поэтому не могу посомтреть точно что и как. вот по памяти вспомнил что надо решить данный вопрос.

http://www.fourmilab.ch/md5/

вот эта программка с помощью который реализую данные действия.
как я понимаю где она находится в системе всё равно. ибо в батнике можно прописать любой путь.

vodka
10-03-2012, 20:57
Прошу Прщения=)))) только недавно заметил=) что есть скрытый текст=)))))))))))))
счас разбираюсь=)) видимо когда болел саовем ничего не видел=)

silalex
08-01-2013, 21:24
Подскажете, как можно убедиться по md5-хешам, что файлы одинаковые?

kiripanda
08-01-2013, 22:43
Никак. Но можно предполагать с определённой долей вероятности

silalex
09-01-2013, 05:31
Никак. »
Что так сразу ?:)

Iska
09-01-2013, 07:11
Что так сразу ? »
silalex, существует крайне низкая, но ненулевая вероятность, что разные файлы могут иметь один и тот же md5 хэш. В серьёзных продуктах вослед сравнению по хэшу делается побайтное сравнение файлов, имеющих одинаковый хэш.

Ваша глобальная цель какова?




© OSzone.net 2001-2012