-
Notifications
You must be signed in to change notification settings - Fork 0
/
create-backup
54 lines (40 loc) · 1.19 KB
/
create-backup
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
#!/bin/sh
cd $(dirname $0)
. ./backup-functions
# params
TARGET=$1
DB_NAME=$2
TARGET_DIR=$3
BACKUP_DIR=$4
MAX_BACKUPS=$5
BACKUP_TMPDIR="$BACKUP_DIR/tmp"
TODAY=$(date +%y%m%d)
BACKUP_EXT="tar.gz"
TARGET_FILE=$TARGET-$TODAY.$BACKUP_EXT
# cleanup backup temp directory
rm -fR "$BACKUP_TMPDIR"
# create subdirs in the backup temp directory
mkdir -p "$BACKUP_TMPDIR/db"
mkdir -p "$BACKUP_TMPDIR/website"
mkdir -p "$BACKUP_TMPDIR/acl"
mkdir -p "$BACKUP_TMPDIR/webserver"
# create DB dump
pg_dump -U backup $DB_NAME > "$BACKUP_TMPDIR/db/$DB_NAME.sql"
# copy website
cp -fR "$TARGET_DIR" "$BACKUP_TMPDIR/website/"
# dump ACLs
ls -lR "$TARGET_DIR" > "$BACKUP_TMPDIR/acl/acl.txt"
# copy webserver configuration
cp -f "/etc/apache2/sites-available/000-default.conf" "$BACKUP_TMPDIR/webserver/"
cp -f "/etc/apache2/mods-available/passenger.conf" "$BACKUP_TMPDIR/webserver/"
# make an archive
tar -czf "$TARGET_FILE" -C "$BACKUP_TMPDIR" ./
md5sum "$TARGET_FILE" > "$TARGET_FILE.md5"
mv -f "$TARGET_FILE" "$BACKUP_DIR"
mv -f "$TARGET_FILE.md5" "$BACKUP_DIR"
# cleanup backup temp directory
rm -fR "$BACKUP_TMPDIR"
ORIGINAL_DIR=$PWD
cd $BACKUP_DIR
remove_old_backups $TARGET $BACKUP_EXT $MAX_BACKUPS
cd $ORIGINAL_DIR