Skip to content

Instantly share code, notes, and snippets.

@sasajib
Forked from Meldiron/backup.sh
Created August 15, 2024 13:42
Show Gist options
  • Save sasajib/8a62769732a1b5b68e4f3509927ced22 to your computer and use it in GitHub Desktop.
Save sasajib/8a62769732a1b5b68e4f3509927ced22 to your computer and use it in GitHub Desktop.
Backup and Restore Appwrite, the lazy way 🐌
# Make sure to stop Appwrite before this backup, and make sure you have enough space on the machine
docker run --rm \
-v appwrite_appwrite-mariadb:/backup/appwrite-mariadb \
-v appwrite_appwrite-redis:/backup/appwrite-redis \
-v appwrite_appwrite-cache:/backup/appwrite-cache \
-v appwrite_appwrite-uploads:/backup/appwrite-uploads \
-v appwrite_appwrite-certificates:/backup/appwrite-certificates \
-v appwrite_appwrite-functions:/backup/appwrite-functions \
-v appwrite_appwrite-influxdb:/backup/appwrite-influxdb \
-v appwrite_appwrite-config:/backup/appwrite-config \
-v $(pwd)/backups:/archive \
--env BACKUP_FILENAME="backup-%Y-%m-%dT%H-%M-%S.tar.gz" \
--entrypoint backup \
offen/docker-volume-backup:latest
# Makre sure the Appwrite did NOT run on this server, and make sure to stop it before this restore. If appwrite ran here already, make sure to stop Appwrite with 'docker-compose down -v'.
# Before running, be in any directory, but make sure `backup.tar.gz` file with your backup is in there
# After restore, make sure to also copy 'docker-compose.yml' and '.env' from the previous server.
# Untar backup
tar -C /tmp -xvf backup.tar.gz
# Restore mariadb
docker run -d --name temp_restore_container -v appwrite_appwrite-mariadb:/backup_restore alpine
docker cp /tmp/backup/appwrite-mariadb temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Restore redis
docker run -d --name temp_restore_container -v appwrite_appwrite-redis:/backup_restore alpine
docker cp /tmp/backup/appwrite-redis temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Restore cache
docker run -d --name temp_restore_container -v appwrite_appwrite-cache:/backup_restore alpine
docker cp /tmp/backup/appwrite-cache temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Restore uploads
docker run -d --name temp_restore_container -v appwrite_appwrite-uploads:/backup_restore alpine
docker cp /tmp/backup/appwrite-uploads temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Restore certificates
docker run -d --name temp_restore_container -v appwrite_appwrite-certificates:/backup_restore alpine
docker cp /tmp/backup/appwrite-certificates temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Restore functions
docker run -d --name temp_restore_container -v appwrite_appwrite-functions:/backup_restore alpine
docker cp /tmp/backup/appwrite-functions temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Restore influxdb
docker run -d --name temp_restore_container -v appwrite_appwrite-influxdb:/backup_restore alpine
docker cp /tmp/backup/appwrite-influxdb temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Restore config
docker run -d --name temp_restore_container -v appwrite_appwrite-config:/backup_restore alpine
docker cp /tmp/backup/appwrite-config temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment