feat: Cleanup and updates readme.

This commit is contained in:
2025-04-17 12:24:00 -04:00
parent dc2137bafe
commit ff4a9a14e7
2 changed files with 52 additions and 17 deletions

View File

@@ -1,13 +1,52 @@
# backup
A script template to backup docker volumes on the servers.
A script to backup docker volumes and stack configuration on the servers.
## Usage
## What it does
1. Stops all docker services located in `/etc/komodo/stacks`
1. Generates a temporary directory.
1. Copies all stack configuration to temporary directory.
1. Copies all docker volumes `/var/lib/docker/volumes` to temporary directory.
1. Copies all data in `/opt` (where host bind mounts should be) to temporary directory.
1. Compresses the temporary directory.
1. Copies the result to the `/backups` folder.
1. Cleans up / removes temporary directory that was created.
1. Restarts all the services.
## Setup
Before using the backup script, you must mount a network share for backups to be
stored in. This is done by editing the `/etc/fstab` file, and adding the
following line.
```bash
//<nas_ip>/docker/backups/<machine> /backups cifs credentials=/home/michael/smbcredentials,uid=0,gid=0 0 0
```
Once that is done:
1. Generate the `/backups` directory `sudo mkdir /backups`
1. Reload the daemon `sudo systemctl daemon-reload`
1. Mount the folder `sudo mount -a`
### Systemd Setup
Setup the systemd service and timer, so that backups are ran once a day @ 3 a.m.
```bash
cd /etc/systemd/system
sudo wget https://git.housh.dev/homelab/backup/raw/branch/main/backup.service
sudo wget https://git.housh.dev/homelab/backup/raw/branch/main/backup.timer
sudo systemctl daemon-reload
sudo systemctl start backup.timer
sudo systemctl start backup.service
```
### Setup the backup script
1. Download the script `wget https://git.housh.dev/homelab/backup/raw/branch/main/docker-backup.sh`
1. Edit the script to include services that need to be shut down, prior to
backup.
1. Add any extra volumes to backup.
1. Make script executable `chmod +x docker-backup.sh`
1. Run the script `sudo ./docker-backup.sh`
1. Manually run the script `sudo ./docker-backup.sh`

View File

@@ -1,18 +1,14 @@
#!/bin/bash
today=$(date +'%F')
volumesdir="/var/lib/docker/volumes"
stackdir="/etc/komodo/stacks"
backupdir="/backups"
# Add services here to stop and backup.
services=(
"$stackdir/caddy_housh_dev"
)
services=($(find "$stackdir" -maxdepth 1 -mindepth 1 -type d))
# Add volumes here to backup.
volumes=(
"$volumesdir"
"/var/lib/docker/volumes"
"/opt"
)
function stopServices() {
@@ -49,11 +45,11 @@ function copyVolumes() {
function backup() {
echo "Creating backup..."
tar -cvf "/tmp/$today.tar" "$1"
gzip "/tmp/$today.tar"
cp -R "/tmp/$today.tar.gz" "$backupdir"
tar -cvf "/$today.tar" "$1"
gzip "/$today.tar"
cp -R "/$today.tar.gz" "$backupdir"
# Cleanup temporary files.
rm -rf "$temp" "/tmp/$today.tar" "/tmp/$today.tar.gz"
rm -rf "$1" "/$today.tar" "/$today.tar.gz"
}
function main() {