cleanup, some more elegant syntax, include control of restic on yunohost
This commit is contained in:
		| @@ -4,35 +4,39 @@ | |||||||
|  |  | ||||||
| TARGET=/yunohost-backups | TARGET=/yunohost-backups | ||||||
| HOST=yunohost | HOST=yunohost | ||||||
| TODAY_DATE=`date '+%F'` | TODAY_DATE=$(date '+%F') | ||||||
| LOGFILE=${TARGET}/$TODAY_DATE.$$.log | LOGFILE=${TARGET}/$TODAY_DATE.$$.log | ||||||
| ERR=0 | ERR=0 | ||||||
| NUMRETAINBACKUPS=10 | NUMRETAINBACKUPS=10 | ||||||
|  |  | ||||||
| echo "yunohost backup begin:" >$LOGFILE | echo "yunohost backup begin $(date):" >$LOGFILE | ||||||
| date >>$LOGFILE | #date >>$LOGFILE | ||||||
| # delete max. 3 old backups per run | # delete max. 3 old backups per run | ||||||
| for i in 1 2 3 | for i in 1 2 3 | ||||||
| do | do | ||||||
| 	NUMBACKUPS=`ssh ${HOST} sudo yunohost backup list | grep -- '-' | wc -l` | 	NUMBACKUPS=$(ssh ${HOST} sudo yunohost backup list | grep -- '-' | wc -l) || { echo yunohost could not list backups $(date) >>$LOGFILE ; exit 1; } | ||||||
| 	ERR=$? | #	ERR=$? | ||||||
| 	if [ ${ERR} -ne 0 ] | #	if [ ${ERR} -ne 0 ] | ||||||
| 	then | #	then | ||||||
|         	echo yunohost could not list backups >>$LOGFILE | #        	echo yunohost could not list backups >>$LOGFILE | ||||||
| 		date >>$LOGFILE | #		date >>$LOGFILE | ||||||
| 		exit 1 | #		exit 1 | ||||||
| 	fi | #	fi | ||||||
|  |  | ||||||
| 	if [ ${NUMBACKUPS} -gt ${NUMRETAINBACKUPS} ] | 	if [ ${NUMBACKUPS} -gt ${NUMRETAINBACKUPS} ] | ||||||
| 	then | 	then | ||||||
| 		BACKTODEL=`ssh ${HOST} sudo yunohost backup list | grep -- '-' | head -1 | cut -d" " -f4` | 		BACKTODEL=$(ssh ${HOST} sudo yunohost backup list | grep -- '-' | head -1 | cut -d" " -f4) | ||||||
| 		echo 'the following backup will be deleted:'  >>$LOGFILE 2>&1 | 		echo 'the following backup will be deleted on ${HOST}:'  &>>$LOGFILE  | ||||||
| 		ssh ${HOST} sudo yunohost backup info ${BACKTODEL} >>$LOGFILE 2>&1 | 		ssh ${HOST} sudo yunohost backup info ${BACKTODEL} &>>$LOGFILE  | ||||||
| 		ssh ${HOST} "sudo yunohost backup delete ${BACKTODEL}" >>$LOGFILE 2>&1 | 		ssh ${HOST} "sudo yunohost backup delete ${BACKTODEL}" &>>$LOGFILE  | ||||||
| 	fi | 	fi | ||||||
| done | done | ||||||
|  |  | ||||||
| ssh ${HOST} sudo yunohost backup create >>$LOGFILE 2>&1  | # It's hightly recommended to make your backup when the service is stopped. Please stop gitea service with this command before to run the backup 'systemctl stop gitea.service' | ||||||
|  |  | ||||||
|  | echo "stopping gitea service on ${HOST}"  &>>$LOGFILE  | ||||||
|  | ssh ${HOST} sudo systemctl stop gitea.service &>>$LOGFILE  | ||||||
|  | ssh ${HOST} sudo yunohost backup create &>>$LOGFILE  | ||||||
| ERR=$? | ERR=$? | ||||||
| if [ ${ERR} == 0 ] | if [ ${ERR} == 0 ] | ||||||
| then | then | ||||||
| @@ -40,13 +44,24 @@ then | |||||||
| else | else | ||||||
| 	echo yunohost backup did NOT complete >>$LOGFILE | 	echo yunohost backup did NOT complete >>$LOGFILE | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | echo "starting gitea service on ${HOST}"  &>>$LOGFILE  | ||||||
|  | ssh ${HOST} sudo systemctl start gitea.service &>>$LOGFILE  | ||||||
|  |  | ||||||
| echo "yunohost backup ended:" >>$LOGFILE | echo "yunohost backup ended:" >>$LOGFILE | ||||||
| date >>$LOGFILE | date >>$LOGFILE | ||||||
| BACKUPFILE=`ssh ${HOST} sudo yunohost backup list --with-info -H  | grep -A 3 $TODAY_DATE |  grep 'path:' | cut -d":" -f2 | tr -d " " | tail -1` | BACKUPFILE=$(ssh ${HOST} sudo yunohost backup list --with-info -H  | grep -A 3 $TODAY_DATE |  grep 'path:' | cut -d":" -f2 | tr -d " " | tail -1) | ||||||
| scp ${HOST}:${BACKUPFILE} ${TARGET} && echo ${BACKUPFILE} successfully copied to ${TARGET}! >>$LOGFILE 2>&1 | scp ${HOST}:${BACKUPFILE} ${TARGET} && echo "${BACKUPFILE} successfully copied to ${TARGET}!" &>>$LOGFILE || echo "error when trying to scp ${BACKUPFILE} to ${TARGET}!" &>>$LOGFILE  | ||||||
| ls -lisah ${TARGET}/`basename ${BACKUPFILE}` >>$LOGFILE | ls -lisah ${TARGET}/`basename ${BACKUPFILE}` >>$LOGFILE | ||||||
| gzip -9 ${TARGET}/`basename ${BACKUPFILE}` >>$LOGFILE 2>&1 | gzip -9 ${TARGET}/`basename ${BACKUPFILE}` &>>$LOGFILE | ||||||
|  | ls -lisah ${TARGET}/`basename ${BACKUPFILE}`.gz &>>$LOGFILE  | ||||||
|  | source /root/.bashrc | ||||||
|  | echo restic backup on ${HOST} at $(date) &>>${LOGFILE}  | ||||||
|  | #ssh ${HOST} sudo { source /root/.bashrc ; /usr/bin/restic backup /home/yunohost.backup/archives ; } &>>$LOGFILE | ||||||
|  | ssh ${HOST} "sudo /root/bin/restic.sh" &>>$LOGFILE | ||||||
|  | restic check --read-data-subset 20% &>>$LOGFILE | ||||||
|  | restic stats &>>$LOGFILE | ||||||
|  | rclone about onedrive_b2: &>>$LOGFILE | ||||||
|  |  | ||||||
| # algo to create the "keep"-array copied from https://serverfault.com/questions/575163/how-to-keep-daily-backups-for-a-week-weekly-for-a-month-monthly-for-a-year-a | # algo to create the "keep"-array copied from https://serverfault.com/questions/575163/how-to-keep-daily-backups-for-a-week-weekly-for-a-month-monthly-for-a-year-a | ||||||
| # it keeps 8 daily backups and 5 weekly (every sunday) backups | # it keeps 8 daily backups and 5 weekly (every sunday) backups | ||||||
| @@ -75,8 +90,8 @@ for i in {0..5}; do | |||||||
|         ((keep[$(date +%Y%m%d -d "sunday-$DW weeks")]++)) |         ((keep[$(date +%Y%m%d -d "sunday-$DW weeks")]++)) | ||||||
| done | done | ||||||
| #echo ${!keep[@]} | #echo ${!keep[@]} | ||||||
| echo space in filesys of ${TARGET} before pruning backups >>$LOGFILE 2>&1 | echo space in filesys of ${TARGET} before pruning backups &>>$LOGFILE | ||||||
| df -h ${TARGET} >>$LOGFILE 2>&1 | df -h ${TARGET} &>>$LOGFILE | ||||||
| for i in *.tar.gz | for i in *.tar.gz | ||||||
| do  | do  | ||||||
| 	DATE=`echo $i | cut -c1-8`  | 	DATE=`echo $i | cut -c1-8`  | ||||||
| @@ -84,13 +99,14 @@ do | |||||||
| 	if [ $? -ne 0 ] | 	if [ $? -ne 0 ] | ||||||
| 	then	 | 	then	 | ||||||
| 		echo pwd `pwd` | 		echo pwd `pwd` | ||||||
| 		echo deleting $DATE  >>$LOGFILE 2>&1 | 		echo deleting $DATE  &>>$LOGFILE | ||||||
| 		rm ${DATE}*.tar.* >>$LOGFILE 2>&1 | 		rm ${DATE}*.tar.* &>>$LOGFILE | ||||||
| 		rm ${DATE}*.log.* >>$LOGFILE 2>&1 | 		rm ${DATE}*.log.* &>>$LOGFILE | ||||||
| 	fi | 	fi | ||||||
| done | done | ||||||
| echo space in filesys of ${TARGET} after pruning backups >>$LOGFILE 2>&1 | echo space in filesys of ${TARGET} after pruning backups &>>$LOGFILE | ||||||
| df -h ${TARGET} >>$LOGFILE 2>&1 | df -h ${TARGET} &>>$LOGFILE | ||||||
|  |  | ||||||
| echo "$0 on `hostname` ended:" >>$LOGFILE | echo "$0 on `hostname` ended:" >>$LOGFILE | ||||||
| date >>$LOGFILE | date >>$LOGFILE | ||||||
| # Achtung, hier wird es kompliziert :) nach diesem Kommando keine Umleitung in $LOGFILE mehr | # Achtung, hier wird es kompliziert :) nach diesem Kommando keine Umleitung in $LOGFILE mehr | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user