Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

вторник, 28 февраля 2012 г.

Как сравнить две папки?

Этим вопросом я увлекся на прошлых выходных, когда возникла задача синхронизировать большие объемы информации (фотки, видео) на двух носителях (основной винт и бекап). Фоток и видео - тысячи файлов, общим объемом пару сотен гиг. В ручную будет быстрее переснять все заново, чем сравнить. Как быть? Перед тем как написать свою программу на Deplhi (как я часто поступаю, когда надо атоматизировать какую-то рутинку на компе) я стал немного поискать в сети. Десятки левых программ и наконец-то оно! Total Commander. Я как-то без него все это время обходился, но теперь понимаю, что за непримечательным интерфейсом скрывается офигительная мощь! Итак, как сравнить две папки в Total Commander'е? 

Внимание, могут пострадать твои драгоценные файлы! Так как файлы мне были дороги как память, то я очень подозрительно относился к тому, что делает программа и к тому, что делаю сам с помощью программы. Дело в том, что программы ошибаются (скорее программисты, их писавшие), а оператор (то бишь я), делая рутинную операцию продолжительное время, начинаю ускоряться и кликать случайно не на те клавиши (а потом очень жалею). По этой причине, для начала, настоятельно рекомендую скопировать пару синхронизируемых папок в отдельное место-песочницу и поиграться там, столько времени, сколько потребуется (пока не появится чувство уверенности - "я знаю, что делаю"). Мне хватило часа, чтобы разобраться во всех настройках программы и набить руку. "Набить руку" тут значит сделать множество ошибок при копировании и проанализировав их больше не наступать на те же грабли. Еще раз повторюсь - на втором часу синхронизации внимание притупляется и какую-то галочку можно случайно не поставить, а от этого зависят результаты сохранения! Делай перерывы каждый час, иначе потеряешь файлы. "Перерывы" - значит встать из за компа, пока он сравнивает и поделать что-то физически активное. 

Поехали. Как я синхронизировал файлы в папках? Открывал слева папку (1), которая в меньшинстве (рабочая папка), а справа выставлял ту же папку но на бекап-винте (2)


Если мне слева (1) нужны были не все папки для синхронизации, то я правой кнопкой мыши выделял их (3) (как странно, по правой кнопке мыши кроме контекстного меню еще и выделение срабатывает - но вскоре я привык).


После нажимал кнопку "Синхронизировать каталоги" (4). На этом меня отправляли в новый диалог, в котором поначалу меня заинтересовал набор опций сравнения (5).


Опишу по очереди: 
"Выделенные (в главном окне)" приведет к тому, что сравниваться будут только те папки слева (со всеми, что справа, которые отмечены (3).
"Пустые каталоги" - я так понял (но не уверен), что сравниваться будут даже пустые каталоги. Но пользы я не получил от нее. 
"Асинхронно" - понятия не имею что это значит.
"С подкаталогами" - говорит программе о том, что мы хотим проверить папки с подпапками и подподпапками на всех уровнях вложенности....
"По содержимому" - если галочка стоит, значит файлы будут идентичными, если каждый их байт идентичен (это может быть долго), в противном случае два файлы идентичны, если у них одинаковое имя, размер и дата последнего изменения.  
"Игнорировать дату" - должно стоять, в противном случае файлы с одинаковой датой не будут проверяться "По содержимому"
Есть вариации на тему сравнения по содержимому (кнопочка ">>" рядом с чекбоксом), но predefined плагинов не было, а потому я не оценил. 

После того, как будет нажата кнопка "Сравнить" пойдет сбор информации по папкам, с последующим сравнением файлов между собой (в зависимости от настроек (5)). Результатом сравнения будет картинка (6)


Тут много чего можно сделать, а потому начнем по порядку. Для начала в рабочем поле (6) можно отображать как все файлы, так и другие вариации на тему в фильтре (8):
- только те, что есть слева (1)
- только те, что есть справа (2)
- те, что и слева (1) и справа (2) равны
- те, что есть и слева (1) и справа (2), но не равны
- только дубликаты (те, что есть и слева (1) и справа (2))
- только уникальные (те, что есть или слева (1) или справа (2))

Кликнув на любой файл можно с ним сделать ряд действий (7):
1) "Отметить для копирования (направление по умолчанию)
2) "Снять маркер копирования/удаления"
3) "Отметить для копирования -> (слева направо)"
4) "Отметить для копирования <- (справа налево)"
5) "Поменять направления копирования"
6) "Внутренний просмотр слева"
7) "Внутренний просмотр справа"
8) "Сравнить левйы и правый файлы"
9) "Копировать свойства файла -> (слева направо)"
10) "Копировать свойства файла <- (справа налево)"
11) "Печать выделенного" 
12) "<- Удалить слева"
13) "-> Удалить справа"
14) "Удалить с обоих сторон"

Опции 6)-8) служат для просмотра внутреннего содержимого файлов. 

Опции 9) и 10) - копирование только свойств файлов (я так понял {но не уверен}, даты создания, модификации и доступа, NTFS права, аттрибуты). 

Опция 11) поможет, если вдруг хочешь материализовать результаты сравнения на бумаге. 

Опции 12)-14) отвечают за удаление файлов (осторожно с ними, они даже не помечены горячими клавишами)

Опции 1)-5) служат для того, чтобы быстренько решить что куда будет копироваться, а потом нажатием на кнопку "Синхронизировать" (9) одним махом все переписать. После нажатия на (9) выскочит диалог, в котором можно будет еще раз проглянуть что собираемся сделать. 


Идем дальше. Можно так же выделить в (6) группу файлов и сделать с ними те же действия, что и с каждым отдельным файлом

Кнопка "Синхронизировать" (9) проделает все то, что не проделано в ручном режиме (10)

Надеюсь тебе этот пост сохранит пол дня времени, которые я потратил на поиск хорошей программы.

2 комментария:

  1. Спасибо! Искал подобное, нашел замечание, что Тотал сравнивает папки по содержанию якобы формально - по данным файловой таблицы, а не по-байтно (что есть не паранойя, т.к. есть вероятность пропуска групповых ошибок в программах копирования - и скопированные файлы не читаются..) Было предостаточно случаев брака скачанных файлов, сархивированных на диске...(при наличии опции проверки)
    Очень важный момент для жизни!
    Поэтому буду благодарен за ответ на вопрос - Насколько надежно и детально проверяет Тотал многоуровневые папки с большими файлами (случай архива видео) и большим количеством файлов?
    Статья очень нужная и полезная, да при том толково написанная.
    Автору - пребольшая благодарность!!!

    ОтветитьУдалить
    Ответы
    1. Добрый день. Спасибо зо отзыв.
      Я все же надеюсь что TotalCommander сранивает побайтно - там есть галочка, сравнивать по содержимому. Еслии е выбрать, ожидается побайтное сравнение, иначе по дате, размеру и иени.При побайтном сравнении Total задумывается на долго.
      В общем, лишили вы меня покоя - теперь надо тест провести...

      Удалить