Script para envio de base de dados MySQL por FTP

Passei algumas horas de um final de semana estudando como fazer um envio automatizado de arquivos para um servidor remoto. A ideia era basicamente fazer uma cópia de backup de uma base de dados MySQL. É claro que os dados não eram sigilosos (usei FTP que trafega sem criptografia). Vale lembrar que existem formas mais inteligentes de transferência e replicação de base de dados. Mas valeu como estudo e por isso compartilho.

OBS: MySQL e 7zip precisam estar instalados.

Salve como send-ftp.bat e agende a tarefa. Eis um vídeo de como fazer o agendamento. Lembre-se de alterar as variáveis user e password.

@echo off
setlocal EnableDelayedExpansion

::
:: PATH Mysql e 7Zip
::
::
set MYSQL_HOME="C:Program FilesMySQLMySQL Server 5.6bin"
set ZIP_HOME="C:Program Files7-Zip"

::
:: Parametros
::
set _data=%date%
set data=%_data:/=_%

set user=<user>
set password=<password>
set host_name=localhost
set db_name=<dbname>
set backup_sql_file="%data%_dump.sql"

set ftp_user=<user>
set ftp_pass=<password>
set ftp_domain=brasilcomputer.club

echo ----------------------------------------
echo %_data% - Iniciando rotina
echo ----------------------------------------

%MYSQL_HOME%mysqldump.exe --user=%user% --password=%password% --result-file=%backup_sql_file% --databases %db_name% || goto :error
%ZIP_HOME%7z.exe a %backup_sql_file%.zip %backup_sql_file% | FIND "ing archive" || goto :error
del %backup_sql_file% || goto :error

echo option batch abort > ftpcmd.dat
echo option confirm off >> ftpcmd.dat
echo open ftp://%ftp_user%:%ftp_pass%@%ftp_domain%/ >> ftpcmd.dat
echo option transfer binary >> ftpcmd.dat
echo put %backup_sql_file%.zip >> ftpcmd.dat
echo exit>> ftpcmd.dat
winscp.com /script=ftpcmd.dat || goto :error
del ftpcmd.dat || goto :error

echo ----------------------------------------
echo %_data% - Envio concluido
echo ----------------------------------------
goto :EOF

:error
echo Falhou com o erro %errorlevel%.
exit /b %errorlevel%

Deixe uma resposta