2024-10-13, 01:11 AM
The way mine works is by writing to a temporary "backup" directory on my NVMe drive. This minimizes down time. Once the backup completes to the NVMe drive I start up my containers and then it starts writing the backup to the hard drive for storage.
I use rsync because it has an option (--delete) to clean up files in the "destination" folder that are no longer present in the "source". This helps prevent the backup from bloating with files that no longer exist.
Update the three path variables at the top with where your files are located.
BACKUPDIR = the temp path you are moving files to. Preferably the path is on a fast SSD.
DOCKERDIR = the root path for where all your docker data is located.
STORAGEDIR = the path for permanent backup storage.
Then I have duplicati running as a service that pushes the storage backup folder to Google Drive.
My containers, not just jellyfin, are down for about 5-7 seconds since rsync essentially does a "diff" backup. The initial backup will take longer.
I use rsync because it has an option (--delete) to clean up files in the "destination" folder that are no longer present in the "source". This helps prevent the backup from bloating with files that no longer exist.
Update the three path variables at the top with where your files are located.
BACKUPDIR = the temp path you are moving files to. Preferably the path is on a fast SSD.
DOCKERDIR = the root path for where all your docker data is located.
STORAGEDIR = the path for permanent backup storage.
Code:
#!/bin/bash
BACKUPDIR=/root/backup
DOCKERDIR=/docker/containers
STORAGEDIR=/media/library/backup
mkdir -p $BACKUPDIR
mkdir -p $BACKUPDIR/docker
cd $DOCKERDIR
docker compose down
rsync -a -p --progress . $BACKUPDIR/docker/ --delete
docker compose up -d
mkdir -p $STORAGEDIR
rsync -a -p --progress $BACKUPDIR/docker $STORAGEDIR --delete
Then I have duplicati running as a service that pushes the storage backup folder to Google Drive.
My containers, not just jellyfin, are down for about 5-7 seconds since rsync essentially does a "diff" backup. The initial backup will take longer.