From 909b5bbb49d5c66c1bb1e28b446d4342eb81536a Mon Sep 17 00:00:00 2001 From: root Date: Mon, 14 Jul 2025 17:58:04 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=A4=D0=BE=D1=80=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B2=D0=BE=D0=B4=D0=B0=20=D0=BF=D1=80=D0=B8=20=D0=B8=D0=BD?= =?UTF-8?q?=D0=BA=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D0=BD=D0=BE=D0=BC=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BF=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B8=20*=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B2=D0=BE=D0=B4=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BE=D1=82=D1=81=D1=83=D1=82=D0=B2=D1=83=D1=8E=D1=89=D0=B8?= =?UTF-8?q?=D1=85=20=D0=B4=D0=B0=D1=82=D0=B0=D1=81=D0=B5=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zfs_send.zsh | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/zfs_send.zsh b/zfs_send.zsh index e9a4512..b4df0c9 100755 --- a/zfs_send.zsh +++ b/zfs_send.zsh @@ -282,12 +282,13 @@ fi # Конец блока наличия переданных параметр # Словарь со списком последких снапшотов для датасетов declare -A last_loc_snaps echo -ne "Проверяю на наличие $inc_snapshot...\033[2K\r" +column_widths="%-45s * %-45s\n" 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} # удалить @ в начале строки 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} # удалить @ в начале строки fi # 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 [[ $incremental = true ]] && [[ "$loc_snap" = "$bak_snap" ]]; then # Если последние снимки на обеих машинах совпадают в инкрементном режиме - echo "${loc_ds}@${loc_snap} * существует на обеих машинах. Исключено из списка резервируемых" + printf $column_widths "${loc_ds}@${loc_snap}" "существует на обеих машинах. Исключено из списка резервируемых" unset "work_datasets[$loc_ds]" else # Если на удалённой машине нет такого снимка, то предложить удалить. - echo "Датасет $loc_ds уже имеет последний снимок $inc_snapshot" - read "act?ok: резервировать | re: пересоздать (удаляет сразу!) | исключить из работы по умолчанию : " + printf $column_widths "${loc_ds}@${loc_snap}" "существует на исходной машине, но отсутвует на $backup_server" + read "act?ok: резервировать | re: пересоздать (удаляет сразу!!!) | по умолчанию исключить из работы : " case $act in re) zfs destroy "${loc_ds}@${loc_snap}"; 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 else if [[ $incremental = true ]]; then + printf $column_widths "${loc_ds}" "Не имеет снимков. Не возможно сделать инкрементный резерв." unset "work_datasets[$loc_ds]" fi fi