fix: Форматирование вывода при инкрементном копировании

* убран вывод ошибки отсутвующих датасетов
This commit is contained in:
root 2025-07-14 17:58:04 +03:00
parent 1738c35abb
commit 909b5bbb49

View File

@ -282,12 +282,13 @@ fi # Конец блока наличия переданных параметр
# Словарь со списком последких снапшотов для датасетов # Словарь со списком последких снапшотов для датасетов
declare -A last_loc_snaps declare -A last_loc_snaps
echo -ne "Проверяю на наличие $inc_snapshot...\033[2K\r" echo -ne "Проверяю на наличие $inc_snapshot...\033[2K\r"
column_widths="%-45s * %-45s\n"
for loc_ds bak_ds in ${(kv)work_datasets}; do for loc_ds bak_ds in ${(kv)work_datasets}; do
# Запросить последние снимки # Запросить последние снимки
loc_snap="$(zfs list -t snapshot -o name ${loc_ds} | grep 'manual' | tail -n1 | egrep -o '@.+' )" loc_snap="$(zfs list -t snapshot -o name ${loc_ds} 2>/dev/null | grep 'manual' | tail -n1 | egrep -o '@.+' )"
loc_snap=${loc_snap:1} # удалить @ в начале строки loc_snap=${loc_snap:1} # удалить @ в начале строки
if [[ $incremental = true ]]; then if [[ $incremental = true ]]; then
bak_snap=$(ssh $backup_user@$backup_server zfs list -t snapshot -o name ${bak_ds} | grep 'manual' | tail -n1 | egrep -o '@.+') bak_snap=$(ssh $backup_user@$backup_server zfs list -t snapshot -o name ${bak_ds} 2>/dev/null | grep 'manual' | tail -n1 | egrep -o '@.+')
bak_snap=${bak_snap:1} # удалить @ в начале строки bak_snap=${bak_snap:1} # удалить @ в начале строки
fi fi
# echo "$loc_ds @ $loc_snap -> $bak_ds @ $bak_snap" # echo "$loc_ds @ $loc_snap -> $bak_ds @ $bak_snap"
@ -295,12 +296,12 @@ for loc_ds bak_ds in ${(kv)work_datasets}; do
if [[ "$loc_snap" = "$inc_snapshot" ]]; then if [[ "$loc_snap" = "$inc_snapshot" ]]; then
if [[ $incremental = true ]] && [[ "$loc_snap" = "$bak_snap" ]]; then if [[ $incremental = true ]] && [[ "$loc_snap" = "$bak_snap" ]]; then
# Если последние снимки на обеих машинах совпадают в инкрементном режиме # Если последние снимки на обеих машинах совпадают в инкрементном режиме
echo "${loc_ds}@${loc_snap} * существует на обеих машинах. Исключено из списка резервируемых" printf $column_widths "${loc_ds}@${loc_snap}" "существует на обеих машинах. Исключено из списка резервируемых"
unset "work_datasets[$loc_ds]" unset "work_datasets[$loc_ds]"
else else
# Если на удалённой машине нет такого снимка, то предложить удалить. # Если на удалённой машине нет такого снимка, то предложить удалить.
echo "Датасет $loc_ds уже имеет последний снимок $inc_snapshot" printf $column_widths "${loc_ds}@${loc_snap}" "существует на исходной машине, но отсутвует на $backup_server"
read "act?ok: резервировать | re: пересоздать (удаляет сразу!) | исключить из работы по умолчанию : " read "act?ok: резервировать | re: пересоздать (удаляет сразу!!!) | по умолчанию исключить из работы : "
case $act in case $act in
re) zfs destroy "${loc_ds}@${loc_snap}"; re) zfs destroy "${loc_ds}@${loc_snap}";
loc_snap="$(zfs list -t snapshot -o name ${loc_ds} | grep 'manual' | tail -n1 | egrep -o '@.+' )"; loc_snap="$(zfs list -t snapshot -o name ${loc_ds} | grep 'manual' | tail -n1 | egrep -o '@.+' )";
@ -317,6 +318,7 @@ for loc_ds bak_ds in ${(kv)work_datasets}; do
last_loc_snaps[$loc_ds]=$loc_snap last_loc_snaps[$loc_ds]=$loc_snap
else else
if [[ $incremental = true ]]; then if [[ $incremental = true ]]; then
printf $column_widths "${loc_ds}" "Не имеет снимков. Не возможно сделать инкрементный резерв."
unset "work_datasets[$loc_ds]" unset "work_datasets[$loc_ds]"
fi fi
fi fi