MIKROTIK BACKUP
MIKROTIK BACKUP FTP, SFTP, EMAIL.
In questa Guida vedremo come salvare i Backup Mikrotik e i file di configurazione.rsc in un server esterno usando FTP, SFTP oppure inviandoli via EMAIL.
Componenti Neccessari:
- Un Router Mikrotik qualsiasi (es. Mikrotik hAP ax2)
- Una connessione internet.
- Un Server tra FTP e SFTP oppure una casella di posta elettronica.
Prima di iniziare con la guida approndiamo un attimo i Backup e la loro importanza.
Spesso dopo aver configurato in maniera massiva il Router Mikrotik, viene salvata una configurazione, però nei mesi e anni successivi pian piano vengono modificate o implementate varie funzioni, trascurando il fatto che il Router si potrebbe guastare da un momento all’altro perdendo importantissime funzioni, che magari è complesso risalire a come erano state configurate.
Quindi è fondamentale avere sempre una copia della configurazione aggiornata.
Sapevi che Mikrotik da la possibilità di salvare un file come Backup oppure come file testo editabile?
Cosa cambia? Quali vantaggi abbiamo ad utilizzare uno piuttosto che un’altro?
L’estensione file utilizzata è .backup per i file backup e .rsc per i file editabili.
– FILE BACKUP
PRO
- Riporta tutta la configurazione completa compreso le credenziali di accesso;
- I MAC Address vengono salvati in essa e ripristinati al Restore.
CONTRO
- Il Restore può avvenire solo sulla macchina in cui è stato creato o su una dello stesso identico modello;
- Non è possibile verificare o editare la configurazione del file.backup prima di eseguire il Restore;
- Il file.backup ha una dimensione maggiore rispetto a il file.rsc;
– FILE DI CONFIGURAZIONE.rsc
PRO
- Il file può essere verificato e/o editato prima di Ripristinarlo sul dispositivo;
- La configurazione può essere caricata su qualsiasi dispositivo anche di differente modello;
- Si può caricare anche solo parte della configurazione e non necessariamente tutta;
- Si può creare un modello standard da utilizzare come base su tutte le future configurazioni;
CONTRO
- Le Credenziali di accesso non vengono salvate per cui al Ripristino vanno nuovamente create le credenziali utente;
- Possono venir importati i MAC ADDRESS delle interfacce virtuali, per cui è necessario rimuoverli per caricare la configurazione su nuovi dispositivi.
Come faccio a Salvare un Backup manualmente?
Nel terminale del Router Mikrotik va digitato:
/system backup save name=NomeBackup
Come faccio a Salvare un file di configurazione editabile.rsc manualmente?
Nel terminale del Router Mikrotik va digitato:
/export show sensitive file=NomeFile
E’ possibile esportare il file di configurazione nascondendo i dati sensibili utilizzando “hide sensitive” anzichè “show sensitive“.
E se volessimo salvare in automatico i file backup e file.rsc secondo delle pianificazioni?
Bene, nei prossimi paragrafi vedremo come salvare i vari file su server esterni o interni usando FTP e SFTP, inoltre, nell’eventualità non si avessero dei server dove salvare i file vedremo come possiamo inviarceli periodicamente via email.
Obbiettivo 1: Invio Pianificato file.backup e file.rsc su Server FTP
Con il seguente codice attiviamo uno script che verra schedulato ogni 10 giorni, e permetterà di salvare i file.rsc e file.backup in un NAS interno alla rete tramite FTP.
Aprire il terminale su Winbox e incolla il seguente testo:
/system script
add dont-require-permissions=yes name=Backup-ftp owner=abbio90 policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="{\
\n#----------------------------------------\
\n# SAVE BACKUP TO FTP SERVER BY foisfabio.it\
\n# \
\n# Script: Save Backup FTP SERVER\
\n# Version: 1.0\
\n# RouterOS v.7.12.1\
\n# Created: 14/11/2023\
\n# Updated: --/--/----\
\n# Author: Fois Fabio\
\n# Editor: Fois Fabio\r\
\n# Website: https://foisfabio.it\
\n# Email: consulenza@foisfabio.it\
\n#\
\n#----------------------------------------\
\n\r\
\n#COMPILARE LE VARIABILI SOTTOSTANTI:\
\n\
\n#INSERIRE INDIRIZZO SERVER\"\
\n\r\
\n:local ipserver \"10.250.159.100\"\
\n\r\
\n#----------------------------------------\r\
\n\r\
\n#INSERIRE CREDENZIALI D'ACCESSO\r\
\n\r\
\n:local user \"user54\"\
\n:local password \"pwYt6Hg6e2\"\
\n\r\
\n#----------------------------------------\
\n\r\
\n#INSERISCI PERCORSO FILE DI DESTINAZIONE\
\n\r\
\n:local dstpath \"/BACKUP_PROXMOX/Mikrotik-VIA_VERDI/\"\r\
\n \
\n#----------------------------------------\r\
\n\
\n#INSERISCI L'INTERVALLO DESIDERATO TRA UN BACKUP E L'ALTRO\
\n\r\
\n :local myRunTime \"10d 00:00:00\"\
\n\
\n############## Don\92t edit below this line ##############\r\
\n\r\
\n:local scheduleName \"Backup-FTP\"\r\
\n\r\
\n:if ([:len [/system scheduler find name=\"\$scheduleName\"]] = 0) do={\r\
\n\r\
\n /log error \"[Backup-FTP] Alert : lo Scheduler non esiste. Creo lo scheduler\"\r\
\n\r\
\n\r\
\n\r\
\n /system scheduler add name=\$scheduleName interval=\$myRunTime start-date=Jan/01/1970 start-time=startup on-event=\"/system script run Backup-ftp\"\r\
\n\r\
\n\r\
\n\r\
\n /log warning \"[Backup-FTP] Alert : Scheduler creato .\"\r\
\n\r\
\n}\
\n\
\n:local sysname [/system identity get name]\
\n\
\n:local textfilename\
\n\
\n:local backupfilename\
\n\
\n:local time [/system clock get time]\
\n\
\n:local date [/system clock get date]\
\n\
\n:local newdate \"\";\
\n\
\n:for i from=0 to=([:len \$date]-1) do={ :local tmp [:pick \$date \$i];\
\n\
\n:if (\$tmp !=\"/\") do={ :set newdate \"\$newdate\$tmp\" }\
\n\
\n:if (\$tmp =\"/\") do={}\
\n\
\n}\
\n\
\n#check for spaces in system identity to replace with underscores\
\n\
\n:if ([:find \$sysname \" \"] !=0) do={\
\n\
\n:local name \$sysname;\
\n\
\n:local newname \"\";\
\n\
\n:for i from=0 to=([:len \$name]-1) do={ :local tmp [:pick \$name \$i];\
\n\
\n:if (\$tmp !=\" \") do={ :set newname \"\$newname\$tmp\" }\
\n\
\n:if (\$tmp =\" \") do={ :set newname \"\$newname_\" }\
\n\
\n}\
\n\
\n:set sysname \$newname;\
\n\
\n}\
\n\
\n:set textfilename (\$\"newdate\" . \"-\" . \$\"sysname\" . \".rsc\")\
\n\
\n:set backupfilename (\$\"newdate\" . \"-\" . \$\"sysname\" . \".backup\")\
\n\
\n:execute [/export file=\$\"textfilename\"]\
\n\
\n:execute [/system backup save name=\$\"backupfilename\"]\
\n\
\n#Allow time for export to complete\
\n\
\n:delay 2s\
\n\
\n:local time [/system clock get time]\
\n\
\n/tool fetch address=\$ipserver src-path=\$textfilename user=\$user password=\$password port=21 upload=yes mode=ftp dst-path=(\$dstpath.\"/\".\$textfilename)\r\
\n\r\
\n:delay 10s;\r\
\n\r\
\n/tool fetch address=\$ipserver src-path=\$backupfilename user=\$user password=\$password port=21 upload=yes mode=ftp dst-path=(\$dstpath.\"/\".\$backupfilename)\
\n\
\n\
\n\
\n\
\n#Allow time to send\
\n\
\n:delay 5s\
\n\
\n \
\n\
\n#delete copies\
\n\
\n/file remove \$textfilename\
\n\
\n\
\n/file remove \$backupfilename\
\n\
\n }\
\n\
\n\
\n\
\n"
Una volta copiato il precedente codice, andiamo nel tab System, Script apriamo lo script “Backup-ftp” e modifichiamo le variabili evidenziate in testa allo script, così come segue:
Dopo aver inserito i dati del server, clicchiamo su Apply e successivamente su Run Script.
Verrà eseguita una pianificazione in base ai tempi impostati nella variabile myRunTime.
Eseguendo un controllo con Filezilla sul server di destinazione possiamo notare che i file Backup e .rsc sono stati salvati correttamente nel percorso definito.
Sarebbe bene implementare un automazione sul server che elimini i file più vecchi.
Obbiettivo 2: Invio Pianificato file.backup e file.rsc su Server SFTP
Con il seguente codice attiviamo uno script che verra schedulato ogni 10 giorni, e permetterà di salvare i file.rsc e file.backup in un server server esterno alla rete tramite SFTP.
In questo caso il Server remoto è un CHR Mikrotik.
Aprire il terminale su Winbox e incolla il seguente testo:
/system script
add dont-require-permissions=yes name=Backup-SFTP owner=abbio90 policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="{\
\n#----------------------------------------\
\n# SAVE BACKUP TO FTP SERVER BY foisfabio.it\
\n# \
\n# Script: Save Backup SFTP SERVER\
\n# Version: 1.0\
\n# RouterOS v.7.11.2\
\n# Created: 17/11/2023\
\n# Updated: --/--/----\
\n# Author: Fois Fabio\
\n# Editor: Fois Fabio\
\n\
\n# Website: https://foisfabio.it\
\n# Email: consulenza@foisfabio.it\
\n#\
\n#----------------------------------------\
\n\
\n\
\n#COMPILARE LE VARIABILI SOTTOSTANTI:\
\n\
\n#INSERIRE INDIRIZZO SERVER+PERCORSO\"\
\n:local urlserver \"sftp://1.2.3.4/Backup/\"\
\n\
\n\
\n#----------------------------------------\
\n\
\n\
\n\
\n#INSERIRE CREDENZIALI D'ACCESSO\
\n\
\n:local user \"user54\"\
\n:local password \"pwYt6Hg6e2\"\
\n\
\n \
\n#----------------------------------------\
\n\
\n \
\n\
\n############## Don\92t edit below this line ##############\
\n\
\n\
\n\
\n:local scheduleName \"Backup-SFTP\"\
\n\
\n:local myRunTime \"10d 00:00:00\"\
\n\
\n\
\n\
\n:if ([:len [/system scheduler find name=\"\$scheduleName\"]] = 0) do={\
\n\
\n\
\n\
\n /log error \"[Backup-SFTP] Alert : lo Scheduler non esiste. Creo lo scheduler\"\
\n\
\n\
\n\
\n\
\n\
\n\
\n\
\n /system scheduler add name=\$scheduleName interval=\$myRunTime start-date=Jan/01/1970 start-time=startup on-event=\"/system script run Backup-SFTP\"\
\n\
\n\
\n\
\n\
\n\
\n\
\n\
\n /log warning \"[Backup-SFTP] Alert : Scheduler creato .\"\
\n\
\n\
\n\
\n}\
\n\
\n:local sysname [/system identity get name]\
\n\
\n:local textfilename\
\n\
\n:local backupfilename\
\n\
\n:local time [/system clock get time]\
\n\
\n:local date [/system clock get date]\
\n\
\n:local newdate \"\";\
\n\
\n:for i from=0 to=([:len \$date]-1) do={ :local tmp [:pick \$date \$i];\
\n\
\n:if (\$tmp !=\"/\") do={ :set newdate \"\$newdate\$tmp\" }\
\n\
\n:if (\$tmp =\"/\") do={}\
\n\
\n}\
\n\
\n#check for spaces in system identity to replace with underscores\
\n\
\n:if ([:find \$sysname \" \"] !=0) do={\
\n\
\n:local name \$sysname;\
\n\
\n:local newname \"\";\
\n\
\n:for i from=0 to=([:len \$name]-1) do={ :local tmp [:pick \$name \$i];\
\n\
\n:if (\$tmp !=\" \") do={ :set newname \"\$newname\$tmp\" }\
\n\
\n:if (\$tmp =\" \") do={ :set newname \"\$newname_\" }\
\n\
\n}\
\n\
\n:set sysname \$newname;\
\n\
\n}\
\n\
\n:set textfilename (\$\"newdate\" . \"-\" . \$\"sysname\" . \".rsc\")\
\n\
\n:set backupfilename (\$\"newdate\" . \"-\" . \$\"sysname\" . \".backup\")\
\n\
\n:execute [/export file=\$\"textfilename\"]\
\n\
\n:execute [/system backup save name=\$\"backupfilename\"]\
\n\
\n#Allow time for export to complete\
\n\
\n:delay 2s\
\n\
\n:local time [/system clock get time]\
\n\
\n/tool fetch url=(\$urlserver.\"/\".\$textfilename) src-path=\$textfilename user=\$user password=\$password upload=yes\
\n\
\n\
\n\
\n:delay 10s;\
\n\
\n\
\n\
\n/tool fetch url=(\$urlserver.\"/\".\$backupfilename) src-path=\$backupfilename user=\$user password=\$password upload=yes\
\n\
\n\
\n\
\n\
\n\
\n\
\n#Allow time to send\
\n\
\n:delay 5s\
\n\
\n \
\n\
\n#delete copies\
\n\
\n/file remove \$textfilename\
\n\
\n\
\n/file remove \$backupfilename\
\n\
\n }\
\n\
\n\
\n\
\n"
Una volta copiato il precedente codice, andiamo nel tab System, Script apriamo lo script “Backup-SFTP” e modifichiamo le variabili evidenziate in testa allo script, così come segue:
Dopo aver inserito i dati del server, clicchiamo su Apply e successivamente su Run Script.
Verra eseguita una pianificazione in base ai tempi impostati nella variabile “myRunTime”.
Eseguendo un controllo con Filezilla sul server di destinazione possiamo notare che i file Backup e .rsc sono stati salvati correttamente nel percorso definito.
Sarebbe bene implementare uno script sul server remoto che elimini i file più vecchi.
Obbiettivo 3: Invio Pianificato file.backup e file.rsc via email.
Con il seguente codice attiviamo uno script che verra schedulato ogni 10 giorni, e permetterà di salvare i file.rsc e file.backup inviandoli via mail.
Aprire il terminale su Winbox e incolla il seguente testo:
/system script
add dont-require-permissions=yes name=Backup_email owner=abbio90 policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="#----------------------------------------\
\n# SAVE BACKUP TO EMAIL BY foisfabio.it\
\n# \
\n# Script: Save Backup to EMAIL\
\n# Version: 1.0\
\n# RouterOS v.7.11.2\
\n# Created: 03/12/2023\
\n# Updated: --/--/----\
\n# Author: Fois Fabio\
\n# Editor: Fois Fabio\
\n\
\n# Website: https://foisfabio.it\
\n# Email: consulenza@foisfabio.it\
\n#\
\n#----------------------------------------\
\n\
\n\
\n#COMPILARE LE VARIABILI SOTTOSTANTI:\
\n\
\n \
\n\
\n#Your email address to receive the backups\
\n\
\n:local toemail \"web@foisfabio.it\"\
\n\
\n \
\n\
\n#The From address (you can use your own address if you want)\
\n\
\n:local fromemail \"management@test.it\"\
\n\
\n \
\n\
\n#A mail server your machines can send through\
\n\
\n:local emailserver \"smtps.aruba.it\"\
\n\
\n \
\n\
\n############## Don\92t edit below this line ##############\
\n:local scheduleName \"Backup-EMAIL\"\
\n\
\n:local myRunTime \"3d 00:00:00\"\
\n\
\n\
\n\
\n:if ([:len [/system scheduler find name=\"\$scheduleName\"]] = 0) do={\
\n\
\n\
\n\
\n /log error \"[Backup-EMAIL] Alert : lo Scheduler non esiste. Creo lo scheduler\"\
\n\
\n /system scheduler add name=\$scheduleName interval=\$myRunTime start-date=Jan/01/1970 start-time=01:30:00 on-event=\"/system script run Backup_email\"\
\n\
\n\
\n /log warning \"[Backup-EMAIL] Alert : Scheduler creato .\"\
\n\
\n\
\n\
\n}\
\n \
\n\
\n:local sysname [/system identity get name]\
\n\
\n:local textfilename\
\n\
\n:local backupfilename\
\n\
\n:local time [/system clock get time]\
\n\
\n:local date [/system clock get date]\
\n\
\n:local newdate \"\";\
\n\
\n:for i from=0 to=([:len \$date]-1) do={ :local tmp [:pick \$date \$i];\
\n\
\n:if (\$tmp !=\"/\") do={ :set newdate \"\$newdate\$tmp\" }\
\n\
\n:if (\$tmp =\"/\") do={}\
\n\
\n}\
\n\
\n#check for spaces in system identity to replace with underscores\
\n\
\n:if ([:find \$sysname \" \"] !=0) do={\
\n\
\n:local name \$sysname;\
\n\
\n:local newname \"\";\
\n\
\n:for i from=0 to=([:len \$name]-1) do={ :local tmp [:pick \$name \$i];\
\n\
\n:if (\$tmp !=\" \") do={ :set newname \"\$newname\$tmp\" }\
\n\
\n:if (\$tmp =\" \") do={ :set newname \"\$newname_\" }\
\n\
\n}\
\n\
\n:set sysname \$newname;\
\n\
\n}\
\n\
\n:set textfilename (\$\"newdate\" . \"-\" . \$\"sysname\" . \".rsc\")\
\n\
\n:set backupfilename (\$\"newdate\" . \"-\" . \$\"sysname\" . \".backup\")\
\n\
\n:execute [/export file=\$\"textfilename\"]\
\n\
\n:execute [/system backup save name=\$\"backupfilename\"]\
\n\
\n#Allow time for export to complete\
\n\
\n:delay 2s\
\n\
\n \
\n\
\n#email copies\
\n\
\n:log info \"Emailing backups\"\
\n\
\n/tool e-mail send to=\$\"toemail\" from=\$\"fromemail\" server=[:resolve \$emailserver] port=465 subject=\"[Config Backup] \$sysname \$time\" file=(\$\"textfilename\",\$\"backupfilename\")\
\n\
\n#Send as different subjects to force GMail to treat as new message thread.\
\n\
\n:local time [/system clock get time]\
\n\
\n \
\n\
\n#Allow time to send\
\n\
\n:delay 10s\
\n\
\n \
\n\
\n#delete copies\
\n\
\n/file remove \$textfilename\
\n\
\n/file remove \$backupfilename"
Una volta copiato il precedente codice, andiamo nel tab System, Script apriamo lo script “Backup_email” e modifichiamo le variabili evidenziate in testa allo script, così come segue:
Fondamentale compilare la sezione dedicata alla mail nel tab Tool Email, indicando server di posta, porta e credenziali di accesso.
Ora verfichiamo la cassella di posta per accertarci sia avvenuto correttamente l’invio dei file backup.
Vuoi ulteriori infomazioni su questa configurazione, o vuoi fare qualche domanda per approfondire?
Scrivi nei commenti o contattami attraverso la sezione Contatti.
Scopri hAP ax lite, il nuovo router Mikrotik con potente processore ARM.
Ti è piaciuta questa guida MIKROTIK BACKUP
Segui tutte le guide su RouterOS alla pagina: Guide Mikrotik
E’ ora disponibile il nuovo canale telegram, dove puoi rispondere a dei quiz inerenti a Mikrotik e alle reti in generale. Iscriviti Subito!
Puoi inviare il tuo contributo Paypal oppure commenta e condividi questo contenuto.
Hai riscontrato errori in questa guida?? segnalacelo tramite la scheda CONTATTI
Copyright © 2023 foisfabio.it | Powered by Fabio Fois
Quanto è stato utile questo post?
Clicca su una stella per valutarla!
Voto medio 5 / 5. Conteggio dei voti: 1
Nessun voto finora! Sii il primo a valutare questo post.
Unfortunately Mikrotik does not allow you to set exclusive user privileges for SFTP but SSH access to the Router must necessarily be automatically given.
Ciao Fabio complimenti per lo script e grazie per la condivisione, funziona alla perfezione, sto utilizzando la versione ftp con filezilla ma in alcuni MikroTik più vecchiotti non funziona. Dai log mi dice che non trova i file o la directory e su file lui li ha creati sia .backup che .rsc. Può essere che la struttura delle cartelle sui modelli vecchi è diversa? Questi modelli sono aggiornati all’ultima versione però nascevano con 6.35. Qualche suggerimento? Grazie
In alcuni modelli è presente /flash/ nel percorso. In altri modelli no. Andrebbe verificato nelle routerboard dove non funziona lo script