pups
This commit is contained in:
parent
f38bb597d6
commit
974aff12c6
100
backup-yunohost.sh
Executable file
100
backup-yunohost.sh
Executable file
@ -0,0 +1,100 @@
|
||||
#!/usr/bin/env bash
|
||||
#set -euo pipefail
|
||||
#trap 's=$?; echo >&2 "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
|
||||
|
||||
TARGET=/yunohost-backups
|
||||
HOST=yunohost
|
||||
TODAY_DATE=`date '+%F'`
|
||||
LOGFILE=${TARGET}/$TODAY_DATE.$$.log
|
||||
ERR=0
|
||||
NUMRETAINBACKUPS=10
|
||||
|
||||
echo "yunohost backup begin:" >$LOGFILE
|
||||
date >>$LOGFILE
|
||||
|
||||
for i in 1 2 3
|
||||
do
|
||||
NUMBACKUPS=`ssh ${HOST} sudo yunohost backup list | grep -- '-' | wc -l`
|
||||
ERR=$?
|
||||
if [ ${ERR} == 0 ]
|
||||
then
|
||||
echo number of backups on yunohost ${NUMBACKUPS} >>$LOGFILE
|
||||
echo number of backups to keep ${NUMRETAINBACKUPS} >>$LOGFILE
|
||||
else
|
||||
echo yunohost could not list backups >>$LOGFILE
|
||||
date >>$LOGFILE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ${NUMBACKUPS} -gt ${NUMRETAINBACKUPS} ]
|
||||
then
|
||||
BACKTODEL=`ssh ${HOST} sudo yunohost backup list | grep -- '-' | head -1 | cut -d" " -f4`
|
||||
echo 'the following backup will be deleted:' >>$LOGFILE 2>&1
|
||||
ssh ${HOST} sudo yunohost backup info ${BACKTODEL} >>$LOGFILE 2>&1
|
||||
ssh ${HOST} "sudo yunohost backup delete ${BACKTODEL}" >>$LOGFILE 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
ssh ${HOST} sudo yunohost backup create >>$LOGFILE 2>&1
|
||||
ERR=$?
|
||||
if [ ${ERR} == 0 ]
|
||||
then
|
||||
echo yunohost backup successfully created >>$LOGFILE
|
||||
else
|
||||
echo yunohost backup did NOT complete >>$LOGFILE
|
||||
fi
|
||||
echo "yunohost backup ended:" >>$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`
|
||||
scp ${HOST}:${BACKUPFILE} ${TARGET} && echo ${BACKUPFILE} successfully copied to ${TARGET}! >>$LOGFILE 2>&1
|
||||
ls -lisah ${TARGET}/`basename ${BACKUPFILE}` >>$LOGFILE
|
||||
gzip -9 ${TARGET}/`basename ${BACKUPFILE}` >>$LOGFILE 2>&1
|
||||
|
||||
|
||||
# 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
|
||||
# in addition 13 monthly backups (first sunday of every month) and 6 yearly backups (first sunday of every year)
|
||||
|
||||
|
||||
cd ${TARGET}
|
||||
# keep 8 daily backups
|
||||
for i in {0..7}; do ((keep[$(date +%Y%m%d -d "-$i day")]++)); done
|
||||
# keep 5 weekly backups
|
||||
for i in {0..4}; do ((keep[$(date +%Y%m%d -d "sunday-$((i+1)) week")]++)); done
|
||||
# keep 13 monthly backups
|
||||
for i in {0..12}; do
|
||||
DW=$(($(date +%-W)-$(date -d $(date -d "$(date +%Y-%m-15) -$i month" +%Y-%m-01) +%-W)))
|
||||
for (( AY=$(date -d "$(date +%Y-%m-15) -$i month" +%Y); AY < $(date +%Y); AY++ )); do
|
||||
((DW+=$(date -d $AY-12-31 +%W)))
|
||||
done
|
||||
((keep[$(date +%Y%m%d -d "sunday-$DW weeks")]++))
|
||||
done
|
||||
# keep 6 yearly backups
|
||||
for i in {0..5}; do
|
||||
DW=$(date +%-W)
|
||||
for (( AY=$(($(date +%Y)-i)); AY < $(date +%Y); AY++ )); do
|
||||
((DW+=$(date -d $AY-12-31 +%W)))
|
||||
done
|
||||
((keep[$(date +%Y%m%d -d "sunday-$DW weeks")]++))
|
||||
done
|
||||
#echo ${!keep[@]}
|
||||
echo space in filesys of ${TARGET} before pruning backups >>$LOGFILE 2>&1
|
||||
df -h ${TARGET} >>$LOGFILE 2>&1
|
||||
for i in *.gz
|
||||
do
|
||||
DATE=`echo $i | cut -c1-8`
|
||||
echo ${!keep[@]} | grep $DATE >/dev/null
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo deleting $DATE >>$LOGFILE 2>&1
|
||||
rm ${DATE}*.tar.* >>$LOGFILE 2>&1
|
||||
rm ${DATE}*.log.* >>$LOGFILE 2>&1
|
||||
fi
|
||||
done
|
||||
echo space in filesys of ${TARGET} after pruning backups >>$LOGFILE 2>&1
|
||||
df -h ${TARGET} >>$LOGFILE 2>&1
|
||||
echo "$0 on `hostname` ended:" >>$LOGFILE
|
||||
date >>$LOGFILE
|
||||
# Achtung, hier wird es kompliziert :) nach diesem Kommando keine Umleitung in $LOGFILE mehr
|
||||
mv ${LOGFILE} ${TARGET}/`basename ${BACKUPFILE} .tar`.log
|
||||
gzip -9 ${TARGET}/`basename ${BACKUPFILE} .tar`.log
|
30
upd
Executable file
30
upd
Executable file
@ -0,0 +1,30 @@
|
||||
brew update
|
||||
brew upgrade
|
||||
echo "nuc7"
|
||||
echo
|
||||
upd-linux
|
||||
echo "osmc"
|
||||
echo
|
||||
upd-osmc
|
||||
echo "Kodi-Datenbank"
|
||||
echo
|
||||
update-kodi vs
|
||||
echo yunohost
|
||||
echo
|
||||
upd-yunohost
|
||||
echo Mac
|
||||
echo
|
||||
softwareupdate -l
|
||||
ssh nuc7 "/root/bin/catlastbackuplog.sh"
|
||||
ssh nuc7 "cat /root/mystack/docker-prune.log 2>/dev/null"
|
||||
#ssh nuc7 "ls -ltrh /yunohost-backups | tail -2"
|
||||
echo
|
||||
echo "Yunohost-Backups von heute nacht:"
|
||||
ssh nuc7 "ls -ltrh /yunohost-backups/`date '+%Y%m%d'`-*"
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo
|
||||
echo "Achtung: KEINE Backups von letzter Nacht gefunden"
|
||||
fi
|
||||
echo "Platz im Filesystem, das auf nuc7 die /yunohost-backups beherbergt:"
|
||||
ssh nuc7 "df -h /yunohost-backups"
|
Loading…
x
Reference in New Issue
Block a user