-
Notifications
You must be signed in to change notification settings - Fork 30
/
30backups.sh
64 lines (52 loc) · 1.52 KB
/
30backups.sh
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
#!/bin/bash
# 30backups.sh - Creates and keeps the latest 30 web and SQL backups
# phxbandit
# Number of backups
num=30
thedate="$(date +'%Y%m%dT%H%M')"
# Define web resources
websrc="/root/webdumps/"
webdest="/media/disk/webdumps"
webname="webdump-$thedate.tar.gz"
# Define SQL resources
sqlsrc="/root/sqldumps/"
sqldest="/media/disk/sqldumps"
sqlname="sqldump-$thedate.sql"
# Create snapshots
tarit() {
#printf "\nCreating web and SQL backups...\n\n"
cd /var/www/ && tar czf "$websrc$webname" html
mysqldump -u root --all-databases > "$sqlsrc$sqlname" && gzip "$sqlsrc$sqlname"
}
# Remove backups past $num
purge() {
curweb=$(ls -1Atr "$websrc" | wc -l)
if [ "$curweb" -gt "$num" ]; then
numdelweb=$(($curweb-$num))
for i in $(ls -1Atr "$websrc" | head -$numdelweb); do
#echo "Removing $websrc/$i"
rm -f "$websrc/$i"
done
fi
cursql=$(ls -1Atr "$sqlsrc" | wc -l)
if [ "$cursql" -gt "$num" ]; then
numdelsql=$(($cursql-$num))
for j in $(ls -1Atr "$sqlsrc" | head -$numdelsql); do
#echo "Removing $sqlsrc/$j"
rm -f "$sqlsrc/$j"
done
fi
}
# Rsync content
syncit() {
#printf "\nSyncing web content...\n\n"
#rsync -av --delete --exclude=".*" "$websrc" "$webdest"
rsync -av --exclude=".*" "$websrc" "$webdest"
#printf "\nSyncing SQL dumps...\n\n"
#rsync -av --delete --exclude=".*" "$sqlsrc" "$sqldest"
rsync -av --exclude=".*" "$sqlsrc" "$sqldest"
}
tarit
purge
syncit
#printf "\nDone\n\n"