variousscripts/crontabbackupdaily/backup.sh

61 lines
1.4 KiB
Bash
Raw Permalink Normal View History

2019-08-05 13:07:57 +00:00
#!/bin/bash
# simple backup script for everyday cron execution
# after execution `crontab -e` add new line to crontab schedule:
# @daily sh /home/user/backup.sh
2022-11-26 19:13:24 +00:00
# dir for archives:
SAVEDIR=/home/user/archive/
2019-08-05 13:07:57 +00:00
# files and dirs for backup:
backups[0]=/home/user/some.file
backups[1]=/home/user/somedir
2022-11-26 19:13:24 +00:00
# mysql databases for backup:
db[0]=databasename1
db[1]=databasename2
2019-08-05 13:07:57 +00:00
# number of days for backup
DAYS=5
WEEKS=10
2022-11-26 19:13:24 +00:00
# create db backups
for n in ${!db[@]}; do
dbbackups[n]=${SAVEDIR}${db[n]}.gz
mysqldump ${db[n]} > ${dbbackups[n]::-3}
gzip ${dbbackups[n]::-3}
done
2019-08-05 13:07:57 +00:00
# create archive with file name 'arc.tar.gz'
2022-11-26 19:23:05 +00:00
tar -cvzf ${SAVEDIR}arc.tar.gz ${backups[*]} ${dbbackups[*]}
2019-08-05 13:07:57 +00:00
2022-11-26 19:13:24 +00:00
# remove db backups
rm ${dbbackups[*]}
2019-08-05 13:07:57 +00:00
# save last WEEKS
if [ -e ${SAVEDIR}arc-w1.tar.gz ]
then
oneweek=${SAVEDIR}arc-w1.tar.gz
oneweekripen=`find ${SAVEDIR}arc-w1.tar.gz -type f -mtime +10`
echo $oneweek
echo $oneweekripen
if [ "$oneweek" = "$oneweekripen" ]
then
for ((a=WEEKS; a >= 2 ; a--))
do
let b=a-1
mv ${SAVEDIR}arc-w${b}.tar.gz ${SAVEDIR}arc-w${a}.tar.gz
done
mv ${SAVEDIR}arc-d5.tar.gz ${SAVEDIR}arc-w1.tar.gz
fi
else
mv ${SAVEDIR}arc-d5.tar.gz ${SAVEDIR}arc-w1.tar.gz
fi
# save last DAYS
for ((a=DAYS; a >= 2 ; a--))
do
let b=a-1
mv ${SAVEDIR}arc-d${b}.tar.gz ${SAVEDIR}arc-d${a}.tar.gz
done
mv ${SAVEDIR}arc.tar.gz ${SAVEDIR}arc-d1.tar.gz
exit 0