This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
backup_script [2025/05/03 10:23] – thilo | backup_script [2025/05/06 08:08] (current) – little typo thilo | ||
---|---|---|---|
Line 52: | Line 52: | ||
\\ | \\ | ||
- | - If an IP and an ID file are given, these will be used, else defaults apply (Router IP from `ip r`) | + | - Command line arguments: backup directory, id-file and router /.eg. as IP). If provided, these will be used, else defaults apply (Router IP from `ip r`) |
- Date regex covers from 1970 - in case Tomato Router has no time. | - Date regex covers from 1970 - in case Tomato Router has no time. | ||
- Sometimes tar fails. | - Sometimes tar fails. | ||
Line 62: | Line 62: | ||
# | # | ||
- | ROUTER=`ip r | grep default | head -1 | cut -d " " -f 3` | + | DIR2BACKUP=/ |
- | | + | |
| | ||
+ | | ||
+ | while [[ $# -gt 0 ]]; do | ||
+ | case $1 in | ||
+ | -d|--dir2backup) | ||
+ | DIR2BACKUP=$2 ;; | ||
+ | -i|--idfile) | ||
+ | LOCAL_ID_FILE=$2 ;; | ||
+ | -r|--router) | ||
+ | ROUTER=$2 ;; | ||
+ | esac | ||
+ | shift; shift | ||
+ | done | ||
- | if [[ "$1h" | + | BACKUPHOST=`ip r | grep "${ROUTER%1}0/ |
- | ROUTER=$1 | + | |
- | LOCAL_ID_FILE=$2 | + | |
- | fi | + | |
echo | echo | ||
- | echo " | + | echo " |
- | echo "ID-file: "${LOCAL_ID_FILE} | + | echo "id file: " |
+ | echo " | ||
+ | echo "Backup host: "${BACKUPHOST} | ||
echo | echo | ||
- | BACKUPHOST=`ip r | grep ${ROUTER} | grep default | head -1 | cut -d " " -f 9` | + | USER=root |
| | ||
- | | ||
| | ||
| | ||
Line 89: | Line 98: | ||
| | ||
| | ||
- | pushd ${BACKUP_DIR} > /dev/null | + | pushd ${DIR2BACKUP} > /dev/null |
rm -f ${TRANSFER_FILENAME} | rm -f ${TRANSFER_FILENAME} | ||
- | + | # | |
# Thinks like | # Thinks like | ||
# VAR=`nvram get os_version` | # VAR=`nvram get os_version` | ||
Line 116: | Line 125: | ||
rm -f ${SCRIPT_FILE} ${TRANSFER_FILENAME} ${PREFIX}_*_${DATE_REGEX}_${TIME_REGEX}.${EXT} | rm -f ${SCRIPT_FILE} ${TRANSFER_FILENAME} ${PREFIX}_*_${DATE_REGEX}_${TIME_REGEX}.${EXT} | ||
| | ||
- | | + | |
| | ||
if [ " | if [ " | ||
Line 122: | Line 131: | ||
echo ${THIS_BACKUP_FILE} | echo ${THIS_BACKUP_FILE} | ||
echo | echo | ||
- | # Keep only one file (the latest) per day - delete earlier file of same day | ||
TODAYS_BACKUP_FILES_PREFIX=${THIS_BACKUP_FILE%_*} | TODAYS_BACKUP_FILES_PREFIX=${THIS_BACKUP_FILE%_*} | ||
+ | ALL_BACKUP_FILES_PREFIX=${TODAYS_BACKUP_FILES_PREFIX%_*} | ||
+ | DATE=`date +%Y%m%d_%H%M` | ||
+ | if ! [[ `find -cmin 5 | grep ${THIS_BACKUP_FILE}` ]] ; then | ||
+ | # Date of the new files is more that 5 mins in the past => seems Tomato Router has no date (or date 1970-01-01) | ||
+ | touch ${THIS_BACKUP_FILE} | ||
+ | fi | ||
+ | # Keep only one file (the latest) per day - delete earlier file of same day | ||
LIST_OLD_BACKUPS_OF_TODAY=`ls -t ${TODAYS_BACKUP_FILES_PREFIX}_${TIME_REGEX}.${EXT} 2> /dev/null | sed -e 1,1d` | LIST_OLD_BACKUPS_OF_TODAY=`ls -t ${TODAYS_BACKUP_FILES_PREFIX}_${TIME_REGEX}.${EXT} 2> /dev/null | sed -e 1,1d` | ||
if [ " | if [ " | ||
echo " | echo " | ||
- | rm -v ${LIST_OLD_BACKUPS_OF_TODAY} | + | rm -fv ${LIST_OLD_BACKUPS_OF_TODAY} |
echo | echo | ||
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) | ||
- | | + | |
- | DELETE_OLDER=`ls -t ${ALL_BACKUP_FILES_PREFIX}_${DATE_REGEX}_${TIME_REGEX}.${EXT} | sed -e 1, | + | if [ "${OLDER_FILES}" ]; then |
- | if [ "${DELETE_OLDER}" ]; 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:" | ||
- | rm -fv ${DELETE_OLDER} | + | rm -fv ${OLDER_FILES} |
echo | echo | ||
fi | fi | ||
Line 144: | Line 158: | ||
fi | fi | ||
popd > /dev/null | popd > /dev/null | ||
+ | | ||
\\ | \\ | ||