Одинаковые файлы по содержанию в разных подпапках

Обсуждение программы nnBackup

Одинаковые файлы по содержанию в разных подпапках

Postby Amet » Thu, 06 Nov 2008, 18:57

или в корне, или где ещё - возможно ли минимальными движениями nnBackup-ом определить идентичность
файлов источника файлам приёмника, а остальные по sync2? Т.е. мне надо сравнить равен ли источник приёмнику по содержимому, подскажите как сделать это, на пример, в такой ситуации:
источник: приёмник:
DIR1\file2 DIR1\file1
DIR2\file1 DIR2\file3
DIR3\пусто DIR2\file5
file3 file2
file4
пустой DIR3 - не имеет значения.
file1=file1 и file2=file2 по содержанию, но не всегда по имени.
Amet
 
Posts: 3
Joined: Thu, 06 Nov 2008, 18:13

Re: Одинаковые файлы по содержанию в разных подпапках

Postby elos » Fri, 07 Nov 2008, 09:42

Вопрос как-то мутно сформулирован - сразу основную мысль и не заметил...
...сравнить равен ли источник приёмнику по содержимому...

nnbackup при sync2 что проверяет? смотрим help:
Не забывайте, что в режимах sync/sync2 (как и в остальных режимах) вы можете тонко настраивать - какие именно файлы будут обработаны (т. е. синхронизированы). Для этого вы можете использовать, например, включающие и исключающие маски имен файлов (-m, -x) или фильтры по дате создания/последней модификации файла (-D, -DC, -DW), размеру файлов (-LT, -GT), атрибутам файлов (-a, -ax).


содержимым тут и не пахнет - проще воспользоваться внешней имеющейся в системе fc.exe и анализировать код возврата(если есть) или средствами nncron парсить вывод и делать нужное действие... И что после сравнения делать то надо с этими файлами, если они равны или не равны?

вот куски старого рабочего кода из скрипта nncron (с возможностью перенастройки)
Code: Select all
SET fc_command="fc.exe /B %FOUND-FULLPATH% C:\POLL\CHECK\%FOUND-FILENAME% | find %QUOTE%FC: различия не найдены%QUOTE%"
SET path_check="C:\POLL\CHECK\"

Code: Select all
: check
START-APPW: "%fc_command%"
ExitCodeProc 0=
IF
    \ передано правильно - стираем
    FILE-DELETE: "%FOUND-FULLPATH%"
    FILE-DELETE: "%path_check%%FOUND-FILENAME%"
ELSE
    \ неправильно принят - неважно где (в ЦИТ или на станции)
    \ оставляем до следующей передачи - передастся рано или поздно...
    FILE-DELETE: "%path_check%%FOUND-FILENAME%"
    send_logfile \ передать лог
THEN
;
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: Одинаковые файлы по содержанию в разных подпапках

Postby Amet » Fri, 07 Nov 2008, 13:19

Не забывайте, что в режимах sync/sync2 (как и в остальных режимах) вы можете тонко настраивать..
содержимым тут и не пахнет..

ну sync, -nocopy и -md5(генерировать и сравнивать контрольные суммы файлов (md5) при синхронизации. Копировать файл, если суммы не совпали) файла мне вполне бы хватило, если файлы были бы с одинаковыми именами и лежали в одноименных папках дерева каталогов..
проще воспользоваться внешней имеющейся в системе fc.exe и анализировать код возврата(если есть)

не хотелось бы fc.exe огород городить. Набрёл на nnBackup заманчиво стало им реализвовать. Понять все его возможности сразу сложно - вот и спросил здесь.
или средствами nncron парсить вывод и делать нужное действие...

Вот это я и хотел, но видно не выйдет..
И что после сравнения делать то надо с этими файлами, если они равны или не равны?

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

Спасибо
Amet
 
Posts: 3
Joined: Thu, 06 Nov 2008, 18:13

Re: Одинаковые файлы по содержанию в разных подпапках

Postby elos » Tue, 11 Nov 2008, 08:52

Эту функциональность возможно реализовать только на nncron-скрипте, так как md5 в nnbackup привязана к алгоритму и одноименным файлам, и переименовку он не делает (максимум - можно в путях источника/приемнике и в имени файла лога использовать предопределенные переменные).

И представляешь, что такое
Если по кол-ву файлов каталоги отличаются, либо отличаются md5 каких-то файлов с одинаковым размером - скопировать полностью источник в приёмник с новым именем, добавив к старому имени приёмника текущее время и как-то отметить новые и изменившиеся файлы в их именах.
при о-о-чень большой папке? Диска то хватит?

за прошедшие дни в голову пришло что... представим, что все возможно...
так как двухсторонняя синхронизация - это поочередное копирование из стороны в сторону, да ты еще собираешься копии файлов создавать с измененными именами, то может получиться следующее:
слева направо синхронизируем и создаем дополнительные переименованные копии обнаруженных "дубликатов". Далее мы справа налево при синхронизизации обнаруживаем, что слева у нас нет папок/файлов "дубликатов" и перегоняем их налево...

Нам так и требуется? Если повторять процедуру циклически - получим "засорение" папок переименованными файлами при регулярном появлении таких файлов. Другое дело, если на сторону толькофайлы "откладывать" в некий стек папок...
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: Одинаковые файлы по содержанию в разных подпапках

Postby Amet » Thu, 13 Nov 2008, 14:45

при о-о-чень большой папке? Диска то хватит?

файлов у меня в папках не так уж и много, до 100.
Поясню свою задачу: входящая почта - к письму прицеплен атачем архив(случаются просто дубли, иногда перепакованные дубли, иногда содержание архива меняется: добавляется или переименовывается файл) - распаковываю его во временную папку с именем архива - смотрю есть ли у меня ранее полученная папка с таким именем(т.е. имена архивов не меняются). Если нет - добавляю новую папку к ранее полученным, иначе - сравниваю
на предмет что изменилось и помечаю то что изменилось, а если дубль ранее полученной папки - временную папку просто прибиваю. Так что рад был бы такой опции в nnbackup, а сейчас пока приходится всё руками сравнивать, т.к. важно не пропустить изменения, если они были.
так как двухсторонняя синхронизация

я позже писал, что мне
ну sync, -nocopy и -md5 ... файла мне вполне бы хватило

получим "засорение" папок ...

Мне в течении дня нужно и, учитывая мою задачу, это не страшно.
И папка, в случае наличия различий, будет иметь новое имя с добавлением текущего времени. Плюс, как вариант, содержать только новые и изменившиеся файлы. Хотя места на диске не жалко.
Amet
 
Posts: 3
Joined: Thu, 06 Nov 2008, 18:13

Re: Одинаковые файлы по содержанию в разных подпапках

Postby elos » Tue, 18 Nov 2008, 16:47

Так как алгоритм непонятен по прежнему (ну не доходит до меня смысл хотимого) - можно его еще раз переформулировать? И это ближе к реализации на nncron - предлагаю перейти в тот форум (быстрее народ выскажется).

Может быть лучше ложить файлы в папку, а оттуда просто переносить в другую с добавлением к имени даты/времени? Для первой папки по WATCH запускать сравнение по MD5 положенного файла с уже имеющимися (с измененными именами) и делать необходимые операции...

Пока расскажу про свое (может мысль подпихнет), потом задам вопросы.

мое:

На станции день за днем и понесколько раз за день приходит один и тот же архив (например ats-41.zip). Архив сохранялся ручками из TheBat в заранее заданную папку (она предварительно чистилась от предыдущих файлов), которая отслеживалась на появление файлов, после чего запускался на распаковку архиватор. Внутри архива кроме ненужных техпроцессу файлов лежат текстовые файлы с именем типа YYYYMMDDhhmmss_ats41.txt. То есть файлы легко различимы. При укладке нового архива распакованные txt просто перегонялись в некую "архивную" папку, благо занимали они места меньше архива, а "мусор" просто стирался.
Можно было просто перегонять и архивы, добавляя в их имена значения даты/времени...


вопросы:

какой почтовой программой пользуемся?
как сохраняются файлы - ручками или автоматом на сторону (как в TheBat)?
для чего файлы сливаются на сторону?
действительно хватит только sync? или подразумевается двухсторонняя работа, то есть в приемнике файлы будут изменяться и их также надо синхронизировать с источником? если так, то источник и приемник в разное время будут файлы менять (типа работа/дом) или в одно время (только работа в офисе с общей папкой)
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15


Return to nnBackup forum (Russian)

Who is online

Users browsing this forum: No registered users and 2 guests

cron