This repository has been archived on 2024-03-04. You can view files and clone it, but cannot push or open issues or pull requests.
linux/app/bin/home/Backup

77 lines
1.6 KiB
Plaintext
Raw Permalink Normal View History

2024-01-25 21:35:46 +03:00
#!/usr/bin/env bash
2023-08-08 16:24:15 +03:00
2024-01-03 20:56:18 +03:00
# Source modules.
2024-02-27 14:00:06 +03:00
for file in /etc/bash/module/*.sh; do
2024-01-03 18:39:38 +03:00
source "${file}"
done
2023-08-08 16:24:15 +03:00
2024-01-03 20:56:18 +03:00
function report() {
echo "${*}"
notify "${*}"
}
# Define constants.
2024-01-25 21:53:20 +03:00
path_src="/storage/hot"
path_mount="/storage/cold_1"
path_backup="${path_mount}/backup"
path_docker="${path_backup}/home"
path_media="/storage/cold_1/media /storage/cold_2/media"
2023-12-11 16:56:09 +03:00
# Check if backup drive is mounted.
if [ ! -f "${path_mount}"/.mount ]; then
2024-01-03 20:56:18 +03:00
report "Backup : ${path_mount} not mounted!"
exit 1
2023-08-08 16:24:15 +03:00
fi
2023-12-11 16:56:09 +03:00
# Check if hot storage is mounted.
if [ ! -f "${path_src}"/.mount ]; then
2024-01-03 20:56:18 +03:00
report "Backup : ${path_src} not mounted!"
exit 1
2023-08-08 16:24:15 +03:00
fi
2023-12-11 16:56:09 +03:00
# Cd to src storage.
2024-01-03 20:56:18 +03:00
cd "${path_src}"
2023-08-08 16:24:15 +03:00
2023-12-11 16:56:09 +03:00
# Save media list.
2024-01-13 02:16:38 +03:00
find ${path_media} -type d > ${path_backup}/cold/ColdMedia.txt || report "Backup : Failed to save media list!"
cd ${path_backup}/cold/
2024-01-03 20:56:18 +03:00
archive_fast ColdMedia.txt && rm ColdMedia.txt || report "Backup : Failed to archive media list!"
2024-01-03 18:39:38 +03:00
cd -
2023-08-08 16:24:15 +03:00
2023-12-11 16:56:09 +03:00
# Backup docker.
2024-01-03 20:56:18 +03:00
docker=$(archive_fast docker/)
2024-02-27 13:58:32 +03:00
bupsize=$(tdu ${docker} | awk '{print $1}')
2024-01-03 20:56:18 +03:00
mv ${docker} ${path_docker}/ || report "Backup : Failed to save docker!"
# Backup some media.
cd ${path_src}/media/
paper=$(archive_fast paper/)
2024-01-13 02:16:38 +03:00
mv ${paper} ${path_backup}/paper/ || report "Backup : Failed to save paper!"
2024-01-03 20:56:18 +03:00
cd -
# Prune media copies.
2024-01-13 02:16:38 +03:00
cd ${path_backup}/paper/
archive_prune
cd -
cd ${path_backup}/cold/
archive_prune
cd -
# Prune old Docker copies.
cd ${path_docker}
archive_prune Docker 7
cd -
# Prune game saves.
cd "${path_backup}/save/"
2024-01-03 20:56:18 +03:00
archive_prune
cd -
2024-01-03 18:43:18 +03:00
# Sync writes.
sync
2023-12-11 16:56:09 +03:00
# Notify completion & size.
notify_silent "Backup : Complete ${bupsize}."
echo "Backup : Complete ${bupsize}."