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-01-25 21:53:20 +03:00
|
|
|
for file in /root/.config/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!"
|
2023-12-30 13:34:00 +03:00
|
|
|
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!"
|
2023-12-30 13:34:00 +03:00
|
|
|
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-01-25 21:53:20 +03:00
|
|
|
bupsize=$(du -h ${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}."
|