Skip to content

Instantly share code, notes, and snippets.

@ranzhe
Last active July 27, 2021 22:54
Show Gist options
  • 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"
@hamslicejumbomice
Copy link

How does this script work exactly?

@pcgame1366
Copy link

The recovery method does not work with this command

terminal ===== tool user-manager database save name = namebackup
Please tell us the best way to recover my user information because the above code does not answer
با سلام اسکریپت بالا جواب میدهد ولی موقع ریکاوری با دستور در ترمینال به مشکل بر خوردم

@emsebi
Copy link

emsebi commented Oct 21, 2019

ریکاوری ارتباطی به اسکریپت نداره / نسخه میکروتیک زمان گرفتن خروجی و موقع ریکاوری باید یکی باشه

@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