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 appwrite_appwrite-builds:/backup/appwrite-builds \
-v $(pwd)/.env:/backup/appwrite/.env \
-v $(pwd)/docker-compose.yml:/backup/appwrite/docker-compose.yml \
-v $(pwd)/backups:/archive \
--env BACKUP_FILENAME="appwrite-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 previously,
# 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.
# Backup script puts date in the file name, make sure to
# rename file to exactly 'backup.tar.gz'.
# After restore, you can enter appwite folder 'cd appwrite'
# and start Appwrite with 'docker-compose up -d'.
# Untar backup
tar -C /tmp -xvf appwrite-backup.tar.gz
# Restore mariadb
docker run -d --name temp_restore_container -v appwrite_appwrite-mariadb:/backup_restore/appwrite-mariadb alpine
docker cp /tmp/appwrite-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/appwrite-redis alpine
docker cp /tmp/appwrite-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/appwrite-cache alpine
docker cp /tmp/appwrite-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/appwrite-uploads alpine
docker cp /tmp/appwrite-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/appwrite-certificates alpine
docker cp /tmp/appwrite-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/appwrite-functions alpine
docker cp /tmp/appwrite-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/appwrite-influxdb alpine
docker cp /tmp/appwrite-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/appwrite-config alpine
docker cp /tmp/appwrite-backup/appwrite-config temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Restore builds
docker run -d --name temp_restore_container -v appwrite_appwrite-builds:/backup_restore/appwrite-builds alpine
docker cp /tmp/appwrite-backup/appwrite-builds temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Restore env
mkdir -p appwrite
docker run -d --name temp_restore_container -v $(pwd)/appwrite:/backup_restore/appwrite alpine
docker cp /tmp/appwrite-backup/appwrite temp_restore_container:/backup_restore
docker stop temp_restore_container
docker rm temp_restore_container
# Remove temporary files
rm -rf /tmp/appwrite-backup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment