Home : Add bin dir.

This commit is contained in:
Dmitry Voronin 2024-03-04 12:37:20 +03:00
parent 7911bc4548
commit a3cb469cc2
9 changed files with 102 additions and 4 deletions

View file

@ -4,7 +4,7 @@
description = "Home system backup.";
serviceConfig = {
Type = "oneshot";
ExecStart = "/root/app/bin/home/Backup";
ExecStart = "/etc/bin/Backup";
};
path = with pkgs; [
bashInteractive

View file

@ -18,6 +18,9 @@
10.1.0.2 pass.voronind.com
'';
# Extra binaries.
environment.etc.bin.source = ./bin;
# Filesystems.
fileSystems."/storage/cold_1" = {
device = "/dev/storage/cold_1";

View file

@ -4,7 +4,7 @@
description = "Nextcloud worker.";
serviceConfig = {
Type = "oneshot";
ExecStart = "/root/app/bin/home/Nextcloud";
ExecStart = "/etc/bin/Nextcloud";
};
path = with pkgs; [
bashInteractive

View file

@ -4,7 +4,7 @@
description = "Process uploaded photos.";
serviceConfig = {
Type = "oneshot";
ExecStart = "/root/app/bin/home/PhotosProcess";
ExecStart = "/etc/bin/PhotosProcess";
};
path = with pkgs; [
bashInteractive

View file

@ -4,7 +4,7 @@
description = "Sync music from Yandex.Music.";
serviceConfig = {
Type = "oneshot";
ExecStart = "/root/app/bin/home/YandexMusic";
ExecStart = "/etc/bin/YandexMusic";
};
path = with pkgs; [
bashInteractive

76
host/home/bin/Backup Executable file
View file

@ -0,0 +1,76 @@
#!/usr/bin/env bash
# Source modules.
for file in /etc/bash/module/*.sh; do
source "${file}"
done
function report() {
echo "${*}"
notify "${*}"
}
# Define constants.
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"
# Check if backup drive is mounted.
if [ ! -f "${path_mount}"/.mount ]; then
report "Backup : ${path_mount} not mounted!"
exit 1
fi
# Check if hot storage is mounted.
if [ ! -f "${path_src}"/.mount ]; then
report "Backup : ${path_src} not mounted!"
exit 1
fi
# Cd to src storage.
cd "${path_src}"
# Save media list.
find ${path_media} -type d > ${path_backup}/cold/ColdMedia.txt || report "Backup : Failed to save media list!"
cd ${path_backup}/cold/
archive_fast ColdMedia.txt && rm ColdMedia.txt || report "Backup : Failed to archive media list!"
cd -
# Backup docker.
docker=$(archive_fast docker/)
bupsize=$(tdu ${docker} | awk '{print $1}')
mv ${docker} ${path_docker}/ || report "Backup : Failed to save docker!"
# Backup some media.
cd ${path_src}/media/
paper=$(archive_fast paper/)
mv ${paper} ${path_backup}/paper/ || report "Backup : Failed to save paper!"
cd -
# Prune media copies.
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/"
archive_prune
cd -
# Sync writes.
sync
# Notify completion & size.
notify_silent "Backup : Complete ${bupsize}."
echo "Backup : Complete ${bupsize}."

8
host/home/bin/Nextcloud Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
# Source modules.
for file in /etc/bash/module/*.sh; do
source "${file}"
done
docker exec -u 33 cloud php -f /var/www/html/cron.php || notify 'Nextcloud : Failed to run cron.'

6
host/home/bin/PhotosProcess Executable file
View file

@ -0,0 +1,6 @@
#!/usr/bin/env bash
in="/storage/hot/docker/cloud/data/data/cakee/files/media/photo/"
out="/storage/cold_1/backup/tmp/photo/"
docker run --rm -v "${in}":/in -v "${out}":/out voronind.com/photoprocess:latest

5
host/home/bin/YandexMusic Executable file
View file

@ -0,0 +1,5 @@
#!/usr/bin/env bash
music="/storage/hot/media/music/"
docker run --rm -v "${music}":/music voronind.com/yamusic:latest