From db16b4cb8d5ee724598311158a4980f6a97f1734 Mon Sep 17 00:00:00 2001 From: home Date: Wed, 3 Jan 2024 20:56:18 +0300 Subject: [PATCH] Backup : Rewrite. --- app/bin/home/backup | 52 ++++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/app/bin/home/backup b/app/bin/home/backup index 62e5e71..08d891d 100755 --- a/app/bin/home/backup +++ b/app/bin/home/backup @@ -1,28 +1,31 @@ #!/bin/bash +# Source modules. for file in /var/roothome/.config/bash/module/*.sh; do source "${file}" done -dow=$(/usr/bin/date +%u) # current day of week number. -date=$(/usr/bin/date +%Y%m%d%H%M) # date stamp. -path_src="/var/mnt/storage/hot" # backup src location. -path_mount="/var/mnt/storage/cold_1" # backup mount location. -path_backup="${path_mount}/backup" # backup dir location. -path_docker="${path_backup}/home" # docker backup location. -path_media="/var/mnt/storage/cold_1/media /var/mnt/storage/cold_2/media" # media paths. +function report() { + echo "${*}" + notify "${*}" +} + +# Define constants. +path_src="/var/mnt/storage/hot" # Backup src location. +path_mount="/var/mnt/storage/cold_1" # Backup mount location. +path_backup="${path_mount}/backup" # Backup dir location. +path_docker="${path_backup}/home" # Docker backup location. +path_media="/var/mnt/storage/cold_1/media /var/mnt/storage/cold_2/media" # Media paths. # Check if backup drive is mounted. if [ ! -f "${path_mount}"/.mount ]; then - echo "Backup : ${path_mount} not mounted!" - notify "Backup : ${path_mount} not mounted!" + report "Backup : ${path_mount} not mounted!" exit 1 fi # Check if hot storage is mounted. if [ ! -f "${path_src}"/.mount ]; then - echo "Backup : ${path_src} not mounted!" - notify "Backup : ${path_src} not mounted!" + report "Backup : ${path_src} not mounted!" exit 1 fi @@ -31,24 +34,35 @@ shopt -s globstar shopt -s dotglob # Cd to src storage. -builtin cd "${path_src}" +cd "${path_src}" # Save media list. -/usr/bin/find ${path_media} -type d > ${path_backup}/media/ColdMedia.txt || notify 'Backup : Failed to save media list!' +find ${path_media} -type d > ${path_backup}/media/ColdMedia.txt || report "Backup : Failed to save media list!" cd ${path_backup}/media/ -archive_fast ColdMedia.txt && rm ColdMedia.txt -archive_prune ColdMedia 1 +archive_fast ColdMedia.txt && rm ColdMedia.txt || report "Backup : Failed to archive media list!" cd - # Backup docker. -rm ${path_docker}/${dow}_*.tgz -archive_fast docker/ -bupsize=$(/usr/bin/du -h Docker_* | awk '{print $1}') -mv Docker_* ${path_docker}/ || notify 'Backup : Failed to save docker!' +docker=$(archive_fast docker/) +bupsize=$(du ${docker} | awk '{print $1}') +mv ${docker} ${path_docker}/ || report "Backup : Failed to save docker!" + +# Prune old Docker copies. cd ${path_docker} archive_prune Docker 7 cd - +# Backup some media. +cd ${path_src}/media/ +paper=$(archive_fast paper/) +mv ${paper} ${path_backup}/media/ || report "Backup : Failed to save paper!" +cd - + +# Prune media copies. +cd ${path_backup}/media/ +archive_prune +cd - + # Sync writes. sync