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