Рано или поздно, но, думаю, каждый системный администратор сталкивается с необходимостью синхронизации содержимого каталогов, расположенных на разных удалённых системах. Хорошо, если есть возможность использовать или хотя бы возможность смонтировать удалённый ресурс средствами или Samba. Но что делать, если в вашем распоряжении не имеется больше ничего, кроме старого доброго FTP? Выход, конечно же есть, и по традиции мира Open Source, их немало. Перебрав несколько я остановился на утилите FTPSync . Она написана на Perl и теоретически должна работать в любой системе, имеющей в своём распоряжении Perl-интерпретатор. Я же расскажу об опыте установки и использования FTPSync в своей Ubuntu 10.04 Server.

Требования

На данный момент последняя версия программы — 1.3.03. Для её корректной работы необходимо следующее:

  • Perl 5.6+
  • File::Find, IO::Handle (идут в стандартной поставке Perl)
  • Net::FTP (часть пакета libnet-perl)
  • File::Listing (часть пакета libwww-perl)

Установка

Собственно установка, как вы уже догадались, заключается в размещении скрипта программы в удобном нужном месте файловой системы вашего компьютера. Получить последнюю версию исходного кода программы вы сможете, посетив или же по прямой ссылке отсюда: . Итак, поехали.

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

Mkdir -p ~/tmp cd ~/tmp wget http://ftpsync.sourceforge.net/ftpsync-latest.tar.bz2

Теперь распакуем содержимое полученного архива в текущий каталог:

Bunzip2 -c ./ftpsync-latest.tar.bz2 | tar -xv ls -l drwxr-xr-x 2 ashep users 4096 2009-07-03 16:02 ftpsync-1.3.03 -rw-r--r-- 1 ashep users 17191 2009-07-03 16:02 ftpsync-latest.tar.bz2

Мы видим появившийся каталог с файлами FTPSync версии 1.3.03. Посмотрим, что там есть:

Cd ftpsync-1.3.03 ls -l -rwxr-xr-x 1 ashep users 6006 2009-07-03 16:02 Changes -rwxr-xr-x 1 ashep users 18009 2006-08-30 22:28 COPYING -rwxr-xr-x 1 ashep users 31562 2009-07-03 16:02 ftpsync.pl -rwxr-xr-x 1 ashep users 4430 2009-07-03 15:58 README -rwxr-xr-x 1 ashep users 64 2009-04-15 17:02 TODO

Забавная ситуация, все файлы исполняемые. Похоже, под Windows архивировали. Но не суть, собственно, нам нужен файл скрипта и он здесь есть! :) Теперь скопируем файл скрипта в нужное нам место. Я подобные вещи предпочитаю хранить в каталоге /usr/local/bin :

Sudo cp ./ftpsync.pl /usr/local/bin/

И последний штрих. Проверьте, чтобы путь к интерпретатору Perl, указанный в первой строчке скрипта /usr/local/bin/ftpsync.pl совпадал с реальным размещением интерпретатора в вашей системе. По умолчанию в скрипте используется путь /usr/bin/perl , что в большинстве случаев соответствует действительности. Узнать, где у вас находится perl, можно так:

Which perl

Использование

FTPSync умеет работать в обоих направлениях, то есть выполнять синхронизацию как с локального каталога в удалённый, так и наоборот. Направление синхронизации FTPSync определят из параметров командной строки. Общий формат вызова FTPSync таков:

Ftpsync [опции] [источник получатель]

Либо источник , либо получатель должны содержать путь к локальному каталогу, в то время как противоположный параметр должен содержать URL удалённого ресурса. Обратите внимание, что параметр источник имеет значение по умолчанию — это текущий каталог. При этом, по ещё одному умолчанию, FTPSync выполняет синхронизацию в направлении «из локального ресурса в удалённый». Таким образом, если вы запустите программу, передав ей только URL удалённого ресурса, на FTP-сервер будет отправлено содержимое текущего каталога. Помните об этом при использовании FTPSync в командных сценариях.

Формат URL при определении удалённого FTP-ресурса такой:

Ftp://[пользователь[:пароль]@]хост/каталог

Что ж, предлагаю попробовать FTPSync в деле. Пока что не будем лезть в дебри опций, которых, кстати, не так и много. Вот так у меня выглядело копирование содержимого каталога с исходными текстами FTPSync на сервер:

/usr/local/bin/ftpsync.pl ~/tmp/ftpsync-1.3.03/ ftp://guest:[email protected]//

Обратите внимание на дополнительный слеш в конце URL. Он указывает программе не перемещаться ни в какой каталог, а использовать тот, в который FTP-сервер «выбрасывает» пользователя после логина.

Determine s offset. Clock sync offset: 0:00:00 Building local file tree. Building remote file tree. Starting synchronization. Creating new remote directories. Copying new(er) local files. New: ftpsync.pl (31562 bytes) New: COPYING (18009 bytes) New: Changes (6006 bytes) New: README (4430 bytes) New: TODO (64 bytes) Deleting obsolete remote files. Deleting obsolete remote directories. Done.

Как видно, FTPSync успешно скопировала пять файлов из указанного мной локального каталога. Теперь пробуем удалить локальный файл README и повторить синхронизацию той же командой:

Rm ~/tmp/ftpsync-1.3.03/README /usr/local/bin/ftpsync.pl ~/tmp/ftpsync-1.3.03/ ftp://guest:[email protected]// Determine s offset. Clock sync offset: 0:00:00 Building local file tree. Building remote file tree. Starting synchronization. Creating new remote directories. Copying new(er) local files. Deleting obsolete remote files. README Deleting obsolete remote directories. Done.

FTPSync успешно удалила файл README , отсутствующий в локальном каталоге, но всё ещё существующий на FTP-сервере.

Теперь, предварительно вручную удалив файл TODO на сервере, попробуем выполнить синхронизацию в обратном направлении:

/usr/local/bin/ftpsync.pl ftp://guest:[email protected]// ~/tmp/ftpsync-1.3.03/ Determine s offset. Building local file tree. Building remote file tree. Starting synchronization. Creating new local directories. Copying new(er) remote files. Deleting obsolete local files. TODO Deleting obsolete local directories. Done.

Опции

Опций FTPSync предлагает достаточно немного, но лично моя практика использования этой программы показала, что больше и не нужно.

  • -c | -C заставит программу спрашивать вашего разрешения на выполнение каждого своего действия;
  • -d | -D включает вывод отладочной информации. В частности вы увидите лог FTP-сессии, который может оказаться весьма полезным в некоторых ситуациях;
  • -f | -F отключает рекурсивное копирование;
  • -g | -G при указании этой опции FTPSync будет выполнять синхронизацию в направлении «с сервера в локальный каталог»;
  • -h | -H справка по работе с программой;
  • -i | -I вывод основной информации в процессе работы, включено по умолчанию;
  • -n | -N не удалять в получателе отсутствующие файлы и каталоги источника;
  • -l | -L рассматривать локальные символические ссылки в качестве каталогов;
  • -p | -P при указании этой опции FTPSync будет выполнять синхронизацию в направлении «из локального каталога на сервер»;
  • -q | -Q отключает вывод информации;
  • -s | -S включает сравнение времени доступа файлов и каталогов. Без этой опции при сравнении используются только размеры файлов;
  • -t | -T отключает обновление меток времени для локальных файлов;
  • -v | -V включает многословный вывод;
  • cfg= указывает FTPSync считывать параметры из файла, указанного в значении этого параметра:
  • ftpserver= имя хоста FTP-сервера. По умолчанию это «localhost»;
  • ftpdir= каталог FTP-сервера. По умолчанию это текущий каталог;
  • ftpuser= имя пользователя FTP-сервера, по умолчанию это «ftp».
  • ftppasswd= пароль пользователя FTP-сервера, по умолчанию это «anonymous».
  • ignoremask= регулярное выражение, определяющее имена файлов, игнорируемые при синхронизации.

Автоматическая синхронизация папок Windows позволяет организовать и поддерживать 2 идентичные по составу директории. Файлы копируются на соседний компьютер по локальной сети или в другой офис компании по безопасному протоколу SFTP (SSH) . При добавлении или изменении данных в одной папке все изменения будут отражаться в другой.

Итак, считаем, что у вас дома или на работе есть основная рабочая директория, расположенная на локальной или сетевой машине, и появилась необходимость автоматически копировать (зеркалировать, доставлять) файлы из нее в другое место: на флешку, внешний жесткий диск (винчестер), по локальной сети, на удаленный сервер по протоколу FTP или в облако Яндекс.Диск .

Синхронизация папок - это процесс периодического зеркалирования (отображения) файлов источника в приемник . Исходные данные и конечная директория всегда будут в точности одинаковые как по количеству, так и по размеру данных.

С этой задачей легко справляется небольшая, но очень удобная программа для синхронизации папок и файлов Exiland Backup, позволяющая создавать 4 типа резервных копий , одним из которых и является возможность зеркалирования данных в Windows.

Синхронизация файлов в локальной сети и по FTP (synchronize) – лишь малая часть возможностей Exiland Backup. Полный перечень функций вы можете увидеть на странице сравнения версий . В данной статье на них мы останавливаться не будем, а рассмотрим лишь способ настройки зеркалирования между компьютерами. Данная функция будет в помощь как системным администраторам, так и домашним пользователям.

Exiland Backup - простое решение для синхронизации файлов и папок

Простая утилита Exiland Backup позволяет автоматически выполнять одностороннюю синхронизацию папок по расписанию (не чаще, чем 1 раз в минуту). Быстро и тщательно сравнивает содержимое исходных данных с конечной папкой и приводить их в соответствие. Это особенно удобно для периодической доставки файлов из одного филиала организации в другой по FTP . В качестве исходной директории может быть указано несколько директорий.

ВНИМАНИЕ . При добавлении, изменении или удалении исходных файлов, все изменения также отражаются в конечной директории. Если удалите данные из источника, они автоматически удалится из приемника. Если вам не нужно удалять файлы из конечной папки, выберите соответствующую опцию..

В Exiland Backup предусмотрены различные настройки "умной" синхронизации папок в локальной сети, на одном компьютере, в облако. Например, программа может копировать как все данные, так и выборочно по заданной маске , атрибутам и указанным подпапкам.

К дополнительным возможностям можно отнести такие как:

  • Ведение подробного журнала с отображением, какие файлы были добавлены, обновлены и удалены.
  • Возможность отправки журнала по e-mail или уведомления на мобильный телефон в виде SMS.
  • Гибкая настройка расписания .
  • Запуск копирования автоматически при старте Windows, при подключении флешки или другого сменного устройства.
  • Запуск задания из командной строки (command line).

Пошаговый мастер настройки

Итак, рассмотрим на примере, как настроить Exiland Backup для зеркалирования.
Предположим, нам необходимо каждые 3 минуты с 8:00 до 21:00 синхронизировать "C:\Документы" со всеми подпапками с локального компьютера, куда установлена программа, на удаленную машину "NAS-Server" в расшаренную папку "\\NAS-server\Backups\Документы".

Запустите бэкап-программу. В верхнем левом углу главного окна программы нажмите кнопку создания нового задания – появится пошаговый мастер.


Шаг 1: Наименование задания

Введите любое название задания, например "Зеркало рабочих документов" и нажмите "Далее".

Шаг 2: Тип резервного копирования

Укажите тип – "Синхронизация" и нажмите "Далее".


Шаг 3: Исходные данные

Укажите какие исходные данные вы хотите зеркалировать. Это может быть путь к директориям на компьютере, флешке, сервере или облаке.


Для этого нажмите "Добавить -> Локальные/сетевые папки и файлы...", укажите путь к "C:\Документы" на ПК и нажмите OK, после чего появится окно выбора параметров папки.


Здесь можете все оставить по-умолчанию и сразу нажать OK.

Шаг 4: Конечная папка для синхронизации

Выберите путь к конечной директории-приемнику, в данном случае "\\NAS-server\Backups\Документы", а также укажите логин/пароль для входа в сетевую папку, если доступ к ней ограничен.

Если вам необходимо зеркалировать данные на удаленный компьютер по FTP, то при настройке конечной папки выберите FTP.

Конечная директория может быть только одна!



Шаг 5: Расписание выполнения задания

Чтобы указать расписание запуска задания, нажмите кнопку "Изменить" и в появившемся окне укажите тип расписания "Ежедневно", после чего выберите время. Нажмите "Изменить" справа, от поля "Время", затем нажмите кнопку "Добавить", пункт "Периодически" и укажите "Каждые 3 мин" с заданным интервалом: со скольки и до скольки повторять синхронизацию (в нашем примере с 8:00 до 21:00). Готово. Нажмите OK несколько раз, пока не закроются все появившиеся ранее окна.



Шаг 6: Уведомление

Оставьте все по-умолчанию и кликните "Готово".

Задание создано!
На предложение о настройке дополнительных параметров пока ответьте "Нет". Позже всегда сможете вернуться к настройках и изменить их.


Программа имеет интуитивно понятный продуманный интерфейс и рекомендована для синхронизации файлов между серверами Windows, между разными компьютерами, а также между филиалами или подразделениями организации по SFTP (SSH).

Кроме платных версий Standard и Professional, также существует и бесплатная Free , которую вы можете скачать, чтобы оценить ее возможности на ваших файлах. Если же программа подойдет для решения ваших задач, вы можете приобрести лицензию на Standard или Professional и стать полноправным зарегистрированным пользователем со всеми преимуществами платных версий Standard и Professional, которые значительно более функциональны и включают в стоимость приоритетную техническую поддержку, Личный кабинет и ряд других преимуществ.

Возникла простая задача - по расписанию сливать с сервера свежие бэкапы на локальную машину. Перепробовав несколько программ, подавляющее число которых платное, остановился на бесплатном варианте с помощью WinSCP . Тем более ничего лишнего ставить не требуется, а эта программа не помешает в повседневной работе даже самому крутому админу, работающему на Windows.

Не все знают, что WinSCP поддерживает работу со скриптами. Воспользуемся этой возможностью для синхронизации файлов по FTP.

Напишем такой простой скрипт и сохраним его в файлик scp_sync.txt

Option batch on option confirm off # open ftp connection open ftp://user :password @server # synchronize files from server synchronize -criteria=size -transfer=binary local local-path remote-path exit

Описание всех команд можно найти на сайте, но и так несложно догадаться о их назначении.

Следующие параметры нужно изменить на свои.

  • user - имя пользователя
  • password - пароль
  • server - адрес сервера (IP или домен)
  • local-path - локальный каталог, например C:\Backup
  • remote-path - удаленный каталог, для корня нужно указать /

Можно изменить направление синхронизации, в моём случае local - файлы скачиваются с сервера в локальную папку. Другие допустимые значения: remote - изменения в локальной папке будут залиты на сервер, both - двухсторонняя синхронизация.

Также допустимо поменять критерий определения изменения файлов -criteria=size . Допустимые значения time , size и either - по времени изменения, по размеру, или оба критерия сразу, при этом время изменения будет иметь более высокий приоритет по сравнению с размером.

Есть ещё один полезный параметр -delete для удаления устаревших файлов. В моём случае файлы отсутствующие на сервере будут удалены из локальной папки, то есть мы получим «зеркальную копию».

Полный синтаксис команды synchronize можно найти .

Запуск скрипта осуществляется следующей командной строкой, все пути естественно нужно поменять на свои.

C:\Program Files\WinSCP\WinSCP.exe /console /script=C:\Script\scp_sync.txt

Вставляем эту строчку в Пуск => Выполнить и проверяем, что всё отработало нормально. Если что-то пошло не так, комментируем или удаляем пункт exit в скрипте, и смотрим какая ошибка выдаётся. Для ведения подробного лога в конце командной строки нужно добавить /log=C:\Script\scp_sync.log

Выполнять его по расписанию можно при помощи обычного планировщика Windows. Приведу порядок действий в Windows 7. Запускаем Планировщик: Панель управления => Система и безопасность => Администрирование => Планировщик заданий , можно несколько проще Пуск => Выполнить => Taskschd.msc

Выбираем пункт меню Действие => Создать программу , на вкладке Общие задаём её произвольное имя. Переходим на вкладку Действия , нажимаем Создать . По кнопке Обзор находим WinSCP.exe , в поле Добавить аргументы вводим /console /script=C:\Script\scp_sync.txt

На вкладке Триггеры нажимаем Создать и настраиваем время запуска. Поскольку у меня компьютер практически не выключается, устанавливаю Ежедневно, в 4:00

Единственный недостаток WinSCP по сравнению с некоторым платными прогами - то что она не умеет скачивать файлы в несколько потоков. В остальном это отличный бесплатный вариант.

Синхронизация FTP, SFTP и FTPS требуется для автоматического обеспечения целостности и безопасности хранения больших массивов данных на серверах FTP. Handy Backup предоставляет для хранилищ FTP автоматическую синхронизацию файлов с любыми носителями информации.

Методы синхронизации FTP

Серверы FTP, SFTP и FTPS ничем не отличаются друг от друга по способу синхронизации хранилищ. Разница лишь в используемых для синхронизации инструментах (плагинах), а также в источниках данных.

Синхронизация FTP и сетевой машины (сетевого диска)

Сетевой диск или подключенный по сети компьютер также может быть синхронизирован с FTP сервером с помощью плагина Network. При этом информация передаётся по локальной сети.

С помощью плагинов для облачных сервисов, таких, как Яндекс.Диск или Dropbox , Handy Backup может осуществлять синхронизацию содержимого этих хранилищ с сервером FTP через Интернет.

Способы синхронизации файлов FTP

В отличие от методов, под способами имеется в виду указание взаимоотношений между папками, в соответствии с которыми выполняется синхронизация папки с FTP сервером.

Односторонняя синхронизация (репликация, master-to-slave) – способ, при котором содержимое одной папки заменяет содержимое другой во всех случаях несоответствия.

Двусторонняя синхронизация (зеркалирование, mirroring) – способ, при котором содержимое обоих папок делается одинаковым, за счёт встречного копирования недостающих и обновлённых версий файлов.

Как реализуется синхронизация FTP (SFTP или FTPS) файлов и папок в Handy Backup?

Для создания задачи синхронизации папок между сервером FTP (первая папка) и другим хранилищем (вторая папка) выполните, пожалуйста, следующую простую инструкцию (аналогичным способом вы сможете синхронизировать также папки SFTP И FTPS):

  1. Запустите Handy Backup, создайте новую задачу клавишами Ctrl+N или с помощью меню.
  2. Выберите задачу синхронизации данных.
  3. На Шаге 2 выберите первую папку ; выберите инструмент FTP слева на панели.
  4. Щёлкните дважды на строчке "Новая конфигурация ".

  1. В открывшемся диалоге сконфигурируйте доступ к папке FTP. Проверьте доступ.
  2. Нажмите ОК, затем выберите синхронизируемую папку в новом окне.
  3. Перейдите к Шагу 3 и выберите вторую папку . Ей также может быть хранилище FTP.

  1. Выберите тип синхронизации, расписание и другие настройки задачи.
  2. Завершите работу мастера создания задачи.

Всё готово! Ваши папки FTP будут теперь синхронизироваться автоматически.


Внимание: для сложных задач автоматизации копирования, где данные синхронизации по FTP обрабатываются как часть потока информации, вы можете запустить Handy Backup как Windows service (службу), или использовать запуск из командной строки в пакетном режиме.

Используйте Handy Backup для синхронизации файлов и папок по протоколам FTP, SFTP, FTPS!
Попробуйте все возможности и преимущества, загрузив 30-дневную бесплатную версию программы прямо сейчас!

Работа по протоколу FTP — основной на сегодня способ загрузки и скачивания файлов по Сети. Для этого создан не один десяток программ. Зайдите в любой каталог программ — в разделе «FTP» увидите с десятка три бесплатных или shareware-продуктов. С процессом загрузки файлов на сервер они вполне достойно справляются. Но редкая программа может качественно решать задачу синхронизации, то есть добавления или удаления только измененных файлов на локальном или удаленном компьютере. Оговоримся сразу, что задача синхронизации стоит не только перед вебмастерами. Она актуальна для сисадминов предприятий и организаций, которым приходится обеспечивать синхронность работы сотрудников над каким-либо проектом.

Из всего множества программ для работы с FTP, существующих на данный момент, для выполнения задач синхронизации пригодным оказалось не так уж много программных продуктов. Кстати, интересный момент — среди таких программ совершенно нет продуктов, разработанных крупными и признанными лидерами софтверной продукции. Все действительно интересные и работоспособные синхронизаторы сделаны или малыми компаниями, или отдельными программистами.

Программ-синхронизаторов совсем не много

Возможно, что кому-то известны и другие интересные программы, но мы рассмотрим следующие три:

  • vuBrief — автор Валентин Купрович, Санкт-Петербург, первый релиз — март 2001 года, Freeware;
  • SmartSync Pro — от компании SmartSync Software, первый релиз так же в 2001 году, Shareware;
  • WebSynchronizer — от компании ReGet Software, Санкт-Петербург, первый релиз — 14 июля 2003 года, Shareware.

Все они успешно выполняют следующие функции:

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

vuBrief — бесплатная программа для синхронизации

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

Задание для синхронизации в этой программе называется "портфелем". Сколько создается заданий, столько и появится "портфелей" в окне vuBrief. Далее для "портфеля" задаются параметры: синхронизируемые директории, направление синхронизации, время синхронизации, отбор файлов для синхронизации по типу или имени, настройка FTP-соединения.

Простота работы и режим распространения программы (freeware) — основные преимущества программы, в целом ее можно порекомендовать начинающим пользователям.

SmartSync Pro

SmartSync Pro — недорогой продукт для профессионалов

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

Одной из таких особенностей является возможность планировать действия с файлами до и после синхронизации. Например, можно запустить определенную программу, если произошло изменение связанного с программой файла.

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

SmartSync Pro ведет логи выполнения синхронизаций, что облегчает контроль выполнения работ в отсутствие пользователя. Доступ к программе можно закрыть паролем. Программа отлично подходит для профессионалов, связанных с работой в Сети, недорогая и удобная.

WebSynchronizer

Появился на рынке самым последним из перечисленных программ. Его движок основан на движке великолепно зарекомендовавшего себя download-менеджера ReGet. Это, а также опыт предшественников, позволили ему получить дополнительные возможности, которых нет у описанных выше программ.

WebSynchronizer — лучший продукт в своем классе

Прежде всего, WebSynchronizer умеет учитывать поясное время. Если ваш сервер физически расположен в Америке, то при сравнении времени изменения файла разница в восемь часов будет учтена программой. Далее, программе доступна функция синхронизации данных между двумя удаленными серверами. Синхронизация всегда производится в несколько потоков (их число пользователь может ограничить), что увеличивает скорость синхронизации. Сама же скорость передачи данных при необходимости может регулироваться пользователем с целью снижения нагрузки на сеть и компьютеры.

Уникальной способностью можно назвать режим передачи данных: файлы передаются под измененными именами, и только после полной передачи происходят возврат файлу прежнего имени и удаление старого файла. Это существенно для российских пользователей, когда связь может разорваться в любой момент и передача файла сорвется. Если это происходит, то возможна ситуация, когда посещение сайта станет на некоторое время (до восстановления файла) невозможным. WebSynchronizer исключает такие ситуации.

К сожалению, у этой программы так же есть недоработки. Логи синхронизации сохраняются, только пока программа открыта, и их приходится сохранять отдельно. Нет парольной защиты при входе в программу, что актуально для многопользовательских машин.

Резюме

Среди множества программ, связанных с закачкой файлов по FTP, немногие могут выполнять функции синхронизации. С должным уровнем сервиса и надежностью работы эту функцию выполняют единицы. vuBrief — единственная из бесплатных программ, заслуживающая внимания. SmartSync Pro — качественный и надежный софт для вебмастера, обеспечивающий "умную" синхронизацию. WebSynchronizer обеспечивает повышенную скорость и надежность передачи данных.