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

от автора

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

Задача

Получить бакап БД и файлов 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 и запускаем его на исполнение.


ссылка на оригинал статьи https://habr.com/ru/articles/595001/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *