Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Сравнение контрольных сумм md5 (http://forum.oszone.net/showthread.php?t=229587)

vodka 05-03-2012 15:46 1872866

Сравнение контрольных сумм md5
 
Здраствуйте. Думаю прежде чем задавать вопрос как это реализовать . Расскажу картину того как выглядит место где это нужно сделать.=)
Имеется 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 1872918

Цитата:

Цитата vodka
тут вот как раз весь вопрос. как лучше проверить суммы этих двух файлов тоесть мы имеем ткст файлик с контрольной суммой базы и саму базу после передачи. »

Внешней утилитой. Например, «Microsoft File Checksum Integrity Verifier» (Информация о программе File Checksum Integrity Verifier и ее описание):
читать дальше »
Код:

@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 1872928

спс за ответ.=) видимо я неправлино составил вопрос.
мне больше интеерсно как правильно оформить скрипт чтобы он делал всё это автоматически.
тоесть проверку сумм.
короче говоря я незнаю как правильно подправить скриптик для того чтобы он проверял не только наличие файла но и чтобы совпадала контрольная сумма.

Iska 05-03-2012 18:58 1873005

Цитата:

Цитата vodka
чтобы он проверял не только наличие файла но и чтобы совпадала контрольная сумма. »

Выложенный мною пакетный файл это и делает. Вы его пробовали?

vodka 05-03-2012 23:25 1873166

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

Iska 05-03-2012 23:40 1873175

vodka, мы явно говорим на разных языках :(.

Приведите ссылку на загрузку Вашего:
Цитата:

Цитата vodka
для создания сумм использовал программу под названием md5(фряшная но импортированная и под дос). »

средства и укажите путь, куда конкретно Вы его помещаете в:
Цитата:

Цитата vodka
закинул в программс файлс. »


vodka 05-03-2012 23:58 1873191

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

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

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

vodka 10-03-2012 20:57 1876389

Прошу Прщения=)))) только недавно заметил=) что есть скрытый текст=)))))))))))))
счас разбираюсь=)) видимо когда болел саовем ничего не видел=)

silalex 08-01-2013 21:24 2062049

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

kiripanda 08-01-2013 22:43 2062103

Никак. Но можно предполагать с определённой долей вероятности

silalex 09-01-2013 05:31 2062196

Цитата:

Цитата kiripanda
Никак. »

Что так сразу ?:)

Iska 09-01-2013 07:11 2062223

Цитата:

Цитата silalex
Что так сразу ? »

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

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


Время: 08:03.

Время: 08:03.
© OSzone.net 2001-