Копирование/синхронизация с помощью Winscp по расписанию (Windows)
Небольшое предисловие.
Собственно задача стояла даже в простом бекапе баз данных. Но эту задачу я решил с помощью Sqlyog. В нём есть возможность создавать job и планировать её по расписанию. Потом глянув на то что происходит на сервере, вспомнил что на сервере уже настроено создание ужедневных бэкапов на 3 месяца. Почесав все что чесалось, решил убрать задачу из Sqlyog'а и перенести на простое копирование. Благо на сервере есть SFTP.
И так.
Часть 1. Установка и настройка софта
Потребуется установленный(или просто распакованный в какую-то папку) Winscp.
Устанавливаем его. На предпоследнем шаге ставим галку "Добавить путь к каталогу с программой к переменной поиска (%PATH%)". Это избавит в дальнейшем от ненужных телодвижений.
Завершаем установку.
После этого создаем папки на резервном диске(если есть ;)
Запускаем Winscp. И добавляем наш sftp мегасайт.
При первом логине затребует "добавления ключа" в хранилище(ну или что-то наподобие. Не вдавался в подробности).
Нам потребуется "слепок" в дальнейшем. Этот "слепок" можно подсмотреть в меню Winscp->Commands->Server/Protocol Informations. Он будет прямо на первой вкладке снизу.
Часть 2. Скриптинг
1. Идем в нашу ранее соданную папку Jobs и в ней создаем файл server_dump.cmd
В нем пишем следующее:
@echo off
winscp /script=server.txt /log="D:\Backups\Logs\mysql_transfer.log"
Учтите что запуск winscp без полного пути будет возможен только после перезапуска системы. Иначе указывайте полный путь к программе(!).
Если вам не нужны логи то параметр /log можно убрать.
2. создаем файл server.txt (можно и другое расширение) и в нем прописываем:
option batch abort
option confirm off
open sftp://user:Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. -timeout=60 -hostkey="ssh-rsa 2048 *****************************"
synchronize local -preservetime -nopermissions -filemask="*.xz" -transfer=automatic D:\Backups\Sql /opt/mysql-dumps
exit
Первые 2 параметра обязательны. Далее устанавливаем соединение к серверу с таймаутом в 60 секунд и с использованием ключа! который мы видели выше в Winscp->Commands->Server/Protocol Informations.
Апосля выбираем режим синхронизации(подробнее о режимах и ключах к ним).
Что-то наподобие:
сихронизировать "в локальный" "сохранив исходное время файлов" "без изменения прав доступа" "файлы с расширением xz" "тип передачи(режим)=автоматический выбор" "путь локальный" "путь удаленный"
Хочу обратить внимание что если у вас где либо в путях есть пробелы или прочие некошерности то обязательно берите все пути в двойные кавычки!
Сохраняем файл и выходим.
Часть 3. Планировщик Windows
В связи с тем что солнце может менять свое местоположение :) а также магнитные бури и т.д. и т.п.... В общем запустить задачу с первого раза может и не получиться даже после успешных и правильных действий. Google в помосчЪ.
Пуск -> Выполнить -> taskschd.msc
или пкн на Компьютер -> Управление -> Планировщик заданий.
Переходим в раздел "Библиотека планировщика заданий". В правой части окна жмем "Создать задачу".
Указываем основные данные.
Создаем триггер
Указываем действия
Условия и Параметры выбираем на свой цвет.
На этом все.