Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/container.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/assets
diff options
context:
space:
mode:
authorSameer Naik <sameer@damagehead.com>2015-12-27 18:38:15 +0300
committerSameer Naik <sameer@damagehead.com>2015-12-29 19:15:06 +0300
commit86018ddeb5f8cd155d4fb4cee322442c47ad8233 (patch)
tree2f52f96d5c5b0696049f67de0ae6a5aaea9d126b /assets
parentadeaf89dc6426d1717dd6ca6659cbd63429d3a10 (diff)
feature: create backup when container is started with `app:backup:create` argument
Diffstat (limited to 'assets')
-rw-r--r--assets/runtime/env-defaults1
-rw-r--r--assets/runtime/functions68
2 files changed, 69 insertions, 0 deletions
diff --git a/assets/runtime/env-defaults b/assets/runtime/env-defaults
index ffcdc92..f30c5fd 100644
--- a/assets/runtime/env-defaults
+++ b/assets/runtime/env-defaults
@@ -6,6 +6,7 @@ DEBUG=${DEBUG:-false}
## CORE
OWNCLOUD_CONFIG_DIR=${OWNCLOUD_CONFIG_DIR:-$OWNCLOUD_DATA_DIR/config}
OWNCLOUD_OCDATA_DIR=${OWNCLOUD_OCDATA_DIR:-$OWNCLOUD_DATA_DIR/ocdata}
+OWNCLOUD_BACKUPS_DIR=${OWNCLOUD_BACKUPS_DIR:-$OWNCLOUD_DATA_DIR/backups}
OWNCLOUD_ADMIN_USER=${OWNCLOUD_ADMIN_USER:-admin}
OWNCLOUD_ADMIN_PASSWORD=${OWNCLOUD_ADMIN_PASSWORD:-password}
diff --git a/assets/runtime/functions b/assets/runtime/functions
index 83f335b..a101c2f 100644
--- a/assets/runtime/functions
+++ b/assets/runtime/functions
@@ -284,6 +284,59 @@ nginx_configure_virtualhost() {
update_template /etc/nginx/sites-enabled/${OWNCLOUD_FQDN}.conf OWNCLOUD_FQDN
}
+backup_dump_database() {
+ owncloud_finalize_database_parameters
+ case ${DB_TYPE} in
+ pgsql)
+ echo -n "Dumping PostgreSQL database ${DB_NAME}"
+ owncloud_check_database_connection
+ exec_as_owncloud PGPASSWORD=${DB_PASS} pg_dump --clean \
+ --host ${DB_HOST} --port ${DB_PORT} \
+ --username ${DB_USER} ${DB_NAME} | \
+ gzip > ${OWNCLOUD_BACKUPS_DIR}/database.sql.gz
+ ;;
+ mysql)
+ echo -n "Dumping MySQL database ${DB_NAME}"
+ owncloud_check_database_connection
+ exec_as_owncloud MYSQL_PWD=${DB_PASS} mysqldump --lock-tables --add-drop-table \
+ --host ${DB_HOST} --port ${DB_PORT} \
+ --user ${DB_USER} ${DB_NAME} | \
+ gzip > ${OWNCLOUD_BACKUPS_DIR}/database.sql.gz
+ ;;
+ esac
+ chown ${OWNCLOUD_USER}:${OWNCLOUD_USER} ${OWNCLOUD_BACKUPS_DIR}/database.sql.gz
+}
+
+backup_dump_directory() {
+ local directory=${1}
+ local dirname=$(basename ${directory})
+
+ echo "Dumping ${dirname}..."
+ exec_as_owncloud tar -jcf ${OWNCLOUD_BACKUPS_DIR}/${dirname}.tar.gz -C ${directory} .
+}
+
+backup_dump_information() {
+ (
+ echo "info:"
+ echo " owncloud_version: ${OWNCLOUD_VERSION}"
+ echo " database_adapter: $(owncloud_get_param dbtype)"
+ echo " created_at: $(date)"
+ ) > ${OWNCLOUD_BACKUPS_DIR}/backup_information.yml
+ chown ${OWNCLOUD_USER}:${OWNCLOUD_USER} ${OWNCLOUD_BACKUPS_DIR}/backup_information.yml
+}
+
+backup_create_archive() {
+ local tar_file="$(date +%s)_owncloud_backup.tar"
+
+ echo "Creating backup archive: ${tar_file}..."
+ exec_as_owncloud tar -cf ${OWNCLOUD_BACKUPS_DIR}/${tar_file} -C ${OWNCLOUD_BACKUPS_DIR} $@
+
+ for f in $@
+ do
+ exec_as_owncloud rm -rf ${OWNCLOUD_BACKUPS_DIR}/${f}
+ done
+}
+
install_configuration_templates() {
echo "Installing configuration templates..."
# on firstrun, install autoconfig.php
@@ -303,14 +356,21 @@ initialize_datadir() {
chmod 0755 ${OWNCLOUD_DATA_DIR}
chown ${OWNCLOUD_USER}:${OWNCLOUD_USER} ${OWNCLOUD_DATA_DIR}
+ # create ocdata directory
mkdir -p ${OWNCLOUD_OCDATA_DIR}
chown -R ${OWNCLOUD_USER}:${OWNCLOUD_USER} ${OWNCLOUD_OCDATA_DIR}
chmod -R 0750 ${OWNCLOUD_OCDATA_DIR}
+ # create config directory
mkdir -p ${OWNCLOUD_CONFIG_DIR}
chown -R ${OWNCLOUD_USER}:${OWNCLOUD_USER} ${OWNCLOUD_CONFIG_DIR}
chmod -R 0750 ${OWNCLOUD_CONFIG_DIR}
+ # create backups directory
+ mkdir -p ${OWNCLOUD_BACKUPS_DIR}
+ chmod -R 0755 ${OWNCLOUD_BACKUPS_DIR}
+ chown -R ${OWNCLOUD_USER}:${OWNCLOUD_USER} ${OWNCLOUD_BACKUPS_DIR}
+
# symlink to config/config.php -> ${OWNCLOUD_CONFIG_DIR}/config.php
ln -sf ${OWNCLOUD_CONFIG_DIR}/config.php ${OWNCLOUD_INSTALL_DIR}/config/config.php
}
@@ -333,3 +393,11 @@ configure_nginx() {
echo "Configuring nginx..."
nginx_configure_virtualhost
}
+
+backup_create() {
+ backup_dump_database
+ backup_dump_directory ${OWNCLOUD_CONFIG_DIR}
+ backup_dump_directory ${OWNCLOUD_OCDATA_DIR}
+ backup_dump_information
+ backup_create_archive backup_information.yml database.sql.gz config.tar.gz ocdata.tar.gz
+}