mirror of
https://github.com/acedanger/shell.git
synced 2025-12-06 01:10:12 -08:00
93 lines
3.5 KiB
Markdown
93 lines
3.5 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
mkdir -p /mnt/share/media/backups/logs
|
|
```
|
|
|
|
This command ensures that the log directory exists.
|
|
|
|
### 2. Generate Log File
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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.
|