Как стать автором
Обновить

Скрипт Windows PowerShell архивации RedMine Turnkey Hyper-V по ssh

Время на прочтение3 мин
Количество просмотров3.3K

Исходные данные

Задача

Получить бакап БД и файлов RedMine размером поменьше чем целый образ Hyper-V.

Надо немного уметь в PowerShell и PuTTY (хотя рекомендую WinSCP - визуально править файлы и по каталога ходить).

После отладки и корректировки под свои дополнительные нужды (например исключить большие Git каталоги) засунуть в стандартный планировщик Windows (не забыть про указание рабочего каталога).

Реализация

После номера пункта, Система в которой выполняем действие.

1. Windows. Установить OpenSSH.Client, выполнить PowerShell

Add-WindowsCapability -Online -Name OpenSSH.Client*

2. Windows. Сгенерировать shh ключ, выполнить PowerShell

cd c:\Users\[UserName]\.ssh
ssh-keygen -t rsa -b 4096 -C "your_mail@example.com"

[UserName] - имя текущего пользователя.

Каталог c:\Users\[UserName]\.ssh обычно скрытый и\или системный. При отсутствии каталога предварительно его создать.

your_mail@example.com - e-mail текущего пользователя.

3. Redmine. Содержимым из c:\Users\[UserName]\.ssh\id_rsa.pub дополнить файл(добавить новую строку) root/.ssh/authorized_keys

Каталог root/.ssh/authorized_keys обычно скрытый и\или системный.

4. Windows. Установка первого соединения, выполнить PowerShell

ssh root@192.168.1.155

root - пользователь RedMine

192.168.1.155 - IP Hyper-V, где развернут RedMine

PowerShell попросит принять соединение, набрать yes и нажать Enter, если всё сделано верно больше вводить пароль при подключении по ssh больше не придётся.

5. Windows. Создаем файл StartBackUp.ps1 с содержимым в рабочем каталоге пользователя (в данный каталог будет производиться архивация данных RedMine)

cls
#Текущая дата
$DateStr=(Get-Date).ToString("yyyy_MM_dd_hh_mm_ss")

#Создаем (удаляя предыдущий) скрипт арихивации
Write-Host "=====================$DateStr======================"
$FileName = "BackUpScript.ps1"
if (Test-Path $FileName) 
{
  Remove-Item $FileName
}

#Формируем имя временного каталога RedMine
$BackUpPath="/var//www//"+$DateStr
Write-Host "Create: $FileName"

#Создать временный каталог для архива
"ssh root@192.168.1.155 'mkdir "+$BackUpPath+"'">>$FileName

#Архив файлов
"ssh root@192.168.1.155 'tar -cvf "+$BackUpPath+"/files.tar.gz /var/www/redmine/files'">>$FileName

#Архив Git
"ssh root@192.168.1.155 'tar -cvf "+$BackUpPath+"/git.tar.gz /srv/repos/git'">>$FileName

#Архив базы RedMine
"ssh root@192.168.1.155 '/usr/bin/mysqldump -u redmine -p9323XXXXXXX13ad redmine_production | gzip > "+$BackUpPath+"/redmineDB.gz'">>$FileName

#Запуск скрипта архивации
Write-Host "Run: $FileName"
.\BackUpScript.ps1

#Копировние временного каталога RedMine в текущий рабочий каталог Windows
Write-Host "Copy dir from $BackUpPath to "(Get-Location)
scp -r root@192.168.1.155:$BackUpPath (Get-Location)

#Создаем (удаляя предыдущий) скрипт удаления временного каталога RedMine
$FileName = "DelBackUpScript.ps1"
if (Test-Path $FileName) 
{
  Remove-Item $FileName
}
#Запуск скрипта удаления
"ssh root@192.168.1.155 'rm -r "+ $BackUpPath+"'">>$FileName
Write-Host "Run: $FileName"
.\DelBackUpScript.ps1

Данные для строки архива базы RedMine брать из /var/www/redmine/config/database.yml

6. Windows. Запускаем PowerShell, переходим в каталог с StartBackUp.ps1 и запускаем его на исполнение.

Теги:
Хабы:
Всего голосов 6: ↑3 и ↓3+3
Комментарии4

Публикации

Истории

Работа

Ближайшие события