61 lines
1.4 KiB
Bash
Executable File
61 lines
1.4 KiB
Bash
Executable File
#!/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
|
|
|
|
# dir for archives:
|
|
SAVEDIR=/home/user/archive/
|
|
|
|
# files and dirs for backup:
|
|
backups[0]=/home/user/some.file
|
|
backups[1]=/home/user/somedir
|
|
# mysql databases for backup:
|
|
db[0]=databasename1
|
|
db[1]=databasename2
|
|
# number of days for backup
|
|
DAYS=5
|
|
WEEKS=10
|
|
|
|
# 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
|
|
|
|
# create archive with file name 'arc.tar.gz'
|
|
tar -cvzf ${SAVEDIR}arc.tar.gz ${backups[*]} ${dbbackups[*]}
|
|
|
|
# remove db backups
|
|
rm ${dbbackups[*]}
|
|
|
|
# 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
|