Skip to content

Commit f213042

Browse files
committed
feat new get prod db script
1 parent 29b699b commit f213042

File tree

1 file changed

+41
-36
lines changed

1 file changed

+41
-36
lines changed

scripts/get_prod_db.sh

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,13 @@ CONTAINER=gptwrapper_db
44
SERVICE_NAME=db
55
DB_NAME=postgres
66

7-
GPTWRAPPER_FILE_NAME=gptwrapper.sql.gz
8-
9-
SERVER=toska.cs.helsinki.fi
10-
SERVER_PATH=/home/toska_user/most_recent_backup_store/
11-
12-
SERVER_FILE=${SERVER_PATH}${GPTWRAPPER_FILE_NAME}
7+
FOLDER_NAME="gptwrapper"
138

149
PROJECT_ROOT=$(dirname $(dirname $(realpath "$0")))
1510
BACKUPS=$PROJECT_ROOT/backups/
16-
DOCKER_COMPOSE=$PROJECT_ROOT/compose.yaml
17-
18-
USER_DATA_FILE_PATH=$PROJECT_ROOT/scripts/my_username
11+
DOCKER_COMPOSE=$PROJECT_ROOT/docker-compose.yml
1912

20-
username=""
13+
S3_CONF=~/.s3cfg
2114

2215
retry () {
2316
for i in {1..60}
@@ -26,39 +19,51 @@ retry () {
2619
done
2720
}
2821

29-
get_username() {
30-
# Check if username has already been set
31-
[ -z "$username" ]|| return 0
32-
33-
# Check if username is saved to data file and ask it if not
34-
if [ ! -f "$USER_DATA_FILE_PATH" ]; then
35-
echo ""
36-
echo "!! No previous username data found. Will ask it now !!"
37-
echo "Enter your Uni Helsinki username:"
38-
read username
39-
echo $username > $USER_DATA_FILE_PATH
40-
echo "Succesfully saved username"
41-
echo ""
42-
fi
43-
44-
# Set username
45-
username=$(cat $USER_DATA_FILE_PATH | head -n 1)
46-
}
22+
if [ ! -f "$S3_CONF" ]; then
23+
echo ""
24+
echo "!! No config file for s3 bucket !!"
25+
echo "Create file for path ~/.s3cfg and copy the credetials from version.helsinki.fi"
26+
echo ""
27+
return 0
28+
fi
4729

4830
echo "Creating backups folder"
4931
mkdir -p ${BACKUPS}
5032

51-
echo "Fetching a new dump"
52-
get_username
53-
scp -r -o ProxyCommand="ssh -l $username -W %h:%p melkki.cs.helsinki.fi" $username@$SERVER:$SERVER_FILE $BACKUPS
33+
echo "Listing available backups in S3 bucket..."
34+
backup_files=$(s3cmd -c "$S3_CONF" ls "s3://psyduck/${FOLDER_NAME}/" | awk '{print $4}' | grep '\.sql\.gz$')
35+
36+
if [ -z "$backup_files" ]; then
37+
echo "No backup files found in S3 bucket!"
38+
exit 1
39+
fi
40+
41+
echo "Available backups:"
42+
select chosen_backup in $backup_files; do
43+
if [ -n "$chosen_backup" ]; then
44+
echo "You selected: $chosen_backup"
45+
FILE_NAME=$(basename "$chosen_backup")
46+
break
47+
else
48+
echo "Invalid selection. Please select a valid backup number."
49+
fi
50+
done
51+
52+
echo "Fetching the selected dump: $FILE_NAME"
53+
s3cmd -c "$S3_CONF" get "$chosen_backup" "$BACKUPS"
54+
55+
if [ ! -f "${BACKUPS}${FILE_NAME}" ]; then
56+
echo "Download failed or file not found: ${BACKUPS}${FILE_NAME}"
57+
exit 1
58+
fi
5459

5560
echo "Removing database and related volume"
56-
docker compose -f $DOCKER_COMPOSE down -v
61+
docker-compose -f $DOCKER_COMPOSE down -v
5762

5863
echo "Starting postgres in the background"
59-
docker compose -f $DOCKER_COMPOSE up -d $SERVICE_NAME $JAMI_DB
64+
docker-compose -f $DOCKER_COMPOSE up -d $SERVICE_NAME
6065

61-
retry docker compose -f $DOCKER_COMPOSE exec $SERVICE_NAME pg_isready --dbname=$DB_NAME
66+
retry docker-compose -f $DOCKER_COMPOSE exec $SERVICE_NAME pg_isready --dbname=$DB_NAME
6267

63-
echo "Populating Gptwrapper"
64-
docker exec -i $CONTAINER /bin/bash -c "gunzip | psql -U postgres" < ${BACKUPS}${GPTWRAPPER_FILE_NAME}
68+
echo "Populating Lomake"
69+
docker exec -i $CONTAINER /bin/bash -c "gunzip | psql -U postgres" < ${BACKUPS}${FILE_NAME}

0 commit comments

Comments
 (0)