{
  "schema_version": 1,
  "channel": "homelab-runtime",
  "command_id": "HOMELAB-VM-2CLOUD-NOLOCAL-PREFLIGHT-435",
  "status": "OK",
  "rc": 0,
  "host": "pve01",
  "mode": "read-only",
  "component": "cluster-audit",
  "started_at_utc": "2026-07-24T10:15:43Z",
  "finished_at_utc": "2026-07-24T10:15:43Z",
  "reference_register_checked": true,
  "reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
  "error_register_checked": true,
  "error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752",
  "command_sha256": "86526459d447c1f1c45038a4d8dd89cb4cd68c9982e5bf88c20e2cacfb516c8b",
  "duplicate_failed_command_blocked": false,
  "block_reason": null,
  "execution_started": true,
  "changes_made": false,
  "sanitized": true,
  "secrets_included": false,
  "private_addresses_included": false,
  "raw_evidence_retained_locally": true,
  "raw_evidence_sha256": "90b33c793e8f02c3bbc5dba5e5d5e93c7d4ca4e647513b4cf189ba5db0cd05d7",
  "sanitized_output_sha256": "90b33c793e8f02c3bbc5dba5e5d5e93c7d4ca4e647513b4cf189ba5db0cd05d7",
  "output_truncated_in_json": false,
  "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
  "output": "DETAIL=RUNTIME_SHA256=265aa081c8c9981ec0724a38febf8d0f4269ed62bb853fce181ae809c291ed17\nDETAIL=DESIRED_SHA256=265aa081c8c9981ec0724a38febf8d0f4269ed62bb853fce181ae809c291ed17\nDETAIL=INSTALLED_LOGIC_BEGIN\nDETAIL=SOURCE=17-BAD=0\nDETAIL=SOURCE=18-COUNT=0\nDETAIL=SOURCE=19-TOTAL=0\nDETAIL=SOURCE=20-CHUNKED=0\nDETAIL=SOURCE=21-VMIDS=\"${VMIDS:-110 112 150}\"\nDETAIL=SOURCE=22-\nDETAIL=SOURCE=23-source /etc/homelab-backup.env 2>/dev/null || BAD=1\nDETAIL=SOURCE=24-\nDETAIL=SOURCE=25-JOB_ID=\"homelab-${NODE}-vm-local-dumps-${JOB_TS}\"\nDETAIL=SOURCE=26-WORK=\"$ROOT/$JOB_ID\"\nDETAIL=SOURCE=27-mkdir -p \"$WORK\"\nDETAIL=SOURCE=28-\nDETAIL=SOURCE=29:FILES_TSV=\"$WORK/files.tsv\"\nDETAIL=SOURCE=30-CHKS=\"$WORK/checksums.txt\"\nDETAIL=SOURCE=31-MAN=\"$WORK/manifest.json\"\nDETAIL=SOURCE=32-\nDETAIL=SOURCE=33:: > \"$FILES_TSV\"\nDETAIL=SOURCE=34-: > \"$CHKS\"\nDETAIL=SOURCE=35-: > \"$LOG\"\nDETAIL=SOURCE=36-\nDETAIL=SOURCE=37-echo \"job_id=$JOB_ID\" >> \"$LOG\"\nDETAIL=SOURCE=38-echo \"vmids=$VMIDS\" >> \"$LOG\"\nDETAIL=SOURCE=39-echo \"chunk_size_bytes=$CHUNK_SIZE_BYTES\" >> \"$LOG\"\nDETAIL=SOURCE=40-\nDETAIL=SOURCE=41-for id in $VMIDS; do\nDETAIL=SOURCE=42:  F=\"$(find /var/lib/vz/dump -maxdepth 1 -type f \\( -name \"vzdump-qemu-${id}-*.vma.zst\" -o -name \"vzdump-lxc-${id}-*.tar.zst\" \\) -printf \"%T@ %p\\n\" 2>/dev/null | sort -n | tail -n 1 | cut -d\" \" -f2-)\"\nDETAIL=SOURCE=43-  if [ -z \"$F\" ] || [ ! -f \"$F\" ]; then\nDETAIL=SOURCE=44-    echo \"MISSING vmid=$id\" >> \"$LOG\"\nDETAIL=SOURCE=45-    BAD=$((BAD+1))\nDETAIL=SOURCE=46-    continue\nDETAIL=SOURCE=47-  fi\nDETAIL=SOURCE=48-\nDETAIL=SOURCE=49-  BN=\"$(basename \"$F\")\"\nDETAIL=SOURCE=50-  SIZE=\"$(stat -c %s \"$F\" 2>/dev/null || echo 0)\"\nDETAIL=SOURCE=51-  MT=\"$(date -u -d \"@$(stat -c %Y \"$F\" 2>/dev/null || echo 0)\" +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || echo unknown)\"\nDETAIL=SOURCE=52-  KIND=\"unknown\"\nDETAIL=SOURCE=53-  echo \"$BN\" | grep -q \"^vzdump-qemu-\" && KIND=\"qemu\"\nDETAIL=SOURCE=54-  echo \"$BN\" | grep -q \"^vzdump-lxc-\" && KIND=\"lxc\"\nDETAIL=SOURCE=55-  SHA=\"$(sha256sum \"$F\" | cut -d\" \" -f1)\"\nDETAIL=SOURCE=56-  printf \"%s  %s\\n\" \"$SHA\" \"$BN\" >> \"$CHKS\"\nDETAIL=SOURCE=57-\nDETAIL=SOURCE=58-  MODE=\"direct\"\nDETAIL=SOURCE=59-  PARTS=0\nDETAIL=SOURCE=60-  if [ \"$SIZE\" -gt \"$CHUNK_SIZE_BYTES\" ]; then\nDETAIL=SOURCE=61-    MODE=\"chunked\"\nDETAIL=SOURCE=62-    CHUNKED=$((CHUNKED+1))\nDETAIL=SOURCE=--\nDETAIL=SOURCE=64-    rm -rf \"$CDIR\"\nDETAIL=SOURCE=65-    mkdir -p \"$CDIR\"\nDETAIL=SOURCE=66-    echo \"SPLIT file=$BN size=$SIZE chunk_size=$CHUNK_SIZE_SPLIT dir=$CDIR\" >> \"$LOG\"\nDETAIL=SOURCE=67-    split -b \"$CHUNK_SIZE_SPLIT\" -d -a 4 \"$F\" \"$CDIR/part-\" >> \"$LOG\" 2>&1\nDETAIL=SOURCE=68-    PARTS=\"$(find \"$CDIR\" -maxdepth 1 -type f -name 'part-*' | wc -l)\"\nDETAIL=SOURCE=69-    (cd \"$CDIR\" && sha256sum part-* > chunks.sha256)\nDETAIL=SOURCE=70-    if [ \"$PARTS\" -le 0 ]; then\nDETAIL=SOURCE=71-      echo \"BAD split produced no chunks file=$BN\" >> \"$LOG\"\nDETAIL=SOURCE=72-      BAD=$((BAD+1))\nDETAIL=SOURCE=73-    fi\nDETAIL=SOURCE=74-  fi\nDETAIL=SOURCE=75-\nDETAIL=SOURCE=76:  printf \"%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\t%s\\n\" \"$id\" \"$KIND\" \"$SIZE\" \"$SHA\" \"$MT\" \"$BN\" \"$F\" \"$MODE\" \"$PARTS\" >> \"$FILES_TSV\"\nDETAIL=SOURCE=77-  COUNT=$((COUNT+1))\nDETAIL=SOURCE=78-  TOTAL=$((TOTAL+SIZE))\nDETAIL=SOURCE=79-done\nDETAIL=SOURCE=80-\nDETAIL=SOURCE=81:python3 - \"$JOB_ID\" \"$NODE\" \"$TS\" \"$VMIDS\" \"$COUNT\" \"$TOTAL\" \"$CHUNKED\" \"$CHUNK_SIZE_BYTES\" \"$FILES_TSV\" > \"$MAN\" <<'PY'\nDETAIL=SOURCE=82-import json, sys, pathlib\nDETAIL=SOURCE=83-job,node,ts,vmids,count,total,chunked,chunk_size,tsv=sys.argv[1:]\nDETAIL=SOURCE=84-items=[]\nDETAIL=SOURCE=85-for line in pathlib.Path(tsv).read_text().splitlines():\nDETAIL=SOURCE=86-    p=line.split(\"\\t\")\nDETAIL=SOURCE=87-    if len(p)>=9:\nDETAIL=SOURCE=88-        items.append({\nDETAIL=SOURCE=89-            \"vmid\":p[0],\nDETAIL=SOURCE=90-            \"kind\":p[1],\nDETAIL=SOURCE=91-            \"size_bytes\":int(p[2]),\nDETAIL=SOURCE=92-            \"sha256\":p[3],\nDETAIL=SOURCE=93-            \"mtime_utc\":p[4],\nDETAIL=SOURCE=94-            \"filename\":p[5],\nDETAIL=SOURCE=95-            \"source_path\":p[6],\nDETAIL=SOURCE=96-            \"mode\":p[7],\nDETAIL=SOURCE=97-            \"parts\":int(p[8]),\nDETAIL=SOURCE=98-        })\nDETAIL=SOURCE=99-print(json.dumps({\nDETAIL=SOURCE=100-    \"job_id\":job,\nDETAIL=SOURCE=101-    \"node\":node,\nDETAIL=SOURCE=--\nDETAIL=SOURCE=103-    \"vmids\":vmids.split(),\nDETAIL=SOURCE=104-    \"count\":int(count),\nDETAIL=SOURCE=105-    \"total_bytes\":int(total),\nDETAIL=SOURCE=106-    \"chunked_count\":int(chunked),\nDETAIL=SOURCE=107-    \"chunk_size_bytes\":int(chunk_size),\nDETAIL=SOURCE=108-    \"items\":items,\nDETAIL=SOURCE=109-}, indent=2))\nDETAIL=SOURCE=110-PY\nDETAIL=SOURCE=111-\nDETAIL=SOURCE=112-DEST_A=\"${REMOTE_A%/}/${NODE}/vm-local-dumps/${JOB_ID}\"\nDETAIL=SOURCE=113-DEST_B=\"${REMOTE_B%/}/${NODE}/vm-local-dumps/${JOB_ID}\"\nDETAIL=SOURCE=114-\nDETAIL=SOURCE=115:upload_one_dest() {\nDETAIL=SOURCE=116-  DEST=\"$1\"\nDETAIL=SOURCE=117-  rclone mkdir \"$DEST/files\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=118-  while IFS=\"$(printf \"\\t\")\" read -r id kind size sha mt bn path mode parts; do\nDETAIL=SOURCE=119-    if [ \"$mode\" = \"chunked\" ]; then\nDETAIL=SOURCE=120-      CDIR=\"$CHUNK_ROOT/$JOB_ID/$bn.chunks\"\nDETAIL=SOURCE=121-      echo \"UPLOAD_CHUNKED dest=$DEST file=$bn size=$size parts=$parts\" >> \"$LOG\"\nDETAIL=SOURCE=122-      rclone mkdir \"$DEST/files/$bn.chunks\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=123-      for part in \"$CDIR\"/part-*; do\nDETAIL=SOURCE=124-        [ -f \"$part\" ] || continue\nDETAIL=SOURCE=125-        pn=\"$(basename \"$part\")\"\nDETAIL=SOURCE=126-        rclone copyto \"$part\" \"$DEST/files/$bn.chunks/$pn\" --transfers 1 --checkers 4 >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=127-      done\nDETAIL=SOURCE=128-      rclone copyto \"$CDIR/chunks.sha256\" \"$DEST/files/$bn.chunks/chunks.sha256\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=129-    else\nDETAIL=SOURCE=130-      echo \"UPLOAD_DIRECT dest=$DEST file=$bn size=$size\" >> \"$LOG\"\nDETAIL=SOURCE=131-      rclone copyto \"$path\" \"$DEST/files/$bn\" --transfers 1 --checkers 4 >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=132-    fi\nDETAIL=SOURCE=133:  done < \"$FILES_TSV\"\nDETAIL=SOURCE=134-\nDETAIL=SOURCE=135-  rclone copyto \"$CHKS\" \"$DEST/checksums.txt\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=136:  rclone copyto \"$FILES_TSV\" \"$DEST/files.tsv\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=137-  rclone copyto \"$MAN\" \"$DEST/manifest.json\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=138-}\nDETAIL=SOURCE=139-\nDETAIL=SOURCE=140:verify_one_dest() {\nDETAIL=SOURCE=141-  LABEL=\"$1\"\nDETAIL=SOURCE=142-  DEST=\"$2\"\nDETAIL=SOURCE=143-  VBASE=\"$VERIFY_ROOT/$JOB_ID/$LABEL\"\nDETAIL=SOURCE=144-  rm -rf \"$VBASE\"\nDETAIL=SOURCE=145-  mkdir -p \"$VBASE\"\nDETAIL=SOURCE=146-  rclone copyto \"$DEST/manifest.json\" \"$VBASE/manifest.json\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=147-  test -s \"$VBASE/manifest.json\" || BAD=$((BAD+1))\nDETAIL=SOURCE=148-\nDETAIL=SOURCE=149-  while IFS=\"$(printf \"\\t\")\" read -r id kind size sha mt bn path mode parts; do\nDETAIL=SOURCE=150-    if [ \"$mode\" = \"chunked\" ]; then\nDETAIL=SOURCE=151-      VDIR=\"$VBASE/$bn.chunks\"\nDETAIL=SOURCE=152-      mkdir -p \"$VDIR\"\nDETAIL=SOURCE=153-      echo \"VERIFY_CHUNKED label=$LABEL file=$bn parts=$parts\" >> \"$LOG\"\nDETAIL=SOURCE=154-      rclone copy \"$DEST/files/$bn.chunks\" \"$VDIR\" --filter \"+ part-*\" --filter \"+ chunks.sha256\" --filter \"- *\" --transfers 1 --checkers 4 >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=155-      (cd \"$VDIR\" && sha256sum -c chunks.sha256) >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=156-      CALC=\"$(find \"$VDIR\" -maxdepth 1 -type f -name 'part-*' | sort | xargs cat | sha256sum | cut -d\" \" -f1)\"\nDETAIL=SOURCE=157-      if [ \"$CALC\" = \"$sha\" ]; then\nDETAIL=SOURCE=158-        echo \"OK combined_sha label=$LABEL file=$bn sha=$sha\" >> \"$LOG\"\nDETAIL=SOURCE=159-      else\nDETAIL=SOURCE=160-        echo \"BAD combined_sha label=$LABEL file=$bn expected=$sha got=$CALC\" >> \"$LOG\"\nDETAIL=SOURCE=161-        BAD=$((BAD+1))\nDETAIL=SOURCE=162-      fi\nDETAIL=SOURCE=163-      rm -rf \"$VDIR\"\nDETAIL=SOURCE=164-    else\nDETAIL=SOURCE=165-      echo \"VERIFY_DIRECT label=$LABEL file=$bn\" >> \"$LOG\"\nDETAIL=SOURCE=166-      rclone copyto \"$DEST/files/$bn\" \"$VBASE/$bn\" --transfers 1 >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=167-      printf \"%s  %s\\n\" \"$sha\" \"$VBASE/$bn\" | sha256sum -c - >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE=168-      rm -f \"$VBASE/$bn\"\nDETAIL=SOURCE=169-    fi\nDETAIL=SOURCE=170:  done < \"$FILES_TSV\"\nDETAIL=SOURCE=171-  rm -rf \"$VBASE\"\nDETAIL=SOURCE=172-}\nDETAIL=SOURCE=173-\nDETAIL=SOURCE=174-if [ \"$BAD\" -eq 0 ]; then\nDETAIL=SOURCE=175:  upload_one_dest \"$DEST_A\"\nDETAIL=SOURCE=176:  upload_one_dest \"$DEST_B\"\nDETAIL=SOURCE=177-fi\nDETAIL=SOURCE=178-\nDETAIL=SOURCE=179-if [ \"$BAD\" -eq 0 ]; then\nDETAIL=SOURCE=180:  verify_one_dest \"A\" \"$DEST_A\"\nDETAIL=SOURCE=181:  verify_one_dest \"B\" \"$DEST_B\"\nDETAIL=SOURCE=182-fi\nDETAIL=SOURCE=183-\nDETAIL=SOURCE=184-rm -rf \"$VERIFY_ROOT/$JOB_ID\"\nDETAIL=SOURCE=185-rm -rf \"$CHUNK_ROOT/$JOB_ID\"\nDETAIL=SOURCE=186-\nDETAIL=SOURCE=187:# HOMELAB_NO_LOCAL_AFTER_DUAL_CLOUD_434\nDETAIL=SOURCE=188-LOCAL_DUMPS_DELETED=false\nDETAIL=SOURCE=189:DELETED_COUNT=0\nDETAIL=SOURCE=190:DELETED_BYTES=0\nDETAIL=SOURCE=191-\nDETAIL=SOURCE=192-if [ \"$BAD\" -eq 0 ]; then\nDETAIL=SOURCE=193:  echo \"PREDELETE_VALIDATION_BEGIN\" >> \"$LOG\"\nDETAIL=SOURCE=194-\nDETAIL=SOURCE=195-  while IFS=\"$(printf \"\t\")\" read -r id kind size sha mt bn path mode parts; do\nDETAIL=SOURCE=196-    case \"$path\" in\nDETAIL=SOURCE=197-      /var/lib/vz/dump/*)\nDETAIL=SOURCE=198-        ;;\nDETAIL=SOURCE=199-      *)\nDETAIL=SOURCE=200-        echo \"REFUSE_DELETE_OUTSIDE_ALLOWED_ROOT path=$path\" >> \"$LOG\"\nDETAIL=SOURCE=201-        BAD=$((BAD+1))\nDETAIL=SOURCE=202-        continue\nDETAIL=SOURCE=203-        ;;\nDETAIL=SOURCE=204-    esac\nDETAIL=SOURCE=205-\nDETAIL=SOURCE=206-    if [ \"$(basename \"$path\")\" != \"$bn\" ]; then\nDETAIL=SOURCE=207-      echo \"REFUSE_DELETE_BASENAME_MISMATCH path=$path expected=$bn\" >> \"$LOG\"\nDETAIL=SOURCE=208-      BAD=$((BAD+1))\nDETAIL=SOURCE=209-      continue\nDETAIL=SOURCE=210-    fi\nDETAIL=SOURCE=211-\nDETAIL=SOURCE=212-    if [ ! -f \"$path\" ] || [ -L \"$path\" ]; then\nDETAIL=SOURCE=213-      echo \"REFUSE_DELETE_INVALID_SOURCE path=$path\" >> \"$LOG\"\nDETAIL=SOURCE=--\nDETAIL=SOURCE=222-      BAD=$((BAD+1))\nDETAIL=SOURCE=223-      continue\nDETAIL=SOURCE=224-    fi\nDETAIL=SOURCE=225-\nDETAIL=SOURCE=226-    actual_sha=\"$(sha256sum \"$path\" 2>>\"$LOG\" | cut -d \" \" -f1 || true)\"\nDETAIL=SOURCE=227-\nDETAIL=SOURCE=228-    if [ \"$actual_sha\" != \"$sha\" ]; then\nDETAIL=SOURCE=229-      echo \"REFUSE_DELETE_SHA_MISMATCH path=$path\" >> \"$LOG\"\nDETAIL=SOURCE=230-      BAD=$((BAD+1))\nDETAIL=SOURCE=231-      continue\nDETAIL=SOURCE=232-    fi\nDETAIL=SOURCE=233-\nDETAIL=SOURCE=234:    echo \"PREDELETE_VALIDATION_OK path=$path size=$size sha=$sha\" >> \"$LOG\"\nDETAIL=SOURCE=235:  done < \"$FILES_TSV\"\nDETAIL=SOURCE=236-\nDETAIL=SOURCE=237:  echo \"PREDELETE_VALIDATION_END bad=$BAD\" >> \"$LOG\"\nDETAIL=SOURCE=238-fi\nDETAIL=SOURCE=239-\nDETAIL=SOURCE=240-if [ \"$BAD\" -eq 0 ]; then\nDETAIL=SOURCE=241:  echo \"LOCAL_PAYLOAD_DELETE_BEGIN\" >> \"$LOG\"\nDETAIL=SOURCE=242-\nDETAIL=SOURCE=243-  while IFS=\"$(printf \"\t\")\" read -r id kind size sha mt bn path mode parts; do\nDETAIL=SOURCE=244:    if rm -f -- \"$path\" 2>>\"$LOG\"; then\nDETAIL=SOURCE=245-      if [ ! -e \"$path\" ] && [ ! -L \"$path\" ]; then\nDETAIL=SOURCE=246:        DELETED_COUNT=$((DELETED_COUNT+1))\nDETAIL=SOURCE=247:        DELETED_BYTES=$((DELETED_BYTES+size))\nDETAIL=SOURCE=248:        echo \"LOCAL_PAYLOAD_DELETED path=$path bytes=$size\" >> \"$LOG\"\nDETAIL=SOURCE=249-      else\nDETAIL=SOURCE=250:        echo \"LOCAL_PAYLOAD_DELETE_CONFIRM_FAILED path=$path\" >> \"$LOG\"\nDETAIL=SOURCE=251-        BAD=$((BAD+1))\nDETAIL=SOURCE=252-      fi\nDETAIL=SOURCE=253-    else\nDETAIL=SOURCE=254:      echo \"LOCAL_PAYLOAD_DELETE_FAILED path=$path\" >> \"$LOG\"\nDETAIL=SOURCE=255-      BAD=$((BAD+1))\nDETAIL=SOURCE=256-    fi\nDETAIL=SOURCE=257:  done < \"$FILES_TSV\"\nDETAIL=SOURCE=258-\nDETAIL=SOURCE=259:  if [ \"$BAD\" -eq 0 ] && [ \"$DELETED_COUNT\" -eq \"$COUNT\" ]; then\nDETAIL=SOURCE=260-    LOCAL_DUMPS_DELETED=true\nDETAIL=SOURCE=261-  fi\nDETAIL=SOURCE=262-\nDETAIL=SOURCE=263:  echo \"LOCAL_PAYLOAD_DELETE_END deleted_count=$DELETED_COUNT deleted_bytes=$DELETED_BYTES bad=$BAD\" >> \"$LOG\"\nDETAIL=SOURCE=264-fi\nDETAIL=SOURCE=265-\nDETAIL=SOURCE=266-if [ \"$BAD\" -eq 0 ] && [ \"$LOCAL_DUMPS_DELETED\" = true ]; then\nDETAIL=SOURCE=267-  STATUS=\"OK\"\nDETAIL=SOURCE=268-else\nDETAIL=SOURCE=269-  STATUS=\"WARN\"\nDETAIL=SOURCE=270-fi\nDETAIL=SOURCE=271-\nDETAIL=SOURCE=272-jq -n \\\nDETAIL=SOURCE=273-  --arg job_id \"$JOB_ID\" \\\nDETAIL=SOURCE=274-  --arg status \"$STATUS\" \\\nDETAIL=SOURCE=275-  --arg node \"$NODE\" \\\nDETAIL=SOURCE=276-  --arg remote_a \"$DEST_A\" \\\nDETAIL=SOURCE=277-  --arg remote_b \"$DEST_B\" \\\nDETAIL=SOURCE=278-  --argjson count \"$COUNT\" \\\nDETAIL=SOURCE=279-  --argjson total_bytes \"$TOTAL\" \\\nDETAIL=SOURCE=280-  --argjson chunked_count \"$CHUNKED\" \\\nDETAIL=SOURCE=281-  --argjson chunk_size_bytes \"$CHUNK_SIZE_BYTES\" \\\nDETAIL=SOURCE=282-  --arg log \"$LOG\" \\\nDETAIL=SOURCE=283:  --argjson local_dumps_deleted \"$LOCAL_DUMPS_DELETED\" \\\nDETAIL=SOURCE=284:  --argjson deleted_count \"$DELETED_COUNT\" \\\nDETAIL=SOURCE=285:  --argjson deleted_bytes \"$DELETED_BYTES\" \\\nDETAIL=SOURCE=286:  \"{job_id:\\$job_id,status:\\$status,node:\\$node,remote_a:\\$remote_a,remote_b:\\$remote_b,count:\\$count,total_bytes:\\$total_bytes,chunked_count:\\$chunked_count,chunk_size_bytes:\\$chunk_size_bytes,log:\\$log,local_dumps_deleted:$local_dumps_deleted,deleted_count:$deleted_count,deleted_bytes:$deleted_bytes}\" \\\nDETAIL=SOURCE=287-  > \"$ROOT/latest-vm-local-dumps-cloud.json\"\nDETAIL=SOURCE=288-\nDETAIL=SOURCE=289:echo \"STATUS=$STATUS TS=$TS TYPE=vm-local-dumps-cloud BAD=$BAD COUNT=$COUNT CHUNKED=$CHUNKED TOTAL_BYTES=$TOTAL JOB=$JOB_ID REMOTE_A=$DEST_A REMOTE_B=$DEST_B LOCAL_DUMPS_DELETED=$LOCAL_DUMPS_DELETED DELETED_COUNT=$DELETED_COUNT DELETED_BYTES=$DELETED_BYTES LOG=$LOG\" > \"$OUT\"\nDETAIL=SOURCE=290-cat \"$OUT\"\nDETAIL=INSTALLED_LOGIC_END\nDETAIL=UNIT_STATE_BEGIN\nDETAIL=SERVICE_PROPERTY=Result=success\nDETAIL=SERVICE_PROPERTY=ExecMainStatus=0\nDETAIL=SERVICE_PROPERTY=ExecStart={ path=/usr/local/sbin/homelab-vm-local-dumps-2cloud ; argv[]=/usr/local/sbin/homelab-vm-local-dumps-2cloud ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }\nDETAIL=SERVICE_PROPERTY=LoadState=loaded\nDETAIL=SERVICE_PROPERTY=ActiveState=inactive\nDETAIL=SERVICE_PROPERTY=SubState=dead\nDETAIL=SERVICE_PROPERTY=FragmentPath=/etc/systemd/system/homelab-vm-local-dumps-2cloud.service\nDETAIL=TIMER_PROPERTY=Unit=homelab-vm-local-dumps-2cloud.service\nDETAIL=TIMER_PROPERTY=NextElapseUSecRealtime=Sun 2026-07-26 10:11:29 MSK\nDETAIL=TIMER_PROPERTY=LastTriggerUSec=Sun 2026-07-19 10:06:07 MSK\nDETAIL=TIMER_PROPERTY=LoadState=loaded\nDETAIL=TIMER_PROPERTY=ActiveState=active\nDETAIL=TIMER_PROPERTY=SubState=waiting\nDETAIL=TIMER_ENABLED=enabled\nDETAIL=TIMER_ACTIVE=active\nDETAIL=UNIT_STATE_END\nDETAIL=CURRENT_DUMP_INVENTORY_BEGIN\nDETAIL=CURRENT_DUMP_COUNT=12\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-lxc-110-2026_07_21-03_30_02.tar.zst|BYTES:329541843|MODE:644|OWNER:root:root|MTIME:2026-07-21 03:30:09.768869633 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-lxc-110-2026_07_22-03_30_01.tar.zst|BYTES:332951369|MODE:644|OWNER:root:root|MTIME:2026-07-22 03:30:08.768607650 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-lxc-110-2026_07_23-03_30_02.tar.zst|BYTES:336245409|MODE:644|OWNER:root:root|MTIME:2026-07-23 03:30:10.836949127 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-lxc-110-2026_07_24-03_30_02.tar.zst|BYTES:339140622|MODE:644|OWNER:root:root|MTIME:2026-07-24 03:30:10.776974593 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-lxc-112-2026_07_21-03_30_10.tar.zst|BYTES:222777732|MODE:644|OWNER:root:root|MTIME:2026-07-21 03:30:15.905963829 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-lxc-112-2026_07_22-03_30_09.tar.zst|BYTES:222794054|MODE:644|OWNER:root:root|MTIME:2026-07-22 03:30:14.284693312 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-lxc-112-2026_07_23-03_30_11.tar.zst|BYTES:222808025|MODE:644|OWNER:root:root|MTIME:2026-07-23 03:30:16.408035215 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-lxc-112-2026_07_24-03_30_11.tar.zst|BYTES:222859457|MODE:644|OWNER:root:root|MTIME:2026-07-24 03:30:16.202058480 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-qemu-150-2026_07_21-03_30_16.vma.zst|BYTES:7021952392|MODE:644|OWNER:root:root|MTIME:2026-07-21 03:31:06.571741495 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-qemu-150-2026_07_22-03_30_14.vma.zst|BYTES:7052176114|MODE:644|OWNER:root:root|MTIME:2026-07-22 03:31:02.895448212 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-qemu-150-2026_07_23-03_30_16.vma.zst|BYTES:7024165999|MODE:644|OWNER:root:root|MTIME:2026-07-23 03:31:08.099833995 +0300\nDETAIL=CURRENT_DUMP=PATH:/var/lib/vz/dump/vzdump-qemu-150-2026_07_24-03_30_16.vma.zst|BYTES:7016624549|MODE:644|OWNER:root:root|MTIME:2026-07-24 03:31:04.670807942 +0300\nDETAIL=CURRENT_DUMP_TOTAL_BYTES=30344037565\nDETAIL=CURRENT_DUMP_INVENTORY_END\nDETAIL=LAST_STATE_BEGIN\nDETAIL=LAST_STATE={\"status\":\"OK\",\"job_id\":\"homelab-pve01-vm-local-dumps-20260719T070607Z\",\"count\":3,\"total_bytes\":7567711895,\"local_dumps_deleted\":false,\"deleted_count\":null,\"deleted_bytes\":null,\"remote_a\":\"pve01-mail-01-crypt:homelab-backups/pve01/vm-local-dumps/homelab-pve01-vm-local-dumps-20260719T070607Z\",\"remote_b\":\"pve01-mail-02-crypt:homelab-backups/pve01/vm-local-dumps/homelab-pve01-vm-local-dumps-20260719T070607Z\"}\nDETAIL=LAST_STATE_END\nDETAIL=DELETE_POLICY_VALIDATION=PASS\nDETAIL=BACKUP_PAYLOAD_CHANGED=NO\nDETAIL=SECRET_VALUES_OUTPUT=NONE\nCHANGES_MADE=NO\n"
}
