Копирование/синхронизация с помощью Winscp по расписанию (Windows)



Небольшое предисловие.

Собственно задача стояла даже в простом бекапе баз данных. Но эту задачу я решил с помощью Sqlyog. В нём есть возможность создавать job и планировать её по расписанию. Потом глянув на то что происходит на сервере, вспомнил что на сервере уже настроено создание ужедневных бэкапов на 3 месяца. Почесав все что чесалось, решил убрать задачу из Sqlyog'а и перенести на простое копирование. Благо на сервере есть SFTP.

И так.

Часть 1. Установка и настройка софта

Потребуется установленный(или просто распакованный в какую-то папку) Winscp.

Устанавливаем его. На предпоследнем шаге ставим галку "Добавить путь к каталогу с программой к переменной поиска (%PATH%)". Это избавит в дальнейшем от ненужных телодвижений.

path

Завершаем установку.

 

После этого создаем папки на резервном диске(если есть ;)folders

Запускаем Winscp. И добавляем наш sftp мегасайт.new site

При первом логине затребует "добавления ключа" в хранилище(ну или что-то наподобие. Не вдавался в подробности).
Нам потребуется "слепок" в дальнейшем. Этот "слепок" можно подсмотреть в меню Winscp->Commands->Server/Protocol Informations. Он будет прямо на первой вкладке снизу.
fingerprint

Часть 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
или пкн на Компьютер -> Управление -> Планировщик заданий.

Переходим в раздел "Библиотека планировщика заданий". В правой части окна жмем "Создать задачу".
Указываем основные данные.
new task 01

Создаем триггер
new task 02

Указываем действия
new task 03

Условия и Параметры выбираем на свой цвет.

На этом все.