From 26595574b52f144f03084668b84c6ec2b0896315 Mon Sep 17 00:00:00 2001 From: "Dejan R." Date: Tue, 25 Nov 2025 07:03:31 +0000 Subject: [PATCH] added TEXT to readme file, and remove old readme --- README.md | 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ readme.md | 155 ------------------------------------------------------ 2 files changed, 155 insertions(+), 155 deletions(-) delete mode 100644 readme.md diff --git a/README.md b/README.md index e69de29..e86a79e 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,155 @@ +# Forgejo Backup & Restore Scripts + +Automated backup and restore scripts for Forgejo Docker installations with safety features and cleanup. + +## Features + +- **Automated backups** with timestamps +- **Consistent snapshots** (stops containers during backup) +- **Safety-first restore** (creates pre-restore backup) +- **Automatic cleanup** (keeps last 7 backups) +- **Flexible restore** (latest or specific backup file) + +## Prerequisites + +- Docker and Docker Compose installed +- Forgejo running via `docker-compose.yml` +- Bash shell environment + +## Installation + +1. Save both scripts in your Forgejo project root directory +2. Make them executable: + +```bash +chmod +x backup.sh restore.sh +``` + +## Backup Script + +### Usage + +```bash +./backup.sh +``` + +### What it does + +1. Stops Forgejo containers (brief downtime) +2. Creates compressed archive of: + - `forgejo/` directory (data) + - `docker-compose.yml` + - `.gitignore` + - `README.md` + - `.git/` (optional, errors ignored) +3. Restarts Forgejo containers +4. Removes backups older than the last 7 + +### Backup location + +Backups are saved to `backup/forgejo-backup-YYYY-MM-DD_HH-MM-SS.tar.gz` + +### Automation + +Add to crontab for automatic backups: + +```bash +# Daily backup at 2 AM +0 2 * * * /path/to/forgejo/backup.sh >> /path/to/forgejo/backup/backup.log 2>&1 +``` + +## Restore Script + +### Usage + +```bash +# Restore from latest backup +./restore.sh + +# Restore from specific backup file +./restore.sh forgejo-backup-2025-01-15_14-30-00.tar.gz + +# Restore from full path +./restore.sh /path/to/backup/forgejo-backup-2025-01-15_14-30-00.tar.gz +``` + +### What it does + +1. Prompts for confirmation (destructive operation) +2. Stops Forgejo containers +3. Creates safety backup of current state +4. Moves current data to `forgejo.old-TIMESTAMP` +5. Extracts selected backup +6. Restarts Forgejo containers + +### Safety features + +- **Interactive confirmation** required +- **Pre-restore backup** created automatically +- **Current data preserved** as `forgejo.old-TIMESTAMP` +- **Config files backed up** as `*.old-TIMESTAMP` + +## File Structure + +``` +forgejo-project/ +├── backup.sh # Backup script +├── restore.sh # Restore script +├── docker-compose.yml +├── forgejo/ # Forgejo data directory +└── backup/ # Backup storage (auto-created) + ├── forgejo-backup-2025-11-25_10-00-00.tar.gz + ├── forgejo-backup-2025-11-24_10-00-00.tar.gz + └── forgejo-pre-restore-2025-11-25_11-30-00.tar.gz +``` + +## Important Notes + +- **Downtime**: Brief downtime occurs during backup/restore operations +- **Disk space**: Backups can be large; monitor available space +- **Testing**: Test restore procedure before relying on backups +- **Permissions**: Scripts must be run from Forgejo project root + +## Recovery Example + +If you need to recover from a failed restore: + +```bash +# Stop containers +docker compose down + +# Restore the pre-restore backup +./restore.sh forgejo-pre-restore-YYYY-MM-DD_HH-MM-SS.tar.gz + +# Or manually restore old directory +rm -rf forgejo +mv forgejo.old-TIMESTAMP forgejo +docker compose up -d +``` + +## Troubleshooting + +### "No backups found" +- Check that `backup/` directory exists and contains `*.tar.gz` files +- Run `backup.sh` first to create a backup + +### "Permission denied" +- Ensure scripts are executable: `chmod +x backup.sh restore.sh` +- Check Docker permissions for your user + +### "tar: Removing leading `/` from member names" +- This is normal behavior when using absolute paths +- The warning can be safely ignored + +## License + +MIT License - feel free to modify and use as needed. + +## Contributing + +Improvements welcome! Consider adding: +- Remote backup support (rsync, S3, etc.) +- Encryption for sensitive data +- Email notifications +- Database-only backups for faster operations +- Backup verification tests diff --git a/readme.md b/readme.md deleted file mode 100644 index e86a79e..0000000 --- a/readme.md +++ /dev/null @@ -1,155 +0,0 @@ -# Forgejo Backup & Restore Scripts - -Automated backup and restore scripts for Forgejo Docker installations with safety features and cleanup. - -## Features - -- **Automated backups** with timestamps -- **Consistent snapshots** (stops containers during backup) -- **Safety-first restore** (creates pre-restore backup) -- **Automatic cleanup** (keeps last 7 backups) -- **Flexible restore** (latest or specific backup file) - -## Prerequisites - -- Docker and Docker Compose installed -- Forgejo running via `docker-compose.yml` -- Bash shell environment - -## Installation - -1. Save both scripts in your Forgejo project root directory -2. Make them executable: - -```bash -chmod +x backup.sh restore.sh -``` - -## Backup Script - -### Usage - -```bash -./backup.sh -``` - -### What it does - -1. Stops Forgejo containers (brief downtime) -2. Creates compressed archive of: - - `forgejo/` directory (data) - - `docker-compose.yml` - - `.gitignore` - - `README.md` - - `.git/` (optional, errors ignored) -3. Restarts Forgejo containers -4. Removes backups older than the last 7 - -### Backup location - -Backups are saved to `backup/forgejo-backup-YYYY-MM-DD_HH-MM-SS.tar.gz` - -### Automation - -Add to crontab for automatic backups: - -```bash -# Daily backup at 2 AM -0 2 * * * /path/to/forgejo/backup.sh >> /path/to/forgejo/backup/backup.log 2>&1 -``` - -## Restore Script - -### Usage - -```bash -# Restore from latest backup -./restore.sh - -# Restore from specific backup file -./restore.sh forgejo-backup-2025-01-15_14-30-00.tar.gz - -# Restore from full path -./restore.sh /path/to/backup/forgejo-backup-2025-01-15_14-30-00.tar.gz -``` - -### What it does - -1. Prompts for confirmation (destructive operation) -2. Stops Forgejo containers -3. Creates safety backup of current state -4. Moves current data to `forgejo.old-TIMESTAMP` -5. Extracts selected backup -6. Restarts Forgejo containers - -### Safety features - -- **Interactive confirmation** required -- **Pre-restore backup** created automatically -- **Current data preserved** as `forgejo.old-TIMESTAMP` -- **Config files backed up** as `*.old-TIMESTAMP` - -## File Structure - -``` -forgejo-project/ -├── backup.sh # Backup script -├── restore.sh # Restore script -├── docker-compose.yml -├── forgejo/ # Forgejo data directory -└── backup/ # Backup storage (auto-created) - ├── forgejo-backup-2025-11-25_10-00-00.tar.gz - ├── forgejo-backup-2025-11-24_10-00-00.tar.gz - └── forgejo-pre-restore-2025-11-25_11-30-00.tar.gz -``` - -## Important Notes - -- **Downtime**: Brief downtime occurs during backup/restore operations -- **Disk space**: Backups can be large; monitor available space -- **Testing**: Test restore procedure before relying on backups -- **Permissions**: Scripts must be run from Forgejo project root - -## Recovery Example - -If you need to recover from a failed restore: - -```bash -# Stop containers -docker compose down - -# Restore the pre-restore backup -./restore.sh forgejo-pre-restore-YYYY-MM-DD_HH-MM-SS.tar.gz - -# Or manually restore old directory -rm -rf forgejo -mv forgejo.old-TIMESTAMP forgejo -docker compose up -d -``` - -## Troubleshooting - -### "No backups found" -- Check that `backup/` directory exists and contains `*.tar.gz` files -- Run `backup.sh` first to create a backup - -### "Permission denied" -- Ensure scripts are executable: `chmod +x backup.sh restore.sh` -- Check Docker permissions for your user - -### "tar: Removing leading `/` from member names" -- This is normal behavior when using absolute paths -- The warning can be safely ignored - -## License - -MIT License - feel free to modify and use as needed. - -## Contributing - -Improvements welcome! Consider adding: -- Remote backup support (rsync, S3, etc.) -- Encryption for sensitive data -- Email notifications -- Database-only backups for faster operations -- Backup verification tests