OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openproject/packaging/scripts/backup

76 lines
1.7 KiB

#!/bin/bash
set -e
TARGET="/var/db/openproject/backup"
mkdir -p "${TARGET}"
timestamp=$(date +"%Y%m%d%H%M%S")
echo -n "* Generating database backup..." >&2
tmpfile=$(mktemp)
database=$(ruby -ruri -e 'puts URI(ENV["DATABASE_URL"]).path[1..-1]')
ruby -ruri -e '
uri = URI(ENV["DATABASE_URL"])
config=<<CONFIG
[client]
password="#{uri.password}"
user="#{uri.user}"
host="#{uri.host}"
port="#{uri.port}"
CONFIG
puts config' > ${tmpfile}
dst="${TARGET}/mysql-dump-${timestamp}.sql.gz"
10 years ago
touch "$dst" && chmod 0640 "$dst"
mysqldump --defaults-file=${tmpfile} --single-transaction "${database}" | gzip > "$dst"
echo " done" >&2
echo "$dst"
rm -f ${tmpfile}
if [ -d "$SVN_REPOSITORIES" ]; then
dst="${TARGET}/svn-repositories-${timestamp}.tar.gz"
10 years ago
touch "$dst" && chmod 0640 "$dst"
echo -n "* Generating SVN repositories backup..." >&2
if tar czf "$dst" -C "${SVN_REPOSITORIES}" . ; then
echo " done" >&2
echo "$dst"
else
echo " failed" >&2
fi
else
echo "* No SVN repositories folder. Ignoring." >&2
fi
if [ -d "$ATTACHMENTS_STORAGE_PATH" ]; then
dst="${TARGET}/attachments-${timestamp}.tar.gz"
10 years ago
touch "$dst" && chmod 0640 "$dst"
echo -n "* Generating attachments backup..." >&2
if tar czf "$dst" -C "${ATTACHMENTS_STORAGE_PATH}" . ; then
echo " done" >&2
echo "$dst"
else
echo " failed" >&2
fi
else
echo "* No attachments folder. Ignoring." >&2
fi
10 years ago
if [ -d "/etc/openproject/conf.d" ]; then
dst="${TARGET}/conf-${timestamp}.tar.gz"
touch "$dst" && chmod 0640 "$dst"
echo -n "* Saving configuration..." >&2
if tar czf "$dst" -C /etc/openproject/conf.d . ; then
echo " done" >&2
echo "$dst"
else
echo " failed" >&2
fi
else
echo "* no configuration folder. Ignoring." >&2
fi