mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-06-16 06:48:21 +00:00
update 1.2.2.2 beta
This commit is contained in:
@@ -151,18 +151,22 @@ _sb_run_pbs() {
|
||||
cmd+=(--keyfile "$PBS_KEYFILE")
|
||||
fi
|
||||
|
||||
env PBS_PASSWORD="$PBS_PASSWORD" PBS_ENCRYPTION_PASSWORD="${PBS_ENCRYPTION_PASSWORD:-}" \
|
||||
"${cmd[@]}" >/dev/null 2>&1 || return 1
|
||||
env PBS_PASSWORD="$PBS_PASSWORD" \
|
||||
PBS_ENCRYPTION_PASSWORD="${PBS_ENCRYPTION_PASSWORD:-}" \
|
||||
PBS_FINGERPRINT="${PBS_FINGERPRINT:-}" \
|
||||
"${cmd[@]}" 2>&1 || return 1
|
||||
|
||||
# Best effort prune for PBS group.
|
||||
proxmox-backup-client prune "host/${backup_id}" --repository "$PBS_REPOSITORY" \
|
||||
${KEEP_LAST:+--keep-last "$KEEP_LAST"} \
|
||||
${KEEP_HOURLY:+--keep-hourly "$KEEP_HOURLY"} \
|
||||
${KEEP_DAILY:+--keep-daily "$KEEP_DAILY"} \
|
||||
${KEEP_WEEKLY:+--keep-weekly "$KEEP_WEEKLY"} \
|
||||
${KEEP_MONTHLY:+--keep-monthly "$KEEP_MONTHLY"} \
|
||||
${KEEP_YEARLY:+--keep-yearly "$KEEP_YEARLY"} \
|
||||
>/dev/null 2>&1 || true
|
||||
env PBS_PASSWORD="$PBS_PASSWORD" \
|
||||
PBS_FINGERPRINT="${PBS_FINGERPRINT:-}" \
|
||||
proxmox-backup-client prune "host/${backup_id}" --repository "$PBS_REPOSITORY" \
|
||||
${KEEP_LAST:+--keep-last "$KEEP_LAST"} \
|
||||
${KEEP_HOURLY:+--keep-hourly "$KEEP_HOURLY"} \
|
||||
${KEEP_DAILY:+--keep-daily "$KEEP_DAILY"} \
|
||||
${KEEP_WEEKLY:+--keep-weekly "$KEEP_WEEKLY"} \
|
||||
${KEEP_MONTHLY:+--keep-monthly "$KEEP_MONTHLY"} \
|
||||
${KEEP_YEARLY:+--keep-yearly "$KEEP_YEARLY"} \
|
||||
2>&1 || true
|
||||
|
||||
echo "PBS_SNAPSHOT=host/${backup_id}/${epoch}"
|
||||
return 0
|
||||
@@ -203,6 +207,7 @@ main() {
|
||||
{
|
||||
echo "=== Scheduled backup job ${job_id} started at $(date -Iseconds) ==="
|
||||
echo "Backend: ${BACKEND:-}"
|
||||
echo "Profile: ${PROFILE_MODE:-default}"
|
||||
} >"$log_file"
|
||||
|
||||
local -a paths=()
|
||||
@@ -219,21 +224,57 @@ main() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
hb_prepare_staging "$stage_root" "${paths[@]}" >>"$log_file" 2>&1
|
||||
# Interactive output mirrors the colored layout of _bk_local in
|
||||
# backup_host.sh when stdout is a TTY (operator launched "Run job
|
||||
# now"). Otherwise — timer / vzdump hook — only the plain log
|
||||
# file is written.
|
||||
local TTY=0
|
||||
[[ -t 1 ]] && TTY=1
|
||||
|
||||
if (( TTY )); then
|
||||
echo -e "${TAB}${BGN}$(translate "Backend:")${CL} ${BL}${BACKEND}${CL}"
|
||||
echo -e "${TAB}${BGN}$(translate "Profile:")${CL} ${BL}${PROFILE_MODE:-default}${CL}"
|
||||
echo -e "${TAB}${BGN}$(translate "Paths to back up:")${CL} ${BL}${#paths[@]}${CL}"
|
||||
echo
|
||||
msg_info "$(translate "Preparing staging area...")"
|
||||
fi
|
||||
{
|
||||
echo "Paths to back up: ${#paths[@]}"
|
||||
echo "Preparing staging area at $stage_root ..."
|
||||
} >>"$log_file"
|
||||
hb_prepare_staging "$stage_root" "${paths[@]}" >>"$log_file" 2>&1
|
||||
local staged_files staged_size
|
||||
staged_files=$(find "$stage_root/rootfs" -type f 2>/dev/null | wc -l)
|
||||
staged_size=$(hb_file_size "$stage_root/rootfs" 2>/dev/null || echo "?")
|
||||
echo "Staging ready: $staged_files files copied (size $staged_size)." >>"$log_file"
|
||||
(( TTY )) && msg_ok "$(translate "Staging ready.") $(translate "Data size:") $staged_size — $staged_files $(translate "files")"
|
||||
|
||||
local rc=1 t_start elapsed archive_path=""
|
||||
t_start=$SECONDS
|
||||
|
||||
local rc=1
|
||||
case "${BACKEND:-}" in
|
||||
local)
|
||||
_sb_run_local "$stage_root" "$job_id" "$ts" "${LOCAL_DEST_DIR:-/var/lib/vz/dump}" >>"$log_file" 2>&1
|
||||
(( TTY )) && { echo; msg_info "$(translate "Creating local archive...")"; stop_spinner; }
|
||||
echo "Writing local archive to ${LOCAL_DEST_DIR:-/var/lib/vz/dump} ..." >>"$log_file"
|
||||
local _output
|
||||
_output=$(_sb_run_local "$stage_root" "$job_id" "$ts" "${LOCAL_DEST_DIR:-/var/lib/vz/dump}" 2>>"$log_file")
|
||||
rc=$?
|
||||
echo "$_output" >>"$log_file"
|
||||
archive_path=$(grep "^LOCAL_ARCHIVE=" <<<"$_output" | cut -d'=' -f2-)
|
||||
;;
|
||||
borg)
|
||||
(( TTY )) && { echo; msg_info "$(translate "Sending snapshot to Borg repository...")"; stop_spinner; }
|
||||
echo "Sending snapshot to Borg repository ${BORG_REPO:-} ..." >>"$log_file"
|
||||
_sb_run_borg "$stage_root" "${job_id}-${ts}" >>"$log_file" 2>&1
|
||||
rc=$?
|
||||
archive_path="${BORG_REPO:-}::${job_id}-${ts}"
|
||||
;;
|
||||
pbs)
|
||||
(( TTY )) && { echo; msg_info "$(translate "Sending snapshot to PBS...")"; stop_spinner; }
|
||||
echo "Sending snapshot to PBS ${PBS_REPOSITORY:-} (id=${PBS_BACKUP_ID:-hostcfg-$(hostname)}) ..." >>"$log_file"
|
||||
_sb_run_pbs "$stage_root" "${PBS_BACKUP_ID:-hostcfg-$(hostname)}" "$(date +%s)" >>"$log_file" 2>&1
|
||||
rc=$?
|
||||
archive_path="${PBS_REPOSITORY:-}::host/${PBS_BACKUP_ID:-hostcfg-$(hostname)}"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown backend: ${BACKEND:-}" >>"$log_file"
|
||||
@@ -241,17 +282,45 @@ main() {
|
||||
;;
|
||||
esac
|
||||
|
||||
elapsed=$((SECONDS - t_start))
|
||||
|
||||
echo "Cleaning up staging area ..." >>"$log_file"
|
||||
rm -rf "$stage_root"
|
||||
|
||||
if [[ $rc -eq 0 ]]; then
|
||||
echo "RESULT=ok" >>"$summary_file"
|
||||
echo "LOG_FILE=${log_file}" >>"$summary_file"
|
||||
echo "=== Job finished OK at $(date -Iseconds) ===" >>"$log_file"
|
||||
if (( TTY )); then
|
||||
local archive_size="-"
|
||||
case "${BACKEND:-}" in
|
||||
local) [[ -f "$archive_path" ]] && archive_size=$(hb_file_size "$archive_path") ;;
|
||||
esac
|
||||
local method_label
|
||||
case "${BACKEND:-}" in
|
||||
local) method_label="Local archive (tar)" ;;
|
||||
borg) method_label="Borg repository" ;;
|
||||
pbs) method_label="Proxmox Backup Server" ;;
|
||||
esac
|
||||
echo
|
||||
echo -e "${TAB}${BOLD}$(translate "Backup completed:")${CL}"
|
||||
echo -e "${TAB}${BGN}$(translate "Method:")${CL} ${BL}${method_label}${CL}"
|
||||
[[ -n "$archive_path" ]] && \
|
||||
echo -e "${TAB}${BGN}$(translate "Archive:")${CL} ${BL}${archive_path}${CL}"
|
||||
echo -e "${TAB}${BGN}$(translate "Data size:")${CL} ${BL}${staged_size}${CL}"
|
||||
[[ "$archive_size" != "-" ]] && \
|
||||
echo -e "${TAB}${BGN}$(translate "Archive size:")${CL} ${BL}${archive_size}${CL}"
|
||||
echo -e "${TAB}${BGN}$(translate "Duration:")${CL} ${BL}$(hb_human_elapsed "$elapsed")${CL}"
|
||||
echo -e "${TAB}${BGN}$(translate "Log:")${CL} ${BL}${log_file}${CL}"
|
||||
echo
|
||||
msg_ok "$(translate "Backup completed successfully.")"
|
||||
fi
|
||||
exit 0
|
||||
else
|
||||
echo "RESULT=failed" >>"$summary_file"
|
||||
echo "LOG_FILE=${log_file}" >>"$summary_file"
|
||||
echo "=== Job finished with errors at $(date -Iseconds) ===" >>"$log_file"
|
||||
(( TTY )) && msg_error "$(translate "Backup failed. See log:") $log_file"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user