cleanup, some more elegant syntax, include control of restic on yunohost
This commit is contained in:
parent
d96bb981dc
commit
97e4087cbf
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user