Skip to content

Instantly share code, notes, and snippets.

@ranzhe
Last active July 27, 2021 22:54
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 11 You must be signed in to fork a gist
  • Save ranzhe/8435acff931f73149db0 to your computer and use it in GitHub Desktop.
Save ranzhe/8435acff931f73149db0 to your computer and use it in GitHub Desktop.
Automatic FTP backup script for Mikrotik RouterOS
:local saveUserDB true
:local saveSysBackup true
:local encryptSysBackup false
:local saveRawExport true
:local FTPServer "ftpserver.tld"
:local FTPPort 21
:local FTPUser "my-mikrotik"
:local FTPPass "SecurePassword"
:local ts [/system clock get time]
:set ts ([:pick $ts 0 2].[:pick $ts 3 5].[:pick $ts 6 8])
:local ds [/system clock get date]
:set ds ([:pick $ds 7 11].[:pick $ds 0 3].[:pick $ds 4 6])
:local fname ("BACKUP-".[/system identity get name]."-".$ds."-".$ts)
:local sfname ("/".$fname)
:if ($saveUserDB) do={
/tool user-manager database save name=($sfname.".umb")
:log info message="User Manager DB Backup Finished"
}
:if ($saveSysBackup) do={
:if ($encryptSysBackup = true) do={ /system backup save name=($sfname.".backup") }
:if ($encryptSysBackup = false) do={ /system backup save dont-encrypt=yes name=($sfname.".backup") }
:log info message="System Backup Finished"
}
if ($saveRawExport) do={
/export file=($sfname.".rsc")
:log info message="Raw configuration script export Finished"
}
:local backupFileName ""
:foreach backupFile in=[/file find] do={
:set backupFileName ("/".[/file get $backupFile name])
:if ([:typeof [:find $backupFileName $sfname]] != "nil") do={
/tool fetch address=$FTPServer port=$FTPPort src-path=$backupFileName user=$FTPUser mode=ftp password=$FTPPass dst-path=$backupFileName upload=yes
}
}
:delay 5s
:foreach backupFile in=[/file find] do={
:if ([:typeof [:find [/file get $backupFile name] "BACKUP-"]]!="nil") do={
/file remove $backupFile
}
}
:log info message="Successfully removed Temporary Backup Files"
:log info message="Automatic Backup Completed Successfully"
@beeyev
Copy link

beeyev commented Apr 26, 2020

This script provides an ability to create Mikrotik's daily backups to email. You can also enable automatic RouterOS upgrade or leave only notifications about new firmware versions.

https://github.com/beeyev/Mikrotik-RouterOS-automatic-backup-and-update

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment