This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
backup_script [2025/04/24 18:16] – typos thilo | backup_script [2025/04/28 18:23] (current) – [Goals] hogwild | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Do not know whether this is the right place to publish this, just wanted to share..... | + | ====== Backup Script ====== |
+ | ==== Goals ==== | ||
- | I want to schedule backup by cron job, initiated by and stored at a save place on any server in the network, not just on the router. | + | \\ |
- | Further, I do not want to install SFTP just for the backups. | + | - You want to schedule a backup done via a cron job. |
+ | - You want the script initiated from, and stored in a safe location | ||
+ | - You do not wish to install SFTP just for these backups. | ||
- | Did not find a solution in the wiki/ | + | \\ |
- | So I did a little | + | The script |
- | Option to create the backup | + | We could, of course, |
- | Thus, creation of the backup in an individual file with timestamp is included in the script. | + | In this way, just one run of the script on the backup server |
- | + | ||
- | So it is 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 | + | \\ \\ The backup |
- | Then it tars the file and sends through netcat. | + | You may cross-check that the backups are identical to the ones via the GUI using the following steps: |
- | Prerequisites: netcat | + | \\ |
+ | |||
+ | - Download the backup via the graphical interface | ||
+ | - Create a backup via a script | ||
+ | - Copy both files to router | ||
+ | - Convert both files via the command "// | ||
+ | - Perform a diff between the two resulting text files. | ||
+ | |||
+ | \\ | ||
+ | |||
+ | 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 | ||
+ | |||
+ | \\ | ||
+ | |||
+ | - The netcat | ||
+ | - The router' | ||
+ | |||
+ | \\ | ||
- | Script starts here: | ||
- | ============================================== | ||
# | # | ||
Line 36: | Line 59: | ||
| | ||
| | ||
+ | |||
+ | | ||
| | ||
Line 45: | 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 60: | 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 before deleting the files not needed here any more | ||
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 65: | 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 | ||
+ | \\ | ||
+ | \\ | ||