Backup Configuration
There is 2 different backups running on the Docker Server
0 1 * * * /home/ali3nz/docker/backups/dockerbackup.sh >> /home/ali3nz/docker/backups/backup.log 2>&1
The script completes the following actions:
This is the bash script:
#!/bin/bash
#Define the root backup directory
backup_root="/mnt/backupdrive"
echo "$(date +'%Y-%m-%d %H:%M:%S') Starting backup of /home/ali3nz/docker and /var/lib/docker/volumes/demyx/_data to $backup_root"
#Check if the backup directory is mounted and accessible
if ! mountpoint -q "$backup_root"; then
echo "$(date +'%Y-%m-%d %H:%M:%S') Backup drive $backup_root is not mounted. Exiting."
exit 1
fi
#Check available space and clear if necessary
used_space=$(df "$backup_root" | awk 'END{print $(NF-1)}' | sed 's/%//')
if [ $used_space -ge 60 ]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') Backup drive is more than 60% full. Cleaning up..."
find "$backup_root" -mindepth 1 ! -path "$backup_root/kasm*" -exec rm -rf {} +
fi
#Backup /home/ali3nz/docker directory
docker_backup_path="${backup_root}/docker"
mkdir -p "${docker_backup_path}"
tar --xattrs --acls -czf "${docker_backup_path}/docker_$(date +%F).tar.gz" /home/ali3nz/docker/
if [ $? -ne 0 ]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') Failed to backup /home/ali3nz/docker. Please check the directory and permissions."
else
echo "$(date +'%Y-%m-%d %H:%M:%S') Successfully backed up /home/ali3nz/docker to ${docker_backup_path}/docker_$(date +%F).tar.gz"
fi
#Backup /var/lib/docker/volumes/demyx/_data directory
demyx_backup_path="${backup_root}/demyx_data"
mkdir -p "${demyx_backup_path}"
tar --xattrs --acls -czf "${demyx_backup_path}/demyx_data_$(date +%F).tar.gz" /var/lib/docker/volumes/demyx/_data/
if [ $? -ne 0 ]; then
echo "$(date +'%Y-%m-%d %H:%M:%S') Failed to backup /var/lib/docker/volumes/demyx/_data. Please check the directory and permissions."
else
echo "$(date +'%Y-%m-%d %H:%M:%S') Successfully backed up /var/lib/docker/volumes/demyx/_data to ${demyx_backup_path}/demyx_data_$(date +%F).tar.gz"
fi
echo "$(date +'%Y-%m-%d %H:%M:%S') Backup of /home/ali3nz/docker and /var/lib/docker/volumes/demyx/_data completed."
URbackup backs up the entire Backupdrive /mnt/backupdrive to /mnt/docker_backup which is a OneDrive synced directory on the Windows PC 192.168.1.250.
/mnt/backupdrive is an internal 256GB SSD on the same server as the docker host.
Urbackup Client Docker Compose:
services:
urbackup:
image: uroni/urbackup-client:latest
container_name: urbackup-client
user: root
environment:
- TZ=Pacific/Auckland
- URBACKUP_SERVER_NAME=HomeAssistant
- URBACKUP_CLIENT_NAME=aLi3nZ
- URBACKUP_CLIENT_AUTHKEY=redacted
volumes:
- /mnt/backupdrive:/mnt/backupdrive
network_mode: "host"
restart: always
UrBackup Server Docker Compose:
services:
urbackup:
user: root
image: uroni/urbackup-server:latest
container_name: urbackupserver
restart: always
network_mode: host
environment:
- TZ=Pacific/Auckland # Corrected timezone to New Zealand
volumes:
- /mnt/docker_backup:/mnt/docker_backup
//192.168.1.250/docker /mnt/docker_backup cifs credentials=/etc/smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm,_netdev,vers=3.0 0 0
Backup Storage Path: /mnt/docker_backup