Member
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
|

02.11.2009, 16:19
Уважаемые участники.
Подскажите пожалуйста какую-нибудь несложную в использовании, удобную и хорошую программу, которая позволила бы сравнить два каталога на предмет совпадения их содержимого. При этом необходимо, чтобы утилита сравнивала бы не только деревья каталогов и имена имеющихся в них файлов, но и сами файлы между собой, и при этом производила бы не поверхностное сравнение по внешним признакам, таким как длины файлов, время послелнего изменения и т. п., а сверяла бы файлы посимвольно, байт в байт, независимо от их типа, расширения, формата (бинарный, текстовый) и в случае, если директории не тождественны выводила бы сообщение. Всякие излишества, вроде нахождения различий между похожими текстовыми файлами, поиска похожих картинок и т. п., совершенно не нужны.
Чтобы было понятно, о чем идет речь, поясню суть задачи.
Нужно скопировать с диска одного компьютера на диск другого "бесценные" данные: всякие дистрибутивы ОС, программы, электронные книги, музыку и пр. Компьютеры соединены между собой через Ethernet. Так как объем информации очень велик и хотелось бы иметь твердую уверенность, что она сохранена без ошибок, после завершения копирования очень хочу выполнить такую полную проверку. Можно было бы конечно для этой цели использовать консольную команду xcopy, установив верификацию (ключ /v), но когда стал смотреть и разбираться с этой командой, увидел, что она имеет кучу ключей, по умолчанию работает с какими-то выкрутасами: не копирует пустые каталоги, сбрасывает у скопированного файла атрибут "только для чтения", для того, чтобы она этого не делала, необходимо указать два ключа (ключ /s и /e). А поскольку копировать мне много, решил с этой утилитой не связываться, а воспользоваться обычной графической оболочкой Windows, а потом провести такую проверку. Конечно ошибки подобного рода на современном оборудовании редкость, но тем не менее теоретически при таком большом объеме информации они возможны, да и Ethernet-канал с кабелем - дополнительгный источник ненадежности. Просмотрел Интернет, но ничего подходящего для своей задачи не нашел (очень много информации в общем). Буду рад, если посоветуете какую-нибудь программку. Можно и с графическим интерфейсом, можно и консольную, так чтобы она четко и корректно работала с минимумом усложнений и всяческих наворотов.
Программа нужна под Windows XP.
Можно было бы конечно написать подобную программку и самому, но не хочется убивать на это время.
|
|
|
Специалист
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
|

02.11.2009, 16:36
Для этих целей можно использовать WinDiff, но не очень удобно. Можно ещё Visual SourceSafe, там эта утилита встроена, очень удобная. Но он платный. Другое не юзал.
|
|
|
Member
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
|

02.11.2009, 16:41
Jonano, а что такое WinDiff? Программа, команда Cmd.exe? Что за ПО такое Visual SourceSafe, естественно вкратце? Хороша там эта утилита?
Извиняюсь за вопросы, потому и спрашиваю, что не знаю, а решить проблему хотел бы в кратчайший срок (если полезу в поисковики, то это может занять очень много времени и нет никакой гарантии, что найду что-то подходящее).
|
|
|
Member
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
|

02.11.2009, 18:40
Цитата:
Уважаемые участники.
Подскажите пожалуйста какую-нибудь несложную в использовании, удобную и хорошую программу, которая позволила бы сравнить два каталога на предмет совпадения их содержимого. При этом необходимо, чтобы утилита сравнивала бы не только деревья каталогов и имена имеющихся в них файлов, но и сами файлы между собой, и при этом производила бы не поверхностное сравнение по внешним признакам, таким как длины файлов, время послелнего изменения и т. п., а сверяла бы файлы посимвольно, байт в байт, независимо от их типа, расширения, формата (бинарный, текстовый) и в случае, если директории не тождественны выводила бы сообщение. Всякие излишества, вроде нахождения различий между похожими текстовыми файлами, поиска похожих картинок и т. п., совершенно не нужны.
|
Araxis Merge.
Правда, различия в файлах вменяемо она показывает только для текстовых файлов, т.к. для бинарных файлов эта операция особого смысла не имеет.
|
|
|
Member
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
|

02.11.2009, 19:10
Garik. А бинарные файлы-то эта программа умеет сравнивать между собой побайтно на предмет совпадают - не совпадают? Естественно находить в них различия бессмысленно, но мне этого и не нужно. А файлы меня в силу описманной проблемы интересуют в первую очередь бинарные, ну и текстовые, где они есть, тоже не меньше.
Второй не менее важный момент. Нужно, чтобы утилита сравнивала не только пары отдельных файлов, но и проводила сравнение всех файлов в каталогах в автоматическом режиме. Умеет ли это делать данная программа (Araxis Merge)?
P. S.
Одна просьба к ув. участникам. Если вам есть, чего подсказать, объяснить мне за короткий срок, буду вам очень благодарен. Если ничего, кроме "Посмотри в Гугле", вы сказать не в состоянии - проходите мимо, я не хочу на таких собеседников терять свое время. Извините, что вышло так резко.
|
|
|
Любитель давать советы
Сообщений: 4,291
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
|

03.11.2009, 01:35
Все перечисленное умеют делать TotalCommander и Far
Upd. Araxis Merge отлично сравнивает двоичные файлы, но это здесь, скорее, стрельба из пушки по воробьям.
|
|
|
Member
Сообщений: 384
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.02.2005
|

03.11.2009, 03:39
Цитата:
Все перечисленное умеют делать TotalCommander и Far
|
Я пользуюсь TotalCommander`ом для синхронизации своих проектов на Делфи между 2-мя ПК через флешку. Просто копируешь и при запросе перезаписи отвечаешь копировать только новые. Всё. Никаких проблем не замечал. Смотрит Тотал только по времени файла, ничего побайтно не сравнивает. Это и не нужно. Matematic, ты усложняешь задачу, мне кажется.
|
|
|
Member
Сообщений: 4,232
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 15.05.2003
|

03.11.2009, 06:37
Ну я не знаю такой программы. А что, поиск в Гугле ничего не дал? :?
|
|
|
Member
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
|

03.11.2009, 07:59
Цитата:
Смотрит Тотал только по времени файла, ничего побайтно не сравнивает. Это и не нужно. Matematic, ты усложняешь задачу, мне кажется.
|
AfIS, но ведь мне нужно как раз сравнить все файлы побайтно. TC у меня есть и это было первое средство, которым я попытался воспользоваться, но сразу же убедился, что директории он сравнивает по именам и по имеющимся отличиям в размерах и датах изменения файлов, это стало сразу же понятно по мгновенной скорости сранения двух больших каталогов. А это мне не нужно. Мне нужно именено побайтное сравнение всех файлов в каталогах и подкаталогах. Зачем, см. мой первый пост в теме, там я описал проблему. Конечно, любой из вас мне может возразить, что надежность современных винчестеров, материнок, контроллеров настолько высока, что этим заниматься не стоит, что вероятность возникновения ошибки и искажения даже при передаче через Ethernet-канал ничтожно мала, даже при огромном объеме переданной и записанной информации. Тем не менее я очень хочу провести такую проверку.
Цитата:
Ну я не знаю такой программы. А что, поиск в Гугле ничего не дал? :?
|
Да смотрел я в поиске, правда в Яндексе, но ни все ли равно? Очень много ответов нашлось на мой вопрос, куча всяких аналогичных программ от всевозможных производителей. Правда такое изобилие сбило меня с толку, да и в описаниях упор в основном делается на возможность сравнения не каталогов, а двух текстовых файлов между собой с выводом отличий в два окна. Это меня не интересует в данном случае. А умеет ли программа делать в точности то, что мне надо, я из этих описаний не понял. Может быть они это делают также поверхностно, как и Total Commander. Разыскивать же 5 - 6 похожих друг на друга по функциональности программ, скачивать их все, разбираться с пользовательским интерфейсом каждой, выяснять делает ли она сравнение в таком виде, как я хочу, не очень то хочется. Вот и обатился с вопросом на форум, надеясь, что кто-то из Вас когда-то сталкивался с подобной несложной проблемой, знает программы и утилиты, элементарно ее решающие. Но чувствую, ответа здесь не дождусь: желающих поучить будет хоть отбавляй, а помочь или посоветовать что-то дельное не найдется. Хотя проблема-то простейшая.
|
|
|
Member
Сообщений: 384
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.02.2005
|

03.11.2009, 08:52
Ну если так закоснелось... Тогда напиши сам прогу. Пусть она состоит из клиентской и серверной части. На TCP/IP. Этот протокол уже сам проверяет целостность передачи, так что канал будет надёжен. Одна часть (пусть клиент) сканирует рекурсивно выбранный каталог и сверяет со структурой от серверной части. Если файл не найден на той или иной стороне, то выдаётся об этом сообщение (и например автоматически копируется на ту часть, где его нет). Если файл есть, но размер различен, выдаём сообщение. Если файл есть и размеры совпадают, то сравниваем ещё и по содержимому. Для уменьшения трафика можно разбивать его на блоки (по нескольку кБ) и сравнивать по контрольным суммам блоков. Если все суммы одинаковы, то файлы идентичны, иначе передаются отличающиеся блоки. Так, например, если изменён/дописан только конец файла, то и переслан будет только последний блок, а не весь файл.
|
|
|
Member
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
|

03.11.2009, 09:03
AfIS, это-то можно сделать.
Только непонятно зачем усложнение с клиентом и сервером и Интернет-протоколом. Мне кажется, что в таком случае гораздо проще написать программу, просто сравнивающую два различных каталога на разных дисках. Если к дискам и каталогам установлены права общего сетевого доступа, то тот факт, что они расположены на разных компьютерах не будет помехой, ОС они будут восприниматься как одно и то же. Все проблемы с файловой системой, с ее абстрактным представлением, с передачей содержимого файлов и каталогов по сети лягут на ОС, прикладная программа просто нек будет об этом знать. Прикладную же программу можно будет запускать на одном из компьютеров. Клиент-серверная система нужна только, если к дискам или каталогам нет общего сетевого доступа, но это не проблема. Или я в чем-то не прав.
|
|
|
Member
Сообщений: 384
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.02.2005
|

03.11.2009, 09:06
Вообще-то я так и не понял обоснования. Если ты копируешь TotalCommander`ом, и говоришь "Заменит всё", то он тебе и по сети передаст всё ТОЧНО. Что за паранойя? Я понимаю если бы не было никакой проверки в канале передачи или при записи на диск. Как ты хотел воспользоваться Виндовым копированием, так и надо было сделать. Ошибки "в кабеле" и потеря пакетов устраняется программно на одном из уровней самого протокола TCP/IP. С учётом буферизации дисковых операций тебе наврядли поможет простое чтение после записи. Короче канал надёжен! Открой два окна Проводника и перетащи мышкой, что нужно. А вероятность сбоя, которую ты попытаешся устранить дополнительной программой, вернётся за счёт ввода этой самой программы, как дополнительного элемента - источника сбоя.
|
|
|
Member
Сообщений: 384
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.02.2005
|

03.11.2009, 09:09
Цитата:
AfIS, это-то можно сделать.
Только непонятно зачем усложнение с клиентом и сервером и Интернет-протоколом. Мне кажется, что в таком случае гораздо проще написать программу, просто сравнивающую два различных каталога на разных дисках. Если к дискам и каталогам установлены права общего сетевого доступа, то тот факт, что они расположены на разных компьютерах не будет помехой, ОС они будут восприниматься как одно и то же. Все проблемы с файловой системой, с ее абстрактным представлением, с передачей содержимого файлов и каталогов по сети лягут на ОС, прикладная программа просто нек будет об этом знать. Прикладную же программу можно будет запускать на одном из компьютеров. Клиент-серверная система нужна только, если к дискам или каталогам нет общего сетевого доступа, но это не проблема. Или я в чем-то не прав.
|
Так и я о том же! Не морочь себе голову. Копируй проводником! Это достаточно надёжно.
Я предлагал наладить свой канал между двумя прогами (а не Самба виндовая), так как ты писал, что тебя настораживает "... Ethernet-канал с кабелем - дополнительгный источник ненадежности".
|
|
|
Member
Сообщений: 388
Сказал(а) спасибо: 31
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 15.01.2007
|

03.11.2009, 09:42
AfIS, ни о какой программе, дополнительно проверяющей сетевой канал передачи по протоколу, служащей посредником между программным обработчиком/дешифратором сетевого трафика по протоколу (как уж он, этот дешифратор потока, по правилам называется, я не знаю) и прикладным ПО, речи и в помине нет. Это и сложно, и ни к чему, и у меня, если уж честно, нет достаточных знаний ОС и сети, чтобы написать подобное сейчас самому. Да это и бессмысленная затея.
Все гораздо проще.
Я хочу скопировать каталог (или раздел диска) с одного компьютера на другой с помощью обычного проводника Windows. А после этого запустить проверку, которая бы сравнила бы содержимое обоих каталогов, каждый содержащийся в них файл побайтно, чтобы установить, что копирование произошло без ошибок. Все!
Задача элементарная, участвовать в дискуссии на предмет нужна или не нужна такая проверка, не хочу. Вопрос единственный - есть ли такая утилита, которая бы позволила выполнить эту проверку в таком виде, как я хочу, и без особых сложностей и если есть, подскажите название.
|
|
|
Member
Сообщений: 6,201
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 07.06.2002
|

03.11.2009, 10:34
Matematic, да, Araxis Merge сравнивает и директории. И умеет сравнивать бинарные файлы побайтно.
В более простом варианте, как тебе уже выше подсказывали, это умеют делать FAR и Total Commander - правда в этом случае выдается бинарный результат - файл совпадает или не совпадает. Но ведь именно это тебе и нужно, если я правильно понял.
Так попробуй эти утилиты! FAR бесплатный, TC - условно бесплатный.
|
|
|
Опции темы |
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
|