aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/scripts/backup-inventories.sh
blob: 2187f1fa57cde8532db5ca4da6bc50ce4e0b4b7e (plain)
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
#!/bin/bash

source common.sh
getPrgDir

# Get the database credentials.
declare -A creds
while read -d ';' p; do
  k=$(echo ${p} | cut -d '=' -f 1)
  v=$(echo ${p} | cut -d '=' -f 2)
  creds[${k}]="${v}"
done < <(grep ConnectionString ${PRGDIR}/../config/config.ini | cut -d '"' -f 2)
# The above seems the best way to get bash to let the creds assignments survive outside the loop.

# Only backup those that have not logged on since their last backup, but returning prims from sims will bypass this check.
timestamp=$(ls -o --time-style="+%s" ${PRGDIR}/../../backups/.keep | cut -d ' ' -f 5)
touch ${PRGDIR}/../../backups/.keep
# Well it was good in theory, but looks like they broke it in 8.2, no logging in or out updates to GridUser.

# Get the user names, and back 'em up.
#mysql --host="${creds[Data Source]}" "${creds[Database]}" --user="${creds[User ID]}" --password="${creds[Password]}" \
#  -e "select FirstName,LastName from UserAccounts,GridUser where UserAccounts.PrincipalID=GridUser.UserID and GridUser.Logout>${timestamp};" -ss | while read user; do
mysql --host="${creds[Data Source]}" "${creds[Database]}" --user="${creds[User ID]}" --password="${creds[Password]}" \
  -e "select FirstName,LastName from UserAccounts;" -ss | while read user; do
  # Replace tab with space
  user=${user//	/ }
  # Find out the size of the last backup, base our later sleep on that, but do it now before backup-inventory packs it away.
  sizeSleep=`sleepPerSize i "${user}"`
  ${PRGDIR}/backup-inventory "${user}"
  # Sleep for a while, so that there is plenty of time to do the backup,
  # and we are not keeping the computer very busy if there are lots of users.
  sleep ${sizeSleep}
done