Files
backup/README.md

77 lines
2.3 KiB
Markdown

# backup
A script to backup docker volumes and stack configuration on the servers.
## 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`
### Automated Installation Script
This repository has an automated installation script that can be ran.
```bash
sudo su -c "bash <(wget -qO- https://git.housh.dev/homelab/backup/raw/branch/main/install.sh)" root
```
## Manual Installation
See [installation
script](https://git.housh.dev/homelab/backup/src/branch/main/install.sh).
### Setup the backup script
```bash
sudo wget "https://git.housh.dev/homelab/backup/raw/branch/main/docker-backup.sh" -O /usr/local/bin/docker-backup
sudo chmod +x /usr/local/bin/docker-backup
```
### 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
```
## Restore
This repository also contains a restore script that can restore the stacks and
volumes from a backup (hopefully it's never needed!).
### Usage
1. Download the script `wget https://git.housh.dev/homelab/backup/raw/branch/main/docker-restore.sh`
1. Make script executable `chmod +x docker-restore.sh`
1. Run the script `sudo ./docker-restore.sh /backups/<backup>.tar.gz`