#!/bin/bash resticCheckLocation() { local idx="$1" local read_data="$2" resticEnvExport "$idx" || return 1 local args=(check) if [[ "$read_data" == "full" ]]; then args+=(--read-data) elif [[ -n "$read_data" ]]; then args+=(--read-data-subset "${read_data}%") fi isNotice "Checking $(resticLocationName "$idx")${read_data:+ (sample: ${read_data}%)}" runBackupOp restic "${args[@]}" local rc=$? resticEnvUnset if [[ $rc -eq 0 ]]; then isSuccessful "$(resticLocationName "$idx") integrity OK" else isError "$(resticLocationName "$idx") integrity FAILED" fi return $rc } resticCheckAllLocations() { local read_data="$1" local idx local failed=0 while IFS= read -r idx; do [[ -z "$idx" ]] && continue resticCheckLocation "$idx" "$read_data" || failed=$((failed + 1)) done < <(resticEnabledLocations) return $failed } resticLocationStats() { local idx="$1" resticEnvExport "$idx" || return 1 # raw-data mode reads the index only and reports the repository's actual # deduplicated on-disk size — fast, and the number the dashboard already # labels "deduplicated, encrypted". The default restore-size mode instead # walks every snapshot's tree to sum logical file sizes: the slowest restic # op, and pointless for a size readout. (raw-data omits total_file_count; # the dashboard shows snapshot count for that slot instead.) runBackupOp restic stats --json --no-lock --mode raw-data 2>/dev/null local rc=$? resticEnvUnset return $rc }