From dddc45fd46bcd03ecc2ddafc009be09ec5ee7a9a Mon Sep 17 00:00:00 2001
From: Jan Mach <jan.mach@cesnet.cz>
Date: Mon, 20 Sep 2021 18:24:31 +0200
Subject: [PATCH] Implemented prototype script for creating snapshots for
 development purposes.

(Redmine issue: #7041)
---
 conf/scripts/devsnapshot.sh | 47 +++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)
 create mode 100755 conf/scripts/devsnapshot.sh

diff --git a/conf/scripts/devsnapshot.sh b/conf/scripts/devsnapshot.sh
new file mode 100755
index 000000000..3d98ebfc0
--- /dev/null
+++ b/conf/scripts/devsnapshot.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+#-------------------------------------------------------------------------------
+# This file is part of Mentat system (https://mentat.cesnet.cz/).
+#
+# Copyright (C) since 2011 CESNET, z.s.p.o (http://www.ces.net/)
+# Use of this source is governed by the MIT license, see LICENSE file.
+#-------------------------------------------------------------------------------
+
+# Check exit status of any command and fail on error
+set -e
+
+# Source global configurations
+. /etc/default/mentat
+
+BACKUP_DIR=/var/mentat/devsnapshot/main
+BACKUP_DATE_FROM=`date --date="8 days ago" --iso-8601=seconds`
+mkdir -p $BACKUP_DIR
+chown mentat:mentat $BACKUP_DIR
+cd $BACKUP_DIR
+sudo -u mentat pg_dump --clean --create --if-exists --format=d --jobs=3 --dbname=mentat_main --username=mentat --no-password --exclude-table=reports_events --exclude-table=statistics_events --exclude-table=changelogs_items --file=$BACKUP_DIR
+for table_name in reports_events statistics_events changelogs_items
+do
+   sudo -u mentat psql mentat_main -c "copy (select * from ${table_name} where createtime >= '${BACKUP_DATE_FROM}'::timestamptz) to stdout" > /var/mentat/devsnapshot/main/${table_name}.dat
+   sudo -u mentat gzip /var/mentat/devsnapshot/main/${table_name}.dat
+done
+
+BACKUP_DIR=/var/mentat/devsnapshot/events
+mkdir -p $BACKUP_DIR
+chown mentat:mentat $BACKUP_DIR
+cd $BACKUP_DIR
+
+sudo -u mentat psql mentat_events -c "copy (select * from events where storagetime >= '${BACKUP_DATE_FROM}'::timestamptz;) to stdout" > /var/mentat/devsnapshot/main/events.dat
+sudo -u mentat gzip /var/mentat/devsnapshot/main/events.dat
+
+sudo -u mentat psql mentat_events -c "copy (select events_json.* from events_json join events on events_json.id = events.id where events.storagetime >= '${BACKUP_DATE_FROM}'::timestamptz;) to stdout" > /var/mentat/devsnapshot/main/events_json.dat
+sudo -u mentat gzip /var/mentat/devsnapshot/main/events_json.dat
+
+sudo -u mentat psql mentat_events -c "copy (select * from events_thresholded join events on events_thresholded.eventid = events.id where events.storagetime >= '${BACKUP_DATE_FROM}'::timestamptz;) to stdout" > /var/mentat/devsnapshot/main/events_thresholded.dat
+sudo -u mentat gzip /var/mentat/devsnapshot/main/events_thresholded.dat
+
+sudo -u mentat psql mentat_events -c "copy (select * from thresholds where thresholdtime >= '${BACKUP_DATE_FROM}'::timestamptz;) to stdout" > /var/mentat/devsnapshot/main/thresholds.dat
+sudo -u mentat gzip /var/mentat/devsnapshot/main/thresholds.dat
+
+cd /var/mentat
+tar -czPf /var/mentat/devsnapshot-${BACKUP_DATE_FROM}.tar.gz /var/mentat/devsnapshot/
+ln -s /var/mentat/devsnapshot-${BACKUP_DATE_FROM}.tar.gz /var/mentat/devsnapshot-latest.tar.gz
+rm -rf /var/mentat/devsnapshot/
-- 
GitLab