26 янв. 2011 г.

Сравни и перезапиши. Синхронизация файлов по FTP


Синхронизировать данные по протоколу FTP можно и с помощью Total Commander. Но человеку, дорожащему своим временем и нервами, все же стоит присмотреться к программам-синхронизаторам.



ПРОСТЫЕ РЕШЕНИЯ

С «обычными» FTP-клиентами можно работать двумя методами. Первый – обновление сайта на локальном компьютере и перезакачка всех файлов с заменой одних другими. Метод пригоден для веб-мастера, который обладает хорошей связью и работает с маленьким сайтом, отличающимся низкой посещаемостью. Другой вариант – после трансформации сайта на локальном компьютере вручную проводить сравнение дат изменения файлов и закачивать только модифицированные документы. Это очень трудоемкий вариант – даже небольшое изменение интернет-проекта требует внимания и аккуратности.
Функцию сравнения дат создания файлов можно переложить на файловые менеджеры – скажем, на FAR или Total Commander. Они имеют возможность сравнивать каталоги и включают встроенный FTP-клиент, поэтому их можно рассматривать как вариант рабочего инструмента для веб-мастера. Но, делая ставку на привычный файловый менеджер, необходимо помнить об ограничениях, которые накладываются на процесс синхронизации самой программой.
Во-первых, режим синхронизации в Total Commander решен очень просто: сравниваются текущие дата/время изменения файлов, исходя из того предположения, что более новый файл – более «правильный». Между тем этого достаточно далеко не всегда. Кроме того, файловые менеджеры не сравнивают подкаталоги, а это актуально для веб-проектов.
Во-вторых, Total Commander не запоминает никакой служебной информации, и если, скажем, ваш сервер расположен в другом часовом поясе, то возможны ошибки при загрузке файлов (не зря в документации на этот счет дается ряд предупреждений красными буквами).
Устранение этих двух ограничений превращает «обычный» FTP-клиент в самый настоящий синхронизатор. Такие программы переходят на качественно новый уровень – они могут автоматически синхронизировать операции удаления файлов, следить за конфликтами, возвращать ошибочно измененные файлы к первоначальному виду и т. д.


СИНХРОНИЗАТОРЫ


Помимо работы с файлами по FTP-протоколу специализированный синхронизатор FTP-клиент должен:

1 Сравнивать данные на локальном и удаленном компьютере, желательно с настройкой параметров для сравнения. Эта задача не так проста, как кажется – необходимо сопоставлять реальное время компьютеров в разных часовых поясах, так как удаленное расположение пользователя и сервера друг от друга – достаточно распространенная ситуация. И, что гораздо важнее, приходится сравнивать сами файлы, поскольку надо учитывать возможность изменений одного и того же файла разными пользователями на разных компьютерах.
2 Проводить выборочную загрузку/выгрузку файлов в соответствии с проведенным анализом.
3 Восстанавливать свою работу после обрыва связи.
4 Вести протоколы работы.
5 Иметь русскоязычный интерфейс и русский файл помощи.
6 Обеспечивать безопасность обновления. Если при загрузке файла произошел обрыв связи, то неполный файл может затруднить просмотр сайта или сделать его на некоторое время недоступным. Беспроблемное для посетителей обновление реализуется с помощью несложной процедуры: файл сперва закачивается во временный, потом переименовывается.
7 Иметь возможность производить выборочное обновление в соответствии с введенными критериями (фильтры). Эта функция нужна, если необходимо обновить не весь контент сайта, а, скажем, только графическую часть проекта.
8 Синхронизировать файлы по расписанию. Эта функция обеспечивает выполнение процесса синхронизации в определенное время и без участия пользователя.

Утилит, берущихся за выполнение таких задач, немало, но мы рассмотрим лишь предложения российских программистов. И дело здесь вовсе не в патриотизме, а в том, что обслуживание корпоративных проектов зачастую ведут не разработчики сайтов, а сотрудники фирмы, для которых знание английского языка и специальной терминологии не является обязательным.
КОМУ ЧТО НУЖНО

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

При выборе программы для этой группы мы исходили из простого предположения, что для них имеет большее значение бесплатность программы и несложный интерфейс. Среди всех бесплатных утилит приемлемого качества работы можно выделить FastUpdate (dinara.ru/fup). Изначально она создавалась только для синхронизации файлов по FTP-протоколу, поэтому оказалась лишена типичных для таких программ функций локальной синхронизации и резервного копирования. Программа очень простая и аккуратная, с отличным интерфейсом. Имеется хорошая и понятная справка на русском языке.
Она синхронизирует локальные папки с FTP, но только в одну сторону – изменений на FTP не проверяет. Есть фильтр, предпросмотр заданий и редактирование плана синхронизации, запуск по расписанию. К сожалению, эта утилита не ведет протокола работы. Программа может неправильно обрабатывать возникающие ошибки: когда закачать файл на сервер по какой-либо причине не удается, FastUpdate «задумывается», в строке состояния остается запись, что файл передается, но ничего не происходит. Обычно такое случается, если пользователь грузит очень большой файл – порядка нескольких мегабайт.
Но согласитесь, для веб-сайтов начинающих юзеров это нетипично. Тем пользователям, у которых связь оставляет желать лучшего, нужно специально отслеживать процесс загрузки. Если вы заметили, что файл передается дольше, чем это должно быть, нажмите кнопку «Остановить обновление». Маленькая хитрость – имя FTP-сервера в настройках надо писать без префикса «ftp://», иначе будет непонятная ошибка socket error 10110. Если содержимое сайта в локальной папке уже подготовлено, а на сервере его еще нет, то надо выделить все файлы в списке и в контекстном меню выбрать «Обновить». В противном случае программа будет думать, что раз в локальной папке ничего не изменилось, то и на сервер ничего посылать не надо.
Несмотря на указанные недоработки, программа практически идеально подходит для публикации домашних страничек и не очень больших сайтов. Но если непрофессиональный пользователь хочет получить беспроблемную программу, то ему стоит рассмотреть коммерческие продукты. Для второй и третьей групп пользователей обращение к коммерческим программам – уже не возможность, а необходимость. Такие утилиты обеспечивают устойчивую работу соединения и многопоточную закачку данных. При возникновении технических проблем к услугам пользователя служба поддержки.

Для профессионалов

Потребности профессиональных пользователей мы условно разделили на необходимость либо FTP-синхронизации, либо синхронизации всех видов плюс резервного копирования. Программ, которые отвечают этим потребностям, несколько.

- Site Publisher (www.sitepublisher.net);

- SmartSync Pro (www.smsync.com);

- ZSKSoft Synchronizer (www.zsksoft.ru/zsync.htm);

- WebSynchronizer (www.websynchronizer.com/ru).
Первые три программы могут выполнять все виды синхронизаций и резервное копирование, последняя специализируется только на синхронизации.
Если нужна только синхронизация

Тем, кто нуждается только в синхронизации, мы рекомендуем программу WebSynchronizer (www.websynchronizer.com/ru). Она разработана компанией, специализирующейся на передаче данных и известной отличным download-менеджером ReGet, поэтому неудивительно, что работа с FTP в данной утилите реализована на очень высоком уровне. Это проявляется даже в мелочах – WebSynchronizer без вопросов подключается к FTP-узлу при незаданном имени пользователя и пароле (при работе с другими синхронизаторами обычно приходится вспоминать, как пишется слово Anonymous).

Механизм транспортировки информации, заимствованный у ReGet, позволяет проводить синхронизацию в несколько потоков, что увеличивает скорость передачи. Однако реальное увеличение скорости больше зависит от типа соединения с интернетом. На обычном для России dial-up скорость увеличивается не в разы, а на проценты. Однако при локальной синхронизации пользователь получит максимальный эффект от многопоточной передачи данных.
Одной из приятных особенностей программы является мастер создания задачи, который проведет пользователя пошагово по всему процессу создания задачи синхронизации. К сожалению, вся документация по программе только на английском языке. Интерфейс очень приятный, чувствуется рука мастера (студиz Артемия Лебедева потрудилась на славу). Возможно использование скинов.
Программа умеет работать с локальными папками и FTP, причем в любой комбинации: локальный-локальный, FTP-FTP и локальный-FTP. Надо отметить возможность синхронизации между двумя удаленными серверами без промежуточной загрузки на локальный компьютер – таким образом программа обеспечивает легкое и простое обновление «зеркал» интернет-проекта. WebSynchronizer обладает джентльменским набором качественного синхронизатора: безопасный режим обновления, докачка файлов, работа в несколько потоков, определение временной зоны сервера (в отличие от некоторых других коммерческих программ-синхронизаторов, WebSynchronizer определяет ее правильно).
Протокол работы ведется в отдельной панели у нижнего края программы, что обеспечивает постоянный контроль над процессом синхронизации. Пользователь обладает возможностью контролировать работу как в целом, по всем потокам одновременно, так и по каждому потоку отдельно. Возникшие в ходе работы ошибки фиксируются в протоколе – идет серия записей на красном фоне, что привлекает внимание. Причем, как и положено, повторных попыток делается ровно столько, сколько указано в настройках.
При помощи встроенного планировщика WebSynchronizer может самостоятельно выполнять повторяющиеся задания. Каждое поручение в планировщике имеет два атрибута: «действие» и «событие». Доступно пять действий: «запустить задачу», «запустить программу», «установить соединение с интернетом», «разорвать соединение», «отключить компьютер». «Событие» – это время, в течение которого выполняется планируемое задание. По выбору одна или несколько задач синхронизаций могут быть ассоциированы с заданием планировщика. Для каждого из «действий» и «событий» предусмотрены гибкие настройки. Все это позволяет добиться максимально автоматизировать работу по синхронизации файлов и папок независимо от времени суток и наличия свободного времени у пользователя.
Для удобства работы предусмотрена система фильтров и использование файловых ассоциаций. Фильтры можно установить по маске для конкретных документов. Кроме того, можно производить отбор файлов по размеру – делается это в файловых ассоциациях, которые позволяют связывать некоторые действия и параметры с файлами по определенному шаблону.
Однако и у этого синхронизатора есть недостатки. Главный из них заключается в том, что он не запоминает состояние файлов, поэтому не может обнаружить конфликты, когда документ замещается более свежей, но не актуальной версией. Такая ситуация возникает, если работу над одним и тем же файлом ведут несколько человек одновременно на своих локальных компьютерах. Оба файла были изменены, а при синхронизации произойдет сохранение только одной из версий, изменения в другой будут проигнорированы. Частично этот недостаток компенсируется тем, что в период синхронизации все обрабатываемые файлы блокируются, и изменения в них вносить нельзя. В целом же надо иметь в виду, что WebSynchronizer не рассчитан на коллективную работу над проектом.
На наш взгляд, у программы малы и временные промежутки, по которым определяется «свежесть» файла. Максимальная точность при сравнении времени файлов – одна минута (по умолчанию две минуты). Если разница меньше, то файлы считаются одинаковыми. Впрочем, это существенно при сравнении локальных файлов, для работы с файлами по протоколу FTP этого достаточно. Гораздо важнее то, что нет возможности обновлять FTP-папку с включенным кэшем. В результате для больших сайтов временные затраты на сканирование могут оказаться довольно существенными.
Если нужен еще и бэкап


Пользователям, для которых актуальна не только FTP-синхронизация, но и возможность резервного копирования, а также офлайн-синхронизация, лучше всего подойдет ZSKSoft Synchronizer (www.zsksoft.ru/zsync.htm) от компании ZSKSoft Lab. Программа создана относительно недавно. Эта утилита обладает достаточно специфичным интерфейсом, к которому нужно привыкнуть. Редкое достоинство среди аналогичных программ высокого класса – подробная русскоязычная документация и специально созданные примеры работы, которые очень пригодятся при ее освоении.
ZSKSoft Synchronizer синхронизирует локальные папки, ZIP-архивы, FTP- и офлайн-папки. Довольно удобно сделан фильтр – это не просто список масок, а редактируемый набор категорий, в который нужные или ненужные файлы либо типы файлов переносятся прямо из плана синхронизации с помощью Drag-and-Drop. Для категорий можно настраивать разные направления синхронизации: файлы, над которыми работает один сотрудник, копируются от него в общую папку проекта, файлы его коллег – к нему. Программа умеет показывать, чем конкретно отличается содержимое двух файлов, отслеживает изменения с автоматическим информированием пользователя, если произошло что-то подозрительное (например, дата/время файла уменьшилась).
План синхронизации отображен в виде дерева, а не списка, есть возможность отфильтровывать содержимое по степени серьезности (показывать\не показывать, изменившиеся\не изменившиеся, подозрительные, конфликты и так далее). Как и WebSynchronizer, эта утилита может одновременно синхронизировать несколько папок, причем любого типа и в любой комбинации. В отличие от других программ она умеет начинать офлайн-синхронизацию пересылкой не всех файлов подряд, а только нужных. Кроме того, программа умеет обновлять FTP-папки без их сканирования – такая возможность есть еще только у Fast Update и Site Publisher. ZSKSoft Synchronizer честно сравнивает дату и время, потому что умеет переспрашивать ее у файлов после копирования.
Продуманность видна даже в мелочах: например, при сравнении файлов программа сразу назначает им номера версий в виде цифр, так что сразу видно, какой из них более новый, не глядя на дату/время. И, наконец, главное достоинство скрыто в самой архитектуре программы – работа с папками разных типов происходит через единый интерфейс. Это означает, что ZSync нацелен на дальнейшее развитие и спустя какое-то время можно ожидать выхода новых версий (например, умеющих работать с CVS, синхронизировать почтовые базы, записные книжки и многое другое).
Среди недостатков этой программы отметим отсутствие возможности синхронизации в заданное время и необходимость привыкать к интерфейсу.
Виды синхронизации

Синхронизация – процесс сравнения и при необходимости перезаписи файлов различных папок в соответствии с заданными критериями. Критерии сравнения могут быть различными, но чаще всего это время создания или изменения файла. Существует несколько задач синхронизации. Их классификация производится по видам папок, над которыми осуществляется этот процесс.
- Локальная синхронизация – синхронизация между папками одного и того же компьютера. Чаще всего это папки, расположенные на разных логических или физических дисках. Цель такой синхронизации – обеспечение безопасности данных.
- Удаленная синхронизация – синхронизация между папками разных компьютеров независимо от того, в какой сети находятся эти компьютеры – в локальной или в интернете. Цель такой синхронизации – обеспечение идентичности папок на этих компьютерах.

- Офлайн-синхронизация – синхронизация папок между компьютерами, не соединенных между собой сетью. Цель – обеспечение непрерывной работы над одним и тем же проектом на разных, не связанных между собой компьютерах.
Функция резервного копирования

Этой функцией обладает большинство программ для синхронизации данных, поскольку технически процессы синхронизации и копирования имеют единую основу. Однако необходимо помнить, что резервное копирование – это все же достаточно обширная область задач. Поэтому не надо ждать от описываемых программ широких возможностей в плане сохранения данных. В самом лучшем случае они будут копировать информацию в файл формата ZIP на несколько мест хранения. Для профессионального бэкапа рекомендуется все же приобретать профессиональные программы.