bugfix: расчёт финального времени и косметические правки

This commit is contained in:
root 2024-10-31 13:12:59 +03:00
parent ab244ea756
commit 130fd5a9f4

View File

@ -98,7 +98,9 @@ else # Если не инкрементная копия, то запросит
0) exit;; 0) exit;;
-) ;; -) ;;
*) if (( $bak_ds_indx >= 1 )) && (( $bak_ds_indx <= ${#backup_datasets} )); then *) if (( $bak_ds_indx >= 1 )) && (( $bak_ds_indx <= ${#backup_datasets} )); then
work_datasets[$local_datasets[$i]]=$backup_datasets[bak_ds_indx] loc_name_ds=$(sed -r "s/(.*)\/(.*)/\2/" <<<"$local_datasets[$i]") # Определить нижний по иерархии
bak_ds="$bak_ds/$loc_name_ds" # Добавить имя создаваемого датасета
work_datasets[$local_datasets[$i]]=$bak_ds
else; exit 1; fi ;; else; exit 1; fi ;;
esac esac
done done
@ -165,7 +167,7 @@ if [[ $incremental = true ]]; then
else else
i=0; for loc_ds bak_ds in ${(kv)work_datasets}; do i=0; for loc_ds bak_ds in ${(kv)work_datasets}; do
(( i++ )) (( i++ ))
printf $column_widths $i $loc_ds "$inc_snapshot (*)" $bak_ds printf $column_widths $i $loc_ds "$inc_snapshot (*)" "$bak_ds (*)"
done done
fi fi
@ -224,9 +226,7 @@ if [[ $work = "y" || $work = "Y" ]]; then
echo " * Start sending ${loc_ds} at $(date +'%Y.%m.%d %H:%M.%S')" echo " * Start sending ${loc_ds} at $(date +'%Y.%m.%d %H:%M.%S')"
case $incremental in case $incremental in
true) zfs send -V -i ${loc_ds}@${last_loc_snaps[$loc_ds]} ${loc_ds}@${inc_snapshot} | ssh "$backup_user@${backup_server}" zfs receive ${bak_ds}@${inc_snapshot} ;; true) zfs send -V -i ${loc_ds}@${last_loc_snaps[$loc_ds]} ${loc_ds}@${inc_snapshot} | ssh "$backup_user@${backup_server}" zfs receive ${bak_ds}@${inc_snapshot} ;;
false) loc_name_ds=(${(@s:/:)loc_ds}); loc_name_ds=$loc_name_ds[-1] # Получить имя датасета без пути false) zfs send -V ${loc_ds}@${inc_snapshot} | ssh "$backup_user@${backup_server}" zfs receive ${bak_ds} ;;
bak_ds="$bak_ds/$loc_name_ds"
zfs send -V ${loc_ds}@${inc_snapshot} | ssh "$backup_user@${backup_server}" zfs receive ${bak_ds} ;;
esac esac
TS2=$(date +%s) TS2=$(date +%s)
(( i_task++ )) (( i_task++ ))
@ -254,7 +254,7 @@ if [[ $work = "y" || $work = "Y" ]]; then
time_part_of_percent=$(( now - time_changed_percent_value )) # Время с последнего изменения процента time_part_of_percent=$(( now - time_changed_percent_value )) # Время с последнего изменения процента
estimated_total=$(( 100 / percent * elapsed )) # Всего времени на задачу estimated_total=$(( 100 / percent * elapsed )) # Всего времени на задачу
estimated_remain=$(( estimated_total - elapsed - time_part_of_percent )) # Осталось времени на задачу estimated_remain=$(( estimated_total - elapsed - time_part_of_percent )) # Осталось времени на задачу
if (( estimated_remain >= 86400 )) || (( estimated_total >= 86400 )); then if (( estimated_remain >= 86400 )) || (( estimated_total >= 86400 )); then # Если осталось более чем сутки, то отобразить дни
estimated_remain_days=$(( estimated_remain / 86400 )); estimated_remain_time=$(( estimated_remain % 86400 )) estimated_remain_days=$(( estimated_remain / 86400 )); estimated_remain_time=$(( estimated_remain % 86400 ))
estimated_total_days=$(( estimated_total / 86400 )); estimated_total_time=$(( estimated_total % 86400 )) estimated_total_days=$(( estimated_total / 86400 )); estimated_total_time=$(( estimated_total % 86400 ))
echo -n "\033[2K\r$progress $estimated_remain_days д. $(date -d@$estimated_remain_time -u '+%H:%M.%S') ост. / $estimated_total_days д. $(date -d@$estimated_total_time -u '+%H:%M.%S') " echo -n "\033[2K\r$progress $estimated_remain_days д. $(date -d@$estimated_remain_time -u '+%H:%M.%S') ост. / $estimated_total_days д. $(date -d@$estimated_total_time -u '+%H:%M.%S') "
@ -274,7 +274,7 @@ if [[ $work = "y" || $work = "Y" ]]; then
rm /dev/shm/backup_time_stamp rm /dev/shm/backup_time_stamp
exec >&1 >>$LOGFILE 2>&1 # Вывод на экран и в файл exec >&1 >>$LOGFILE 2>&1 # Вывод на экран и в файл
echo "\n--- Все завершено за $(date -d@$(($TS2-$TS0)) -u '+%H:%M.%S') ---" echo "\n--- Все завершено за $(date -d@$(( $(date +%s) - $TS0 )) -u '+%H:%M.%S') ---"
exec 1>&6 6>&- # Restore stdout and close file descriptor #6. exec 1>&6 6>&- # Restore stdout and close file descriptor #6.