--- title: 'mikrotik Backup' --- #### 1. Script for DDNS Create the following script with name `TanBack` and the following permissions `ftp,read,write,policy,test,sensitive` ``` # Tanshu automatic DNS updates :local date [/system clock get date]; :local day [:pick $date 4 6]; :local month [:pick $date 0 3]; :if ([$month] = "jan") do={ :set month 01 }; :if ([$month] = "feb") do={ :set month 02 }; :if ([$month] = "mar") do={ :set month 03 }; :if ([$month] = "apr") do={ :set month 04 }; :if ([$month] = "may") do={ :set month 05 }; :if ([$month] = "jun") do={ :set month 06 }; :if ([$month] = "jul") do={ :set month 07 }; :if ([$month] = "aug") do={ :set month 08 }; :if ([$month] = "sep") do={ :set month 09 }; :if ([$month] = "oct") do={ :set month 10 }; :if ([$month] = "nov") do={ :set month 11 }; :if ([$month] = "dec") do={ :set month 12 }; :local year [:pick $date 7 11]; :local time [:pick [/system clock get time] 0 5]; :local filename ("Data/10.1.0.x/mikrotik-10.1.0.1-$year.$month.$day.rsc"); /export file=export.rsc; /tool fetch address=hopsngrains.com src-path=export.rsc user=tanshu mode=ftp password=tan12shu dst-path=($filename) upload=yes; :log info "TanBack: Backup uploaded with filename $filename" ``` #### 2. Schedule the script Create the following schedule with name `TanBack-Daily` and the following permissions `ftp,read,write,policy,test,sensitive`, `1 day` interval and `TanBack` On Event. #### 3. Server preperation ```sh mkdir -p ~/Data/mikrotik-Home ``` #### 4. Install gdrive Install gdrive to backup the database to google account in case of data loss at webfaction Go to `https://github.com/prasmussen/gdrive` and download `gdrive-linux-x64` in `~/bin/` ```sh wget -o ~/bin/gdrive $URL_FOR_GDRIVE_LINUX_X64_BINARY ``` Make it executable `chmod +x ~/bin/gdrive` #### 5. Configure Google Drive Link your gdrive to the account by running `gdrive list` and following the instructions. Create a folder called `mikrotik-Home` and get its id by running `gdrive list`. Create upload script named `mk.sh` in the home directory and make it executable `chmod +x ~/mk.sh` ```sh #!/usr/bin/env bash for filename in ~/Data/mikrotik-Home/*.rsc; do hash=`sha512sum ${filename} | awk '{ print $1 }'` if grep -q "$hash" ~/Data/mikrotik-Home/mikrotik.sha512sums; then echo "File $(basename $filename) is uploaded" else echo "Need to upload $filename" sha512sum "$filename" >> ~/Data/mikrotik-Home/mikrotik.sha512sums ~/bin/gdrive upload --parent 1eO7hJ6b8_4n43B8GWSVyBtoon4vZyhs6 "$filename" fi done``` #### 6. Automate Backups Edit crontab using `export VISUAL=nano; crontab -e` and add the following line ```sh 0 1 * * * ~/mk.sh ```