Site Tools


backup_script

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
backup_script [2025/06/11 15:32] – [Goals] -Change "we" to "you" hogwildbackup_script [2025/09/10 15:45] (current) – Key issue fixec thilo
Line 5: Line 5:
  \\  \\
  
-  - You want to schedule a backup done via a cron job.  +  - You want to schedule a backup to be done via a cron job.  
-  - You want the script initiated from, and stored in a safe location  \\ on a server on the network(not on the router).+  - You want the script initiated from, and stored in a safe location  \\ on a server on the network (not on the router).
   - You do not wish to install SFTP just for these backups.   - You do not wish to install SFTP just for these backups.
  
Line 41: Line 41:
  
   - The netcat command must be available on the backup server.   - The netcat command must be available on the backup server.
-  - The router's root user must have access to the public SSH key \\ of the user executing the script on backup server.+  - The user executing the script on backup server must have access to the router's root user via SSH key.
  
  \\  \\
Line 49: Line 49:
  \\  \\
  
-  - Command line arguments: backup directory, id-file and router (as IP address). \\ If provided, these will be used. Otherwise, the defaults will apply \\ (such Router IP from "ip r").+  - Command line arguments: backup directory, id-file and router (as IP address). \\ If provided, these will be used. Otherwise, the defaults will apply \\ (search Router IP from "ip r").
   - Sometimes tar may fail. You can solve this by just cleaning. The next \\ cron run may do that.   - Sometimes tar may fail. You can solve this by just cleaning. The next \\ cron run may do that.
   - All earlier backups from the same day are abandoned.   - All earlier backups from the same day are abandoned.
Line 101: Line 101:
    TRANSFER_FILENAME=config.tar    TRANSFER_FILENAME=config.tar
        
-   # It may be, that Tomato router has no - or other, wrong - timeother or no timee +   # It may happen, that Tomato router has no - or other, wrong - time 
-   # take date from localhost (i.e. backupserver) into backup filename+   # take date from localhost (i.e. backup server) into backup filename
    DATE=`date +%Y%m%d_%H%M`    DATE=`date +%Y%m%d_%H%M`
 +   
    pushd ${DIR2BACKUP} > /dev/null    pushd ${DIR2BACKUP} > /dev/null
        
Line 111: Line 111:
    # Thinks like    # Thinks like
    # 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 not known, so tar it into temp file+   # Further the individual filename is generally not known, so tar it into temp file.
    #    #
    # Kill netcat zombies    # Kill netcat zombies
    kill -9 `ps -ef | grep -v grep | grep netcat | sed -e "s/ [ ]*/ /g" | cut -d " " -f 2` 2> /dev/null    kill -9 `ps -ef | grep -v grep | grep netcat | sed -e "s/ [ ]*/ /g" | cut -d " " -f 2` 2> /dev/null
    (netcat -l -p ${PORT} > ${TRANSFER_FILENAME}) &    (netcat -l -p ${PORT} > ${TRANSFER_FILENAME}) &
 +   # Create the backup file on the router by executing the following commands (indented lines) there
    ssh ${USER}@${ROUTER} -i ${LOCAL_ID_FILE} <<ENDSSH    ssh ${USER}@${ROUTER} -i ${LOCAL_ID_FILE} <<ENDSSH
         rm -f ${SCRIPT_FILE} ${TRANSFER_FILENAME} ${PREFIX}_*_${DATE_REGEX}_${TIME_REGEX}.${EXT}         rm -f ${SCRIPT_FILE} ${TRANSFER_FILENAME} ${PREFIX}_*_${DATE_REGEX}_${TIME_REGEX}.${EXT}
Line 129: Line 130:
         tar -cvf ${TRANSFER_FILENAME} ${PREFIX}_*_${DATE_REGEX}_${TIME_REGEX}.${EXT} > /dev/null         tar -cvf ${TRANSFER_FILENAME} ${PREFIX}_*_${DATE_REGEX}_${TIME_REGEX}.${EXT} > /dev/null
         cat ${TRANSFER_FILENAME} | nc ${BACKUPHOST} ${PORT}         cat ${TRANSFER_FILENAME} | nc ${BACKUPHOST} ${PORT}
-        sleep 5 # just wait a little bit before deleting the files not needed here any more+        sleep 5 # just wait a little while before deleting the files not needed here any more
         rm -f ${SCRIPT_FILE} ${TRANSFER_FILENAME} ${PREFIX}_*_${DATE_REGEX}_${TIME_REGEX}.${EXT}         rm -f ${SCRIPT_FILE} ${TRANSFER_FILENAME} ${PREFIX}_*_${DATE_REGEX}_${TIME_REGEX}.${EXT}
    ENDSSH    ENDSSH
Line 148: Line 149:
         fi         fi
         # In total, keep only ${NO_OF_DIFF_FILES_TO_BE_KEPT} files - delete older files (of any day)         # In total, keep only ${NO_OF_DIFF_FILES_TO_BE_KEPT} files - delete older files (of any day)
-        OLDER_FILES=`ls -t ${ALL_BACKUP_FILES_PREFIX}_${DATE_REGEX}_${TIME_REGEX}.${EXT} | sed -e 1,${NO_OF_DIFF_FILES_TO_BE_KEPT}d`+        OLDER_FILES=`ls ${ALL_BACKUP_FILES_PREFIX}_${DATE_REGEX}_${TIME_REGEX}.${EXT} | sort -r | sed -e 1,${NO_OF_DIFF_FILES_TO_BE_KEPT}d`
         if [ "${OLDER_FILES}" ]; then         if [ "${OLDER_FILES}" ]; then
                 echo "keep only ${NO_OF_DIFF_FILES_TO_BE_KEPT} in total, delete:"                 echo "keep only ${NO_OF_DIFF_FILES_TO_BE_KEPT} in total, delete:"
backup_script.1749652334.txt.gz · Last modified: by hogwild