87 lines
2.6 KiB
Bash
87 lines
2.6 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Run this script with "(sudo) bash <filename> <args>".
|
||
|
#
|
||
|
# 0 2 * * * bash /root/nextcloud-sync.sh | tee /var/log/nextcloud.log > /dev/null 2>&1
|
||
|
|
||
|
|
||
|
# Exit on error.
|
||
|
#set -eux # debug on
|
||
|
set -e
|
||
|
|
||
|
# Timestamp
|
||
|
DATE_STAMP=$(date '+%s')
|
||
|
|
||
|
############ REMOTE
|
||
|
# Host must have SSH keys setup.
|
||
|
# Must have access to the below paths & access to the database.
|
||
|
SSH_REMOTE_HOST='host'
|
||
|
SSH_REMOTE_USER='root'
|
||
|
|
||
|
# The user to run the _REMOTE_ nextcloud install uses.
|
||
|
# For running commands etc.
|
||
|
NEXTCLOUD_REMOTE_USER='nextcloud'
|
||
|
NEXTCLOUD_REMOTE_DATABASE_NAME='nextcloud'
|
||
|
|
||
|
# Paths.
|
||
|
PHP_REMOTE_BIN='php'
|
||
|
NEXTCLOUD_REMOTE_FILE_DATA='/nextcloud/data'
|
||
|
NEXTCLOUD_REMOTE_FILE_ROOT='/var/www/nextcloud/htdocs'
|
||
|
|
||
|
REMOTE_NC_MAINTENANCE_ON="ssh $SSH_REMOTE_USER@$SSH_REMOTE_HOST sudo -u $NEXTCLOUD_REMOTE_USER $PHP_REMOTE_BIN $NEXTCLOUD_REMOTE_FILE_ROOT/occ maintenance:mode --on"
|
||
|
|
||
|
REMOTE_NC_MAINTENANCE_OFF="ssh $SSH_REMOTE_USER@$SSH_REMOTE_HOST sudo -u $NEXTCLOUD_REMOTE_USER $PHP_REMOTE_BIN $NEXTCLOUD_REMOTE_FILE_ROOT/occ maintenance:mode --off"
|
||
|
|
||
|
REMOTE_DB_CREATE_DUMP="ssh $SSH_REMOTE_USER@$SSH_REMOTE_HOST mysqldump --single-transaction $NEXTCLOUD_REMOTE_DATABASE_NAME > /tmp/nextcloud-$DATE_STAMP.sql"
|
||
|
|
||
|
############ LOCAL
|
||
|
NEXTCLOUD_USER='nextcloud'
|
||
|
NEXTCLOUD_DATABASE_NAME='nextcloud'
|
||
|
|
||
|
# Paths.
|
||
|
PHP_BIN='php'
|
||
|
NEXTCLOUD_FILE_DATA='/nextcloud/data'
|
||
|
NEXTCLOUD_FILE_ROOT='/var/www/nextcloud/htdocs'
|
||
|
|
||
|
NC_MAINTENANCE_ON="sudo -u $NEXTCLOUD_USER $PHP_BIN $NEXTCLOUD_FILE_ROOT/occ maintenance:mode --on"
|
||
|
|
||
|
NC_MAINTENANCE_OFF="sudo -u $NEXTCLOUD_USER $PHP_BIN $NEXTCLOUD_FILE_ROOT/occ maintenance:mode --off"
|
||
|
|
||
|
GET_DB_DUMP_FROM_REMOTE="rsync --progress -Aavx $SSH_REMOTE_USER@$SSH_REMOTE_HOST:/tmp/nextcloud-$DATE_STAMP.sql /tmp/nextcloud-$DATE_STAMP.sql"
|
||
|
|
||
|
GET_DATA_FILES_FROM_REMOTE="rsync --progress -Aavx $SSH_REMOTE_USER@$SSH_REMOTE_HOST:$NEXTCLOUD_REMOTE_FILE_DATA/. $NEXTCLOUD_FILE_DATA"
|
||
|
|
||
|
GET_NC_FILES_FROM_REMOTE="rsync --progress -Aavx $SSH_REMOTE_USER@$SSH_REMOTE_HOST:$NEXTCLOUD_REMOTE_FILE_ROOT/. $NEXTCLOUD_FILE_ROOT"
|
||
|
|
||
|
#########
|
||
|
|
||
|
# Enable remote MAINTENANCE mode.
|
||
|
${REMOTE_NC_MAINTENANCE_ON}
|
||
|
|
||
|
# Make remote dump.
|
||
|
${REMOTE_DB_CREATE_DUMP}
|
||
|
|
||
|
# Enable local MAINTENANCE mode.
|
||
|
${NC_MAINTENANCE_ON}
|
||
|
|
||
|
# Sync nc files.
|
||
|
${GET_NC_FILES_FROM_REMOTE}
|
||
|
|
||
|
# Sync files.
|
||
|
${GET_DATA_FILES_FROM_REMOTE}
|
||
|
|
||
|
# Get database dump.
|
||
|
${GET_DB_DUMP_FROM_REMOTE}
|
||
|
|
||
|
# Disable remote MAINTENANCE mode.
|
||
|
${REMOTE_NC_MAINTENANCE_OFF}
|
||
|
|
||
|
# Restore database dump.
|
||
|
# You can't script this due to the redirection.
|
||
|
mysql $NEXTCLOUD_DATABASE_NAME < /tmp/nextcloud-$DATE_STAMP.sql && rm /tmp/nextcloud-$DATE_STAMP.sql
|
||
|
|
||
|
# Disable local MAINTENANCE mode.
|
||
|
${NC_MAINTENANCE_OFF}
|
||
|
|
||
|
echo "$DATE_STAMP OK" >> /var/log/nc-sync.log
|