Criando backup do RouterOS/Mikrotik via FTP
Neste exemplo vou ensinar como fazer um backup do seu routerOS/Mikroitk via FTP.
Requisitos ter um servidor FTP 😛
Sugestão: Como criar um servidor FTP (Pure-FTPd) com usuário no banco de dados (MariaDB) usando Debian 10
Vamos ao script, você precisa alterar:
:global host ____IP/DNS_SERVIDOR_FTP____
:global usuario ____USER____
:global senha ____SENHA____
:global diretorio ____pastaX____
Acesse o menu: System >> Script e depois em [+]
O nome do arquivo será o mesmo que você definiu em System >> Identity, serão criado dois arquivos, uma backup e um export (AAAA-MM-DD.NOME.backup AAAA-MM-DD.NOME.rsc)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
:log warning "***************************************" # Conexão FTP :global host ____IP/DNS_SERVIDOR_FTP____ :global usuario ____USER____ :global senha ____SENHA____ :global diretorio ____pastaX____ # Pega o nome do Router :global identifica [/system identity get name ]; # Gera data no formato AAAA-MM-DD :global data [/system clock get date] :global meses ("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"); :global ano ([:pick $data 7 11]) :global mestxt ([:pick $data 0 3]) :global mm ([ :find $meses $mestxt -1 ] + 1); :if ($mm < 10) do={ :set mm ("0" . $mm); } :global mes ([:pick $ds 7 11] . $mm . [:pick $ds 4 6]) :global dia ([:pick $data 4 6]) :log info "Gerando backup: $ano-$mes-$dia.$identifica.backup"; /system backup save name="$ano-$mes-$dia.$identifica"; :log info "Gerando export: $ano-$mes-$dia.$identifica.rsc"; /export file="$ano-$mes-$dia.$identifica" :log info "Processando..."; :delay 5s :log info "Conectando FTP Server..."; :log info "Enviando Backup [$ano-$mes-$dia.$identifica.backup] ..."; /tool fetch address=$host src-path="$ano-$mes-$dia.$identifica.backup" user="$usuario" password="$senha" port=21 upload=yes mode=ftp dst-path="$diretorio/$ano-$mes-$dia.$identifica.backup" :log info "Enviando Export [$ano-$mes-$dia.$identifica.rsc] ..."; /tool fetch address=$host src-path="$ano-$mes-$dia.$identifica.rsc" user="$usuario" password="$senha" port=21 upload=yes mode=ftp dst-path="$diretorio/$ano-$mes-$dia.$identifica.rsc" :delay 1 :log info "Backup enviado com sucesso..."; :log info "Removendo arquivos..."; /file remove "$ano-$mes-$dia.$identifica.backup" /file remove "$ano-$mes-$dia.$identifica.rsc" :log info "Rotina de backup finalizada..."; :log warning "***************************************"; |
Agora será preciso agenda-lo para execução a cada X perÃodo, no meu exemplo vou definir que todos os meio dias a cada 3 dias. Ajuste de acordo com suas necessidades:
Acesse o menu: System >> Scheduler [+]
Se estiver com preguiça 😀 pode copiar as linhas abaixo e colar no terminal, depois só alterar as variáveis.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/system script add dont-require-permissions=no name=backup_ftp owner=remontti policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=":log warning \"***************************************\"\r\ \n# Conex\E3o FTP\r\ \n:global host ____IP/DNS_SERVIDOR_FTP____\r\ \n:global usuario ___USUARIO___\r\ \n:global senha ___SENHA___\r\ \n:global diretorio ___NOME_DA_PASTA___\r\ \n# Pega o nome do Router\r\ \n:global identifica [/system identity get name ];\r\ \n# Gera data no formato AAAA-MM-DD\r\ \n:global data [/system clock get date]\r\ \n:global meses (\"jan\",\"feb\",\"mar\",\"apr\",\"may\",\"jun\",\"jul\",\"aug\",\"sep\",\"oct\",\"nov\",\"dec\");\r\ \n:global ano ([:pick \$data 7 11])\r\ \n:global mestxt ([:pick \$data 0 3])\r\ \n:global mm ([ :find \$meses \$mestxt -1 ] + 1);\r\ \n:if (\$mm < 10) do={ :set mm (\"0\" . \$mm); }\r\ \n:global mes ([:pick \$ds 7 11] . \$mm . [:pick \$ds 4 6])\r\ \n:global dia ([:pick \$data 4 6])\r\ \n:log info \"Gerando backup: \$ano-\$mes-\$dia.\$identifica.backup\";\r\ \n/system backup save name=\"\$ano-\$mes-\$dia.\$identifica\";\r\ \n:log info \"Gerando export: \$ano-\$mes-\$dia.\$identifica.rsc\";\r\ \n/export file=\"\$ano-\$mes-\$dia.\$identifica\"\r\ \n:log info \"Processando...\";\r\ \n:delay 5s\r\ \n:log info \"Conectando FTP Server...\";\r\ \n:log info \"Enviando Backup [\$ano-\$mes-\$dia.\$identifica.backup] ...\";\r\ \n/tool fetch address=\$host src-path=\"\$ano-\$mes-\$dia.\$identifica.backup\" user=\"\$usuario\" password=\"\$senha\" port=21 upload=yes mode=ftp dst-path=\"\$diretorio/\$ano-\$mes-\$dia.\$identifica.backup\"\ \r\ \n:log info \"Enviando Export [\$ano-\$mes-\$dia.\$identifica.rsc] ...\";\r\ \n/tool fetch address=\$host src-path=\"\$ano-\$mes-\$dia.\$identifica.rsc\" user=\"\$usuario\" password=\"\$senha\" port=21 upload=yes mode=ftp dst-path=\"\$diretorio/\$ano-\$mes-\$dia.\$identifica.rsc\"\r\ \n:delay 1\r\ \n:log info \"Backup enviado com sucesso...\";\r\ \n:log info \"Removendo arquivos...\";\r\ \n /file remove \"\$ano-\$mes-\$dia.\$identifica.backup\"\r\ \n /file remove \"\$ano-\$mes-\$dia.\$identifica.rsc\"\r\ \n:log info \"Rotina de backup finalizada...\";\r\ \n:log warning \"***************************************\";" /system scheduler add interval=3d name=backup_ftp on-event=backup_ftp policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-date=dec/17/2019 start-time=12:00:00 |
Simples né! Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!
Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.
Abraço!
Obrigado Excelente, funciona muito bem.
Muito obrigado.
Ajudou de mais.
Sucesso.
Excelente script, me poupou um tempo! Funciona certinho
uma dica pra quem usa subpastas, :global diretorio /bkp_mk/mikrotikX, onde “bkp_mk” será a primeira subpasta dentro do diretorio onde o usario do ftp tem acesso, digamos que a pasta padrao dele é “mikrotik”, entao o script irá upar o backup para dentro da subopasta /bkp_mk/mikrotikX (mikrotikX é por exemplo, uma subpasta que diferencia seus concentradores, caso queira organizar separadamente).