ad.backup.zfs

Yohn Y. 2026-05-17

0:00bb6c16b4b6 Go to Latest

ad.backup.zfs/bin/zfsbackup.sh

.. init . По сути архивация имеющегося самопиского решания для памяти.

History
1 #!/bin/sh
2 # devel.a0fs.net: zfsbackup.bin.main - v0.1 by awgur
3 # ---
4 # Файл, содержащий скрипт управления системой резервного копирования
6 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
7 export PATH
9 dir_root="$(dirname "$(dirname "$(readlink -f "$0")")")"
10 dir_lib="${dir_root}/lib" # Директория с библиотеками
12 . "${dir_lib}/main.sh"
14 usage () {
15 # Вывод справки по аргементам скрипта
16 cat << EOF
17 $0 ZFS_Dataset_name команда [аргументы]
18 Настройка резервного копирования наборов данных (dataset) ZFS
19 Комманды:
20 enable : Включение копий для текущего набора данных
21 : и вложенных в него наборов, если у них эта настройка
22 : не заданна отдельно
23 disable : Отключение резервного копирования для набора данных ZFS
24 : и вложенных в него наборов, если у них эта насройка
25 : не заданна отдельно
26 set backup_type number : Установить количество хранимых копий для
27 : заданного типа копирования.
28 : Поддерживаются типы (backup_type):
29 : - h - почасовое копирование, делается раз в час, в основном
30 : в начале каждого часа
31 : - d - ежедневное копирование, делается раз в день, в основном
32 : в 00 часов 00 минут по локальному времени системы
33 : number - Число резервных копий - неотрицательное целое число.
34 : Если число равно 0 данный тип резервного копирования
35 : для набора отключается.
36 EOF
37 }
39 err_usr () {
40 # Возбуждение исключения, с аварийным завершением работы скрипта
41 # и выдачей сообщения на терминал.
42 # Аргументы:
43 # [exit_code] : Код завершения, по-умолчанию 1
44 # message : Сообщение пользователю
45 local exit_code="$1"
46 local msg="$2"
48 if ! [ "$msg" ] ; then
49 msg="$exit_code"
50 exit_code=1
51 fi
53 echo "ERROR: $msg"
54 usage
55 exit "${exit_code}"
56 }
58 cmd_eanble() {
59 # Обработчик комманды включения резервного попирования
60 zfs_setProp "$arg_ds" "enable" "yes"
61 }
63 cmd_disable() {
64 # Обработчик комманды отключения резервного попирования
65 zfs_setProp "$arg_ds" "enable" "no"
66 }
68 cmd_set() {
69 # Обработчик комманды на установку количества резервных копий
70 # аргументы:
71 # backup_type : Тип резервного копирования
72 # count : Коилчество копий, целое положительное число
73 local backupType
74 case "$1" in
75 d )
76 backupType="${sys_backupType_d}"
77 ;;
78 h )
79 backupType="${sys_backupType_h}"
80 ;;
81 * )
82 err_usr 2 "Не вреный тип резервного копирования, для которого устанавливается значение: '$1'"
83 ;;
84 esac
86 if ! svc_isNum "$2" ; then
87 err_usr 3 "Число резервных копий не является неотрицательным числом: '$2'"
88 fi
90 zfs_setProp "$arg_ds" "$backupType" $2
91 }
93 # ===
94 # Проверяем в порядке ли аргументы
95 # - Присутствует ли набор данных
96 if ! zfs list -Ho name "$1" > /dev/null 2>&1 ; then
97 err_usr "Набор данных '$1' не существует"
98 fi
99 arg_ds="$1"
100 shift
102 # - Проверка комманд
103 arg_cmd="$1"
104 shift
106 case "$arg_cmd" in
107 enable )
108 cmd_eanble
109 ;;
110 disable )
111 cmd_disable
112 ;;
113 set )
114 cmd_set "$@"
115 ;;
116 * )
117 err_usr 4 "Комманда не распознана: '$cmd'"
118 ;;
119 esac