This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
backup_script [2025/04/24 23:20] – thilo | backup_script [2025/04/28 18:23] (current) – [Goals] hogwild | ||
---|---|---|---|
Line 11: | Line 11: | ||
\\ | \\ | ||
- | The script | + | The script |
- | \\ One option would be to create the backup as a cron job on the router itself. However, let's assume you want everything done in just one run. For this reason, creation of the backup in an individual file with timestamp | + | We could, of course, |
- | In this way, just one run of the script on the backup server | + | In this way, just one run of the script on the backup server |
Action is based on using a here doc to execute commands on the router. | Action is based on using a here doc to execute commands on the router. | ||
- | The backup is created using the "// | + | \\ \\ The backup is created using the "// |
- | You may cross-check that the backups are identical to the ones via web interface by a) download backup via GUI b) create backup by script, c) copy both files to router d) convert both files by "nvram convert < | + | You may cross-check that the backups are identical to the ones via the GUI using the following steps: |
- | The script then archives | + | \\ |
+ | |||
+ | - Download | ||
+ | - Create | ||
+ | - Copy both files to router | ||
+ | - Convert both files via the command | ||
+ | - Perform a diff between | ||
\\ | \\ | ||
- | Prerequisites: | + | The script then archives the resulting data in a tar file and sends it through the netcat command, transferring it over the network. |
+ | |||
+ | A configurable number of backups is kept. Older ones are deleted. | ||
+ | |||
+ | \\ | ||
+ | |||
+ | |||
+ | ==== Prerequisites | ||
\\ | \\ | ||
Line 46: | Line 59: | ||
| | ||
| | ||
+ | |||
+ | | ||
| | ||
Line 55: | Line 70: | ||
# VAR=`nvram get os_version` | # VAR=`nvram get os_version` | ||
# seem not to work in bash via here doc, so write results into script file and source it | # seem not to work in bash via here doc, so write results into script file and source it | ||
- | # Further the individual filename is general | + | # Further, the individual filename is generally |
# | # | ||
ssh ${USER}@${ROUTER} -i ${LOCAL_ID_FILE}<< | ssh ${USER}@${ROUTER} -i ${LOCAL_ID_FILE}<< | ||
Line 70: | Line 85: | ||
tar -cvf ${TRANSFER_FILENAME} *_20[234][0-9][01][0-9][0123][0-9]_[012][0-9][0-5][0-9]${EXT} | tar -cvf ${TRANSFER_FILENAME} *_20[234][0-9][01][0-9][0123][0-9]_[012][0-9][0-5][0-9]${EXT} | ||
cat ${TRANSFER_FILENAME} | nc caisfiles ${PORT} | cat ${TRANSFER_FILENAME} | nc caisfiles ${PORT} | ||
- | sleep 3 # just wait a little bit befor deleting the files not needed here any more | + | sleep 3 # just wait a little bit before |
rm -f ${SCRIPT_FILE} ${TRANSFER_FILENAME} ${PREFIX}_*_20[234][0-9][01][0-9][0123][0-9]_[012][0-9][0-5][0-9]${EXT} | rm -f ${SCRIPT_FILE} ${TRANSFER_FILENAME} ${PREFIX}_*_20[234][0-9][01][0-9][0123][0-9]_[012][0-9][0-5][0-9]${EXT} | ||
| | ||
Line 76: | Line 91: | ||
tar -xvf ${TRANSFER_FILENAME} | tar -xvf ${TRANSFER_FILENAME} | ||
rm ${TRANSFER_FILENAME} | rm ${TRANSFER_FILENAME} | ||
+ | echo deleting: | ||
+ | rm -fv `ls -t ${PREFIX}_*_20[234][0-9][01][0-9][0123][0-9]_[012][0-9][0-5][0-9]${EXT} | sed -e 1, | ||
popd | popd | ||