-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbackup_ark-server
More file actions
124 lines (104 loc) · 5.44 KB
/
Copy pathbackup_ark-server
File metadata and controls
124 lines (104 loc) · 5.44 KB
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/bin/sh
## This is a script to backup the /app/arkserver/arkgameserver directory for maintenance and DR purposes.
## Execute every x hours thru crontab. Helps save server cluster from corruption, bugs, etc.
##
## TLDR:
## pigz {all-previous-archive-tars}
## tar -cpf /archive/level1/backups/arkserver/arkgameserver_YYYY-MM-DD.X.tar arkgameserver/
##
#set -x
RUNDATE=$(date +%Y-%m-%d)
RUNTIME=$(date +%Y-%m-%d_%H%M)
SOURCEDIR=/app/arkserver/arkgameserver/ShooterGame
TARG_DIR=/archive/level1/backups/arkserver
COUNT=$(ls ${TARG_DIR} | grep -c $(date +%Y-%m-%d'\.'))
VAR_NUM=$(ls ${TARG_DIR} | grep -cv '.gz\|.txt')
FILE_CNT=$((COUNT+1))
FILE_NAME=arkserverdata_${RUNDATE}.${FILE_CNT}.tar
JOB_LOG=/app/arkserver/logs.d/backup_${RUNTIME}.log
#################
fn_debug() {
##-- Used for testing
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | ===================================== " > ${JOB_LOG}
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | Run Date = " "${RUNDATE}" >> ${JOB_LOG}
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | SourceDir = " "${SOURCEDIR}/Saved" >> ${JOB_LOG}
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | Targ File = " "${TARG_DIR}/${FILE_NAME}" >> ${JOB_LOG}
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | Targ. Dir = " "${TARG_DIR}" >> ${JOB_LOG}
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | Count = " "${COUNT}" >> ${JOB_LOG}
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | Var Num = " "${VAR_NUM}" >> ${JOB_LOG}
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | File Count = " "${FILE_CNT}" >> ${JOB_LOG}
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | File NAME = " "${FILE_NAME}" >> ${JOB_LOG}
echo $(date +%Y-%m-%d" "%H:%M:%S)" | DEBUG | ===================================== " >> ${JOB_LOG}
##-- Used for testing
}
#################
#################
fn_findAndDelete() {
## Delete data & files older than x days
#set -x
find ${TARG_DIR} -mtime +15 -name '*.gz' -delete
find ${TARG_DIR} -mtime +15 -name '*.gz' -delete >> ${JOB_LOG}
find ${TARG_DIR} -mtime +15 -name '*.txt' -delete
find ${TARG_DIR} -mtime +15 -name '*.txt' -delete >> ${JOB_LOG}
find ${SOURCEDIR}/Saved/Logs -mtime +15 -name '*.log' -delete
find ${SOURCEDIR}/Saved/Logs -mtime +15 -name '*.log' -delete >> ${JOB_LOG}
find /app/arkserver/logs.d -mtime +15 -name 'backup_*' -delete
find /app/arkserver/logs.d -mtime +15 -name 'backup_*' -delete >> ${JOB_LOG}
}
#################
#################
fn_backup() {
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | Backing up ARK Server... please wait..."
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | Backing up ARK Server... please wait..." >> ${JOB_LOG}
## Exclude following mods to save space & time (we dont need them archived):
## 111111111 = Primitive Plus
## FjordurOfficial = WC Community Fjordur Map (NOT the OG modded map)
## Ragnarok = WC Community Ranarok Map (NOT the OG modded map)
## TheCenter = WC official The Center Map
## Valguero = Map
## LostIsland = Map
tar --exclude="${SOURCEDIR}/Content/Mods/111111111" --exclude="${SOURCEDIR}/Content/Mods/FjordurOfficial" --exclude="${SOURCEDIR}/Content/Mods/Ragnarok" --exclude="${SOURCEDIR}/Content/Mods/TheCenter" --exclude="${SOURCEDIR}/Content/Mods/Valguero" --exclude="${SOURCEDIR}/Content/Mods/LostIsland" -cpf ${TARG_DIR}/"${FILE_NAME}" ${SOURCEDIR}/Content/Mods ${SOURCEDIR}/Saved
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | Backup complete & located at: ${TARG_DIR}/${FILE_NAME}"
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | Backup complete & located at: ${TARG_DIR}/${FILE_NAME}" >> ${JOB_LOG}
}
##################
fn_pigz (){
#set -x
if [ "$VAR_NUM" = 0 ] ; then
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | No Files to gzip, so skipping."
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | No Files to gzip, so skipping." >> ${JOB_LOG}
else
while [ "${VAR_NUM}" -gt 0 ]
do
#GZIP_FILE=$(ls -t ${TARG_DIR}| grep -v gz | tail -n1 | awk '{print $1 }')
GZIP_FILE=$(ls -t ${TARG_DIR}| grep tar | grep -v 'tar.gz' | tail -n50 | awk '{print $1 }')
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | PIGZ operation started for file ${GZIP_FILE}"
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | PIGZ operation started for file ${GZIP_FILE}" >> ${JOB_LOG}
pigz -9 ${TARG_DIR}/"${GZIP_FILE}"
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | PIGZ operation completed for file ${GZIP_FILE}"
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | PIGZ operation completed for file ${GZIP_FILE}" >> ${JOB_LOG}
VAR_NUM=$((VAR_NUM-1))
done
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | PIGZ operation completed for all files in directory."
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | PIGZ operation completed for all files in directory." >> ${JOB_LOG}
fi
#set +x
}
##################
##################
fn_outputDirSize () {
ARCHIVE_UTIL=$(ls -lh ${TARG_DIR} | head -n1 | awk '{print $2}')
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | Archive Size Dir written to temp file"
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | Archive Size Dir written to temp file" >> ${JOB_LOG}
$(touch ${TARG_DIR}/${RUNTIME}_dir_size_is_${ARCHIVE_UTIL}.txt)
}
##################
fn_debug
fn_findAndDelete
fn_pigz
fn_backup
fn_outputDirSize
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | Process complete! Now exiting."
echo $(date +%Y-%m-%d" "%H:%M:%S)" | INFO | Process complete! Now exiting." >> ${JOB_LOG}
sleep 1
## End of script