forked from php/systems
-
Notifications
You must be signed in to change notification settings - Fork 0
/
backup-testfest-php-net
executable file
·73 lines (60 loc) · 1.82 KB
/
backup-testfest-php-net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/sh
#Id$
TESTFESTPATH=/home/web/testfest.php.net/docroot
BASEDIR=/local/this-box/testfest.php.net
DIR=testfest-"`date +%m-%d-%Y-%H-%M`"
BACKUPPATH="/local/this-box/testfest.php.net" # where do you save the backups?
# Attachments path
ATTACHMENTS_DIR=$TESTFESTPATH/attachments/
DAILY_BACKUPS="8" # keep this amount data backups
# creates $1, if not existant
checkDir()
{
if [ ! -d "${BACKUPPATH}/$1" ]
then
mkdir -p "${BACKUPPATH}/$1"
fi
}
# 1 -> path
# 2 -> name
# 3 -> number of backups
rotateDir()
{
for i in `seq $(($3 - 1)) -1 1`
do
if [ -f "$1/$2.$i.tar.bz2" ]
then
mv "$1/$2.$i.tar.bz2" "$1/$2.$((i + 1)).tar.bz2"
fi
# for the SQL data, bzip'ed content not using tar
if [ -f "$1/$2.$i.bz2" ]
then
mv "$1/$2.$i.bz2" "$1/$2.$((i + 1)).bz2"
fi
done
}
checkDir "attachments"
checkDir "attachments/archive"
checkDir "attachments/daily"
checkDir "sql"
checkDir "sql/archive"
checkDir "sql/daily"
# first step: rotate daily.
rotateDir "${BACKUPPATH}/attachments/daily" "attachments" "$DAILY_BACKUPS"
rotateDir "${BACKUPPATH}/sql/daily" "testfest-php-net.sql" "$DAILY_BACKUPS"
# then create our backup
# --exclude is not accepted for Linksys NSLU2 box, any alternative?
tar --exclude=".*" -cjf "/tmp/attachments.1.tar.bz2" -C "${TESTFESTPATH}" "attachments"
#
# Database
#
nice -n 15 /local/mysql-5.0.27/bin/mysqldump -ubackup -pbackup --quick testfest_flyspray | bzip2 > /tmp/testfest-php-net.sql.1.bz2
# create an archive backup?
if [ `date +%d` == "01" ]
then
cp "/tmp/attachments.1.tar.bz2" "${BACKUPPATH}/attachments/archive/attachments-"`date +%m-%d-%Y`".tar.bz2"
cp "/tmp/testfest-php-net.sql.1.bz2" "${BACKUPPATH}/sql/archive/sql-"`date +%m-%d-%Y`".tar.bz2"
fi
# add them to daily.
mv "/tmp/attachments.1.tar.bz2" "${BACKUPPATH}/attachments/daily"
mv "/tmp/testfest-php-net.sql.1.bz2" "${BACKUPPATH}/sql/daily"