Files
shell/docs/backup-media.md
2025-05-29 11:25:02 -04:00

3.5 KiB

Backup Media Script Documentation

This document provides an overview of the backup-media.sh script, which is used to back up media-related databases and configurations from various Docker containers.

Script Overview

The script performs the following tasks:

  1. Creates a log directory if it doesn't exist.
  2. Generates a log file with the current date and time.
  3. Defines a function to log file details.
  4. Copies backup files from specified Docker containers to a backup directory.
  5. Logs the details of each copied file.
  6. Sends a notification upon completion.

Detailed Steps

1. Create Log Directory

mkdir -p /mnt/share/media/backups/logs

This command ensures that the log directory exists.

2. Generate Log File

LOG_FILE="/mnt/share/media/backups/logs/backup_log_$(date +%Y%m%d_%H%M%S).md"

A log file is created with a timestamp in its name.

3. Log File Details Function

log_file_details() {
    local src=$1
    local dest=$2
    local size=$(du -sh "$dest" | cut -f1)
    echo "Source: $src" >> "$LOG_FILE"
    echo "Destination: $dest" >> "$LOG_FILE"
    echo "Size: $size" >> "$LOG_FILE"
}

This function logs the source, destination, and size of each backed-up file.

4. Copy Backup Files and Log Details

The script copies backup files from various Docker containers and logs the details using the log_file_details function. Here are the examples for all services:

docker cp sonarr:/config/Backups/scheduled /mnt/share/media/backups/sonarr/
log_file_details "sonarr:/config/Backups/scheduled" "/mnt/share/media/backups/sonarr/"

docker cp radarr:/config/Backups/scheduled /mnt/share/media/backups/radarr/
log_file_details "radarr:/config/Backups/scheduled" "/mnt/share/media/backups/radarr/"

docker cp prowlarr:/config/Backups/scheduled /mnt/share/media/backups/prowlarr/
log_file_details "prowlarr:/config/Backups/scheduled" "/mnt/share/media/backups/prowlarr/"

docker cp audiobookshelf:/metadata/backups /mnt/share/media/backups/audiobookshelf/
log_file_details "audiobookshelf:/metadata/backups" "/mnt/share/media/backups/audiobookshelf/"

docker cp tautulli:/config/backups /mnt/share/media/backups/tautulli/
log_file_details "tautulli:/config/backups" "/mnt/share/media/backups/tautulli/"

docker cp sabnzbd:/config/sabnzbd.ini /mnt/share/media/backups/sabnzbd/sabnzbd_$(date +%Y%m%d).ini
log_file_details "sabnzbd:/config/sabnzbd.ini" "/mnt/share/media/backups/sabnzbd/sabnzbd_$(date +%Y%m%d).ini"

mkdir -p /mnt/share/media/backups/jellyseerr/backup_$(date +%Y%m%d)
docker cp jellyseerr:/config/db/ /mnt/share/media/backups/jellyseerr/backup_$(date +%Y%m%d)/
log_file_details "jellyseerr:/config/db/" "/mnt/share/media/backups/jellyseerr/backup_$(date +%Y%m%d)/"

docker cp jellyseerr:/config/settings.json /mnt/share/media/backups/jellyseerr/backup_$(date +%Y%m%d)/
log_file_details "jellyseerr:/config/settings.json" "/mnt/share/media/backups/jellyseerr/backup_$(date +%Y%m%d)/"

5. Send Notification

curl \
    -H tags:popcorn,backup,sonarr,radarr,prowlarr,sabnzbd,audiobookshelf,tautulli,jellyseerr,${HOSTNAME} \
    -d "A backup of media-related databases has been saved to the /media/backups folder" \
    https://notify.peterwood.rocks/lab

A notification is sent upon completion of the backup process.

Conclusion

The backup-media.sh script automates the process of backing up media-related databases and configurations from Docker containers, logging the details, and sending a notification upon completion.