Бэкап MySQL базы данных c помощью "PowerShell"
На всякий случай нужно сделать резервную копию моего сайта.
Вдруг я стану популярным, меня взломают, и нагадят и всё испортят.
В статье используются программы:
GreenShot v1.2.10.6 Программа для создания скриншотов оф. сайт
AkelPad v4.9.8 Текстовый редактор оф. сайт
Для резервного копирования будем использовать поставляемую в комплекте с "MySQL" программу для экспорта "mysqldump.exe"
Вроде ничего сложного, читаем документацию.
A dump made using PowerShell on Windows with output redirection creates a file that has UTF-16 encoding:
Созданный бэкап параршелом, зверски, перекодирует файл в кодировку UTF-16 :bug:
На помощь приходит ключ "--result-file" но проще использовать его аналог "-r" Так скрипт будет выглядеть более запутано
Линуксятники так любят делать -r -ty -ewr -y -e... птьфу :blank:
Короче, создаём файл "блаблабла.ps1" сохраняем его в кодировке UTF-8 (без BOM)
И пишем туда:
mysqldump -uUSER -pPASSWORD BASE_NAME -r PATH_TO_FILE
Не забываем про запрет на запуск скриптов.
Как-то смотреться не солидно такой скрипт... нужно больше угара. Сделаем бэкапы каждый день, и будем удалять не актуальные бэкапы.
Вначале проверим, работает ли то, что уже сделано. Конечно работает :)
Значит в системных переменных не добавлен путь до папки куда установлен MySQL. Читай тут.
Cделаем вот такой скрипт:
# ------------------------- # Для резервного копирования mysql баз данных # # © (:Pro:) 28.11.2017 # -------------------------- # #сегодня $today=get-date -format d #неделю назад $yesterday=(get-date (get-date).addDays(-6) -format d) #имя базы данных (в кавычках) $basename="imyabasy" #символ разделения (в кавычках) $symbol="_" mysqldump -uUSERNAME -pPASSWORD $basename -r "D:\backup\MySQL\$basename$symbol$today.sql" Remove-Item "D:\backup\MySQL\$basename$symbol$yesterday.sql" -Recurse -force
В результате мы получим файл вот с такими именем и расширением: "imyabasy_27.11.2017.sql"
Кавычки в путях нужны на случай если в пути будет пробел.
По началу скрипт будет ругаться, что не найден файл... старый файл бэкапа - который он пытается удалить, ну так его и нет :) он появиться через неделю.
Создаём в планировщике задание, которое будет запускаться от имени "СИСТЕМА"
и в качестве действия выбираем запуск "powershell.exe" и в параметрах указываем путь к скрипту.