Форумы портала PHP.SU » Серверное администрирование » Администрирование Windows » Копирование/синхронизация с помощью Winscp по расписанию (Windows - *nix)

Страниц (1): [1]
 

1. Viper - 24 Июля, 2014 - 22:15:02 - перейти к сообщению
Небольшое предисловие.

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

И так.

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

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

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

Нажмите для увеличения

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

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

Нажмите для увеличения


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

Нажмите для увеличения


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

Нажмите для увеличения


Часть 2. Скриптинг

1. Идем в нашу ранее соданную папку Jobs и в ней создаем файл server_dump.cmd
В нем пишем следующее:
CODE (htmlphp):
скопировать код в буфер обмена
  1. @echo off
  2. winscp /script=server.txt /log="D:\Backups\Logs\mysql_transfer.log"

Учтите что запуск winscp без полного пути будет возможен только после перезапуска системы. Иначе указывайте полный путь к программе(!).

Если вам не нужны логи то параметр /log можно убрать.

2. создаем файл server.txt (можно и другое расширение Закатив глазки ) и в нем прописываем:
CODE (htmlphp):
скопировать код в буфер обмена
  1. option batch abort
  2. option confirm off
  3. open sftp://user:password@server.com -timeout=60 -hostkey="ssh-rsa 2048 *****************************"
  4. synchronize local -preservetime -nopermissions -filemask="*.xz" -transfer=automatic D:\Backups\Sql /opt/mysql-dumps


Первые 2 параметра обязательны. Далее устанавливаем соединение к серверу с таймаутом в 60 секунд и с использованием ключа! который мы видели выше в Winscp->Commands->Server/Protocol Informations.
Апосля выбираем режим синхронизации(подробнее о режимах и ключах к ним).
Что-то наподобие:
CODE (htmlphp):
скопировать код в буфер обмена
  1. сихронизировать "в локальный" "сохранив исходное время файлов" "без изменения прав доступа" "файлы с расширением xz" "тип передачи(режим)=автоматический выбор" "путь локальный" "путь удаленный"


Хочу обратить внимание что если у вас где либо в путях есть пробелы или прочие некошерности то обязательно берите все пути в двойные кавычки!

Сохраняем файл и выходим.

Часть 3. Планировщик Windows
В связи с тем что солнце может менять свое местоположение Улыбка а также магнитные бури и т.д. и т.п.... В общем запустить задачу с первого раза может и не получиться даже после успешных и правильных действий. Google в помосчЪ.

Пуск->Выполнить->taskschd.msc
или пкн на Компьютер->Управление->Планировщик заданий.

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

Нажмите для увеличения


Создаем триггер

Нажмите для увеличения


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

Нажмите для увеличения


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

На этом все. Исправления и дополнения приветствуются.
2. Ch_chov - 24 Июля, 2014 - 22:39:01 - перейти к сообщению
Viper пишет:
transfer=automatic D:\Backups\Sql /opt/mysql-dumps

А почему бекапы в /opt?
3. Viper - 24 Июля, 2014 - 23:19:06 - перейти к сообщению
Ch_chov у меня там все бекапы. Почему? Незнаю.

 

Powered by ExBB FM 1.0 RC1