Last active
March 19, 2024 13:12
-
-
Save Bouni/3d2f722245b876a00252893c5ff2c35a to your computer and use it in GitHub Desktop.
Transfer Nextcloud data to new server
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
NEW_HOST=new_server | |
TARGET_FOLDER=/opt/docker/cloud/transfer/ | |
MYSQL_USER=nextcloud | |
MYSQL_PW=my_secure_db_pw | |
DATE=`date +"%Y%m%d"` | |
echo Start tranfering Nextcloud data to new host $NEW_HOST | |
echo 1. Set Nextcloud instance into maintenance mode | |
docker exec -u www-data nextcloud php occ maintenance:mode --on | |
echo 2. Wait 6-7 minutes according to https://docs.nextcloud.com/server/latest/admin_manual/maintenance/migrating.html | |
spin='⣾⣽⣻⢿⡿⣟⣯⣷' | |
for i in {1..3600}; do | |
j=$(( (i+1) %8 )) | |
e=$((i/10)) | |
t=360 | |
printf "\r${spin:$j:1} | $e/$t" | |
sleep .1 | |
done | |
echo " " | |
echo 3. Stopping Nextcloud app and Nginx webserver | |
docker stop nextcloud nginx | |
echo 4. Clear tranfer folder | |
rm -rf transfer | |
mkdir transfer | |
echo 5. Backup SQL database | |
docker exec mariadb mysqldump --single-transaction --default-character-set=utf8mb4 -h localhost -u $MYSQL_USER -p$MYSQL_PW nextcloud > transfer/db_dump_nextcloud_$DATE.sql | |
echo 6. Copy DB backup to new host | |
ssh $NEW_HOST mkdir -p $TARGET_FOLDER | |
rsync -Aavxh --progress --stats transfer/db_dump_nextcloud_$DATE.sql $NEW_HOST:$TARGET_FOLDER | |
if [[ $1 != "db-only" ]]; then | |
echo 7. Backup nextcloud data | |
rsync -Aavxht --progress --stats nextcloud/config $NEW_HOST:$TARGET_FOLDER | |
rsync -Aavxht --progress --stats nextcloud/data $NEW_HOST:$TARGET_FOLDER | |
fi | |
echo 8. Start old nextcloud | |
docker start nextcloud nginx | |
echo 9. Disable maintenance mode | |
docker exec -u www-data nextcloud php occ maintenance:mode --off | |
echo 10. Done! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment