OpenSource в заметках
Рано или поздно, но, думаю, каждый системный администратор сталкивается с необходимостью синхронизации содержимого каталогов, расположенных на разных удалённых системах. Хорошо, если есть возможность использовать rsync или хотя бы возможность смонтировать удалённый ресурс средствами NFS или 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)
Установка
Собственно установка, как вы уже догадались, заключается в размещении скрипта программы в удобном нужном месте файловой системы вашего компьютера. Получить последнюю версию исходного кода программы вы сможете, посетив страницу проекта на SourceForge или же по прямой ссылке отсюда: http://ftpsync.sourceforge.net/ftpsync-latest.tar.bz2. Итак, поехали.
Получим архив с исходными кодами, сохранив его пока что во временный каталог, поскольку в архиве помимо файла скрипта содержатся другие файлы, которые полезны в ознакомительных целях но совсем не нужны в месте, где мы будем располагать программу.
Теперь распакуем содержимое полученного архива в текущий каталог:
Мы видим появившийся каталог с файлами FTPSync версии 1.3.03. Посмотрим, что там есть:
Забавная ситуация, все файлы исполняемые. Похоже, под Windows архивировали. Но не суть, собственно, нам нужен файл скрипта и он здесь есть! 🙂 Теперь скопируем файл скрипта в нужное нам место. Я подобные вещи предпочитаю хранить в каталоге /usr/local/bin:
И последний штрих. Проверьте, чтобы путь к интерпретатору Perl, указанный в первой строчке скрипта /usr/local/bin/ftpsync.pl совпадал с реальным размещением интерпретатора в вашей системе. По умолчанию в скрипте используется путь /usr/bin/perl, что в большинстве случаев соответствует действительности. Узнать, где у вас находится perl, можно так:
Использование
FTPSync умеет работать в обоих направлениях, то есть выполнять синхронизацию как с локального каталога в удалённый, так и наоборот. Направление синхронизации FTPSync определят из параметров командной строки. Общий формат вызова FTPSync таков:
Либо источник, либо получатель должны содержать путь к локальному каталогу, в то время как противоположный параметр должен содержать URL удалённого ресурса. Обратите внимание, что параметр источник имеет значение по умолчанию — это текущий каталог. При этом, по ещё одному умолчанию, FTPSync выполняет синхронизацию в направлении «из локального ресурса в удалённый». Таким образом, если вы запустите программу, передав ей только URL удалённого ресурса, на FTP-сервер будет отправлено содержимое текущего каталога. Помните об этом при использовании FTPSync в командных сценариях.
Формат URL при определении удалённого FTP-ресурса такой:
Что ж, предлагаю попробовать FTPSync в деле. Пока что не будем лезть в дебри опций, которых, кстати, не так и много. Вот так у меня выглядело копирование содержимого каталога с исходными текстами FTPSync на сервер:
Обратите внимание на дополнительный слеш в конце URL. Он указывает программе не перемещаться ни в какой каталог, а использовать тот, в который FTP-сервер «выбрасывает» пользователя после логина.
Как видно, FTPSync успешно скопировала пять файлов из указанного мной локального каталога. Теперь пробуем удалить локальный файл README и повторить синхронизацию той же командой:
FTPSync успешно удалила файл README, отсутствующий в локальном каталоге, но всё ещё существующий на FTP-сервере.
Теперь, предварительно вручную удалив файл TODO на сервере, попробуем выполнить синхронизацию в обратном направлении:
Опции
Опций 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= регулярное выражение, определяющее имена файлов, игнорируемые при синхронизации.
Синхронизация файлов по FTP. Сохранность сайта
На cтабильность и сохранность работы вашего сайта влияют многие факторы и один из них, это целостность всех файлов сайта на сервере. Одного резервного копирования (backup) базы данных бывает явно недостаточно, чтобы обеспечить полную сохранность сайта в случаях взлома или заражения сайта вирусами.
Безопасность сайта не является конечной целью, это постоянный процесс в работе вебмастера. Если ваш сайт сегодня безопасен, вовсе не значит, что он таким будет всегда.
Да и не все обладают достаточными знаниями, чтобы в полной мере противостоять различным угрозам в сети. Тем немение есть достаточно простое и эффективное решение по поддержке и сохранности вашего сайта всегда в рабочем состоянии. FTP-Sync — бесплатное и эффективное приложение для синхронизации файлов по FTP локальных папок вашего сайта на компьютере с такими же файлами на сервере вашего хостинга и наоборот.
Вы можете изменять документы, фотографии, любые файлы вашего сайта на локальном компьютере, а программа автоматически перенесет все изменения на сервер вашего сайта. Программа мультиязычная и простая, ни каких особых настроек от пользователей не требует. Необходимо создать проект, ввести данные сервера, создать локальную папку сайта на компьютере (по FTP скопировать туда ваш сайт) и синхронизировать данные между собой.
Программа позволяет отдельно проверить файлы в локальной папке, отдельно на сервере или синхронизировать их между собой. Не заходя на хостинг, Вы всегда будете знать размер каждого файла, его время и дату обновления, а любые изменения файлов на хостинге без вашего участия будут отображены в окне программы.
Практически это автоматическое техобслуживание по FTP, которое поддерживает стабильную работу вашего сайта, помогая вовремя выявить несанкционированные изменения и принять меры по восстановлению работоспособности сайта. А это имеет особенно важное значение для коммерческих проектов, ведь «падение» коммерческого сайта даже на несколько часов, может обернуться значительными убытками для компании.
Программу с успехом можно использовать и для других технических решений, где требуется синхронизация файлов по ftp между устройствами. Поддерживает работу с прокси сервером. Портабельная версия.
Синхронизация папок (локальной с удаленным каталогом по FTP)
23.12.2015 [17:43], Del PC
Синхронизация папок – не самое трудное дело, настроить синхронизацию папок можно за 2 минуты. Синхронизация файлов и папок с удалённым сервером настраивается:
Для синхронизации папок и файлов по FTP необходимо воспользоваться сторонней программой. Программа синхронизации файлов и папок называется WinSCP, загрузить её можно с официального сайта.
Программа для синхронизации папок и файлов по FTP
WinSCP – это бесплатная программа для синхронизации папок на компьютере. Это FTP-клиент с возможностью синхронизации.
Для начала работы с программой для синхронизации папок и файлов по FTP требуется программа для синхронизации файлов и папок. Скачайте и установите, затем:
- Запустите
- Добавить новое подключение
- Подключитесь к удалённому каталогу
После подключения вы увидите двухпанельный файловый менеджер. На одной стороне можно открыть локальную папку с нужными каталогами, на другой – удалённую папку.
Для начала синхронизации нужно:
- Выбрать меню “Команды”
- Пункт “Синхронизация” или с помощью горячих клавиш Ctrl+S
Выбрав направление синхронизации и указав остальные параметры, нажмите “ОК”.
Автоматическая синхронизация FTP с удалённым сервером
Автоматическая синхронизация FTP с удалённым сервером настраивается за 2 минуты с помощью WinSCP:
- Добавить новое подключение
- Подключитесь к удалённому каталогу
- Выберите меню “Команды”
- Пункт “Синхронизация” или с помощью горячих клавиш Ctrl+S
- Нажмите ОК
Далее нужно создать текстовый файл с настройками для подключения, вот как он выглядит в нашем случае:
Соответственно, вышеуказанные значения меняйте на свои:
- user – имя пользователя для подключения к FTP
- password – пароль для пользователя
- ftpserver – адрес сервера, к которому подключаемся
- C:\temp\BAT\synchro\KMS\ – путь к локальной папке
- / – путь к удаленной папке (в моем случае корневая папка)
Внесите свои значения и сохраните с именем sync-config.txt (или любое другое название на ваше усмотрение).
Автоматическая синхронизация папок и файлов запускается с помощью другого файла. Давайте его создадим. Создайте файл synhro.bat и откройте его с помощью блокнота, после чего внесите в него следующую информацию:
Первая половина – путь к установленной программе, обязательно проверьте, чтобы он был правильным. Во второй части файла – путь к файлу конфигурации, который мы с вами уже создали. После сохранения у вас в каталоге должно появиться два файла.
Запустите файл synhro.bat и, если все вышеописанное вы сделали правильно, должна начаться автоматическая синхронизация файлов и папок, выглядит это примерно так:
Теперь сверим каталог на FTP и каталог, который синхронизировался у вас на компьютере. В нашем случае синхронизация данных прошла успешно.
Автоматическая синхронизация файлов и папок по времени
Автоматическая синхронизация файлов в программе WinSCP настраивается так:
- Добавить новое подключение
- Подключитесь к удалённому каталогу
- Выберите меню “Команды”
- Пункт “Синхронизация” или с помощью горячих клавиш Ctrl+S
- Нажмите ОК
- Создайте текстовый файл с настройками для подключения, вот как он выглядит в нашем случае:
- Соответственно, вышеуказанные значения меняйте на свои:
- user – имя пользователя для подключения к FTP
- password – пароль для пользователя
- ftpserver – адрес сервера, к которому подключаемся
- C:\temp\BAT\synchro\KMS\ – путь к локальной папке
- / – путь к удаленной папке (в моем случае корневая папка)
- Внесите свои значения и сохраните с именем sync-config.txt (или любое другое название на ваше усмотрение)
- Создайте файл synhro.bat и откройте его с помощью блокнота, после чего внесите в него следующую информацию: C:\Program Files (x86)\WinSCP\WinSCP.exe” /console /script=C:\temp\BAT\synchro\sync-config.txt, где первая половина – путь к установленной программе, вторая – путь к файлу конфигурации, который мы с вами уже создали
- Запустите файл synhro.bat
Теперь, чтобы настроить синхронизацию файлов и папок по времени, осталось добавить этот файл в запуск по расписанию, например, с запуском каждые 30 минут. Настройка синхронизации файлов по времени:
- Откройте “Планировщик заданий”
- Создайте новое задание
- Настройке его (как на картинке)







