diff --git a/backup.sh b/backup.sh new file mode 100644 index 0000000..f53a5ed --- /dev/null +++ b/backup.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set -e +source ./.env + +TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S") +echo "(${TIMESTAMP}) Starting backup process" + +echo "1. Stopping containers" +docker compose -f ${FORGEJO_DIR}/docker-compose.yml down + +echo "2. Backing up configuration and forgejo folder" +tar -czvf ${BACKUP_DIR}/forgejo-${TIMESTAMP}.tar.gz -C ${FORGEJO_DIR} forgejo docker-compose.yml + +echo "3. Backing up Postgres database" +DB_CONTAINER=$(docker ps -aqf "name=forgejo-db-1") +docker exec -i ${DB_CONTAINER} pg_dump -U forgejo forgejo > ${BACKUP_DIR}/forgejo-${TIMESTAMP}.sql + +echo "4. Removing old backups" +find ${BACKUP_DIR} -mtime +7 -exec rm -rf {} \; + +echo "5. Upload to remote" +./duplicacy.sh + +echo "6. Restarting containers" +docker compose -f ${FORGEJO_DIR}/docker-compose.yml up -d + +echo "Backup completed!" \ No newline at end of file