Страница 1 из 1

Консольная команда для создания бекапа директории сайтов и баз данных

Добавлено: 21 фев 2025, 07:54
anho
Здравствуйте! Скажите, пожалуйста, существует ли команда консоли для создания бекапа директории "domains" со всеми её сайтами и одновременно с базами данных всех сайтов?
Требуется создание именно разового бекапа, а автоматический даже и не нужен. Поработал с сайтами - и сделал бекап.
Нигде не нашёл такую команду.

Re: Консольная команда для создания бекапа директории сайтов и баз данных

Добавлено: 21 фев 2025, 09:21
Ink0gnit0
Создайте файл backup_project.cmd со следующим содержимым:
@echo off

setlocal

set PROJECT_NAME=example.local
set PROJECTS_DIR=C:\osp6\home
set DB_NAME=MYDB
set DB_USER=root
set DB_PWD=""
set BACKUPS_PATH=D:\backups\%PROJECT_NAME%
set PATH=C:\osp6\modules\[НАИМЕНОВАНИЕ_MYSQL_МОДУЛЯ]\bin;%PATH%;

if [%1]==[] (
	echo Usage: %0 --projects-dir %PROJECTS_DIR% --project-name %PROJECT_NAME% --db-name %DB_NAME%
	echo.
	goto EXIT
)

:loop
if not "%1"=="" (
    if "%1"=="--projects-dir" (
        set PROJECTS_DIR=%2
        shift
    )
    if "%1"=="--project-name" (
        set PROJECT_NAME=%2
        shift
    )
		if "%1"=="--db-name" (
        set DB_NAME=%2
        shift
    )
    shift
    goto :loop
)

for /f "tokens=1-3 delims=/. " %%a in ('date /t') do (set BACKUP_DATE=%%c%%b%%a)
for /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set BACKUP_TIME=%%a%%b)

mkdir "%BACKUPS_PATH%" >nul 2>nul
mkdir "%BACKUPS_PATH%\site" >nul 2>nul
mkdir "%BACKUPS_PATH%\site\%BACKUP_DATE%" >nul 2>nul

echo Backup BD '%DB_NAME%' to %BACKUPS_PATH%\%DB_NAME%_%BACKUP_DATE%_%BACKUP_TIME%.sql
mysqldump --user=%DB_USER% --password=%DB_PWD% --single-transaction --databases %DB_NAME% > "%BACKUPS_PATH%\%DB_NAME%_%BACKUP_DATE%_%BACKUP_TIME%.sql"

echo Backup site to %BACKUPS_PATH%\site\%BACKUP_DATE%
robocopy /NFL /NDL /NJH /NJS /nc /ns /E "%PROJECTS_DIR%\%PROJECT_NAME%" "%BACKUPS_PATH%\site\%BACKUP_DATE%"

echo DONE!
:EXIT
endlocal
pause

Укажите в переменной PATH, путь к модулю MySQL:
set PATH=C:\osp6\modules\[НАИМЕНОВАНИЕ_MYSQL_МОДУЛЯ]\bin;
Для создания резервной копии, используйте команду:
Usage: backup_project.cmd --projects-dir C:\osp6\home --project-name example.local --db-name MYDB

либо, если задать по умолчанию путь к проектам:
Usage: backup_project.cmd --project-name example.local --db-name MYDB

Re: Консольная команда для создания бекапа директории сайтов и баз данных

Добавлено: 21 фев 2025, 09:26
anho
Спасибо. Буду пробовать. Но как громоздко. И почему этого нет где-нибудь в документации?
Спасибо за ответ.

Re: Консольная команда для создания бекапа директории сайтов и баз данных

Добавлено: 21 фев 2025, 09:33
Ink0gnit0
Если не хотите громоздко, можно свести к двум командам:
mysqldump --user=root --password= --databases MYDB > D:\backups\MYDB.ql
 
robocopy /NFL /NDL /NJH /NJS /nc /ns /E "C:\osp6\home\example.local" "D:\backups\site"

Re: Консольная команда для создания бекапа директории сайтов и баз данных

Добавлено: 21 фев 2025, 09:35
anho
Спасибо. А я оба варианта буду пробовать.