Backup Mattermost

It's convenient that omnibus-gitlab provides Mattermost included but as far as I know omnibus-gitlab does not offer a simple way to perform a MM backup.

Here is the hack I use currently, built from parts of the non-trival gitlab-psql command:

root@gitlab:~# cat scripts/backup_mattermost.sh
#!/bin/bash

set -e
set -u
set -o pipefail

timestamp=$(date +%Y%m%d%H%M%S)

for f in $(ls -1t /var/archives/mattermost/*.gz | tail -n +10); do
    rm -f "$f"
done

error_echo()
{
  echo "$1" 2>& 1
}

gitlab_psql_rc='/opt/gitlab/etc/gitlab-psql-rc'


if ! [ -f ${gitlab_psql_rc} ] ; then
  error_echo "$0 error: could not load ${gitlab_psql_rc}"
  error_echo "Either you are not allowed to read the file, or it does not exist yet."
  error_echo "You can generate it with:   sudo gitlab-ctl reconfigure"
  exit 1
fi

. ${gitlab_psql_rc}

if [ "$(id -n -u)" = "${psql_user}" ] ; then
  privilege_drop=''
else
  privilege_drop="-u ${psql_user}"
fi

cd /tmp
exec /opt/gitlab/embedded/bin/chpst ${privilege_drop} -U ${psql_user} /opt/gitlab/embedded/bin/pg_dump -p ${psql_port} -h ${psql_host} --clean mattermost_production | gzip > /var/archives/mattermost/${timestamp}_mattermost.sql.gz
tar cz -C /var/opt/gitlab/mattermost -f /var/archives/mattermost/${timestamp}_mattermost_data.tar.gz data
Edited by Loic Nageleisen