31 lines
6.5 KiB
JSON
31 lines
6.5 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "HOMELAB-VM-2CLOUD-FILESET-TRACE-439",
|
|
"status": "OK",
|
|
"rc": 0,
|
|
"host": "pve01",
|
|
"mode": "read-only",
|
|
"component": "cluster-audit",
|
|
"started_at_utc": "2026-07-24T10:23:03Z",
|
|
"finished_at_utc": "2026-07-24T10:23:03Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5763f2f8edc75fcf6f3951f8c95896d1cc112ceccb6cf5b64a383f540a4deb8e",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "08b3a769b8e38eaa1acec915352fb328180d70caa7ff6cd9d1ec0da426262752",
|
|
"command_sha256": "83fd063427bb5f7d0ab471a7f689bc234ac30842988be5c364a0bf8ce043f395",
|
|
"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": "fbfb933d600dfcd687148901187dd377972d1044a5d915a6f8f9bc1e06e64ad1",
|
|
"sanitized_output_sha256": "fbfb933d600dfcd687148901187dd377972d1044a5d915a6f8f9bc1e06e64ad1",
|
|
"output_truncated_in_json": false,
|
|
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
|
"output": "DETAIL=SCRIPT_SHA256=0ded6ba72e49b9cf7522c7f3d8840cc1026d2a173d4909dd3b4cfc5ff8831115\nDETAIL=FILESET_SOURCE_BEGIN\nDETAIL=SOURCE_LINE=0026:WORK=\"$ROOT/$JOB_ID\"\nDETAIL=SOURCE_LINE=0027:mkdir -p \"$WORK\"\nDETAIL=SOURCE_LINE=0028:\nDETAIL=SOURCE_LINE=0029:FILES_TSV=\"$WORK/files.tsv\"\nDETAIL=SOURCE_LINE=0030:CHKS=\"$WORK/checksums.txt\"\nDETAIL=SOURCE_LINE=0031:MAN=\"$WORK/manifest.json\"\nDETAIL=SOURCE_LINE=0032:\nDETAIL=SOURCE_LINE=0033:: > \"$FILES_TSV\"\nDETAIL=SOURCE_LINE=0034:: > \"$CHKS\"\nDETAIL=SOURCE_LINE=0035:: > \"$LOG\"\nDETAIL=SOURCE_LINE=0036:\nDETAIL=SOURCE_LINE=0037:echo \"job_id=$JOB_ID\" >> \"$LOG\"\nDETAIL=SOURCE_LINE=0038:echo \"vmids=$VMIDS\" >> \"$LOG\"\nDETAIL=SOURCE_LINE=0039:echo \"chunk_size_bytes=$CHUNK_SIZE_BYTES\" >> \"$LOG\"\nDETAIL=SOURCE_LINE=0040:\nDETAIL=SOURCE_LINE=0041:for id in $VMIDS; do\nDETAIL=SOURCE_LINE=0042: 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_LINE=0043: if [ -z \"$F\" ] || [ ! -f \"$F\" ]; then\nDETAIL=SOURCE_LINE=0044: echo \"MISSING vmid=$id\" >> \"$LOG\"\nDETAIL=SOURCE_LINE=0045: BAD=$((BAD+1))\nDETAIL=SOURCE_LINE=0046: continue\nDETAIL=SOURCE_LINE=0047: fi\nDETAIL=SOURCE_LINE=0048:\nDETAIL=SOURCE_LINE=0049: BN=\"$(basename \"$F\")\"\nDETAIL=SOURCE_LINE=0050: SIZE=\"$(stat -c %s \"$F\" 2>/dev/null || echo 0)\"\nDETAIL=SOURCE_LINE=0051: 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_LINE=0052: KIND=\"unknown\"\nDETAIL=SOURCE_LINE=0053: echo \"$BN\" | grep -q \"^vzdump-qemu-\" && KIND=\"qemu\"\nDETAIL=SOURCE_LINE=0054: echo \"$BN\" | grep -q \"^vzdump-lxc-\" && KIND=\"lxc\"\nDETAIL=SOURCE_LINE=0055: SHA=\"$(sha256sum \"$F\" | cut -d\" \" -f1)\"\nDETAIL=SOURCE_LINE=0056: printf \"%s %s\\n\" \"$SHA\" \"$BN\" >> \"$CHKS\"\nDETAIL=SOURCE_LINE=0057:\nDETAIL=SOURCE_LINE=0058: MODE=\"direct\"\nDETAIL=SOURCE_LINE=0059: PARTS=0\nDETAIL=SOURCE_LINE=...\nDETAIL=SOURCE_LINE=0065: mkdir -p \"$CDIR\"\nDETAIL=SOURCE_LINE=0066: echo \"SPLIT file=$BN size=$SIZE chunk_size=$CHUNK_SIZE_SPLIT dir=$CDIR\" >> \"$LOG\"\nDETAIL=SOURCE_LINE=0067: split -b \"$CHUNK_SIZE_SPLIT\" -d -a 4 \"$F\" \"$CDIR/part-\" >> \"$LOG\" 2>&1\nDETAIL=SOURCE_LINE=0068: PARTS=\"$(find \"$CDIR\" -maxdepth 1 -type f -name 'part-*' | wc -l)\"\nDETAIL=SOURCE_LINE=0069: (cd \"$CDIR\" && sha256sum part-* > chunks.sha256)\nDETAIL=SOURCE_LINE=0070: if [ \"$PARTS\" -le 0 ]; then\nDETAIL=SOURCE_LINE=0071: echo \"BAD split produced no chunks file=$BN\" >> \"$LOG\"\nDETAIL=SOURCE_LINE=0072: BAD=$((BAD+1))\nDETAIL=SOURCE_LINE=0073: fi\nDETAIL=SOURCE_LINE=0074: fi\nDETAIL=SOURCE_LINE=0075:\nDETAIL=SOURCE_LINE=0076: 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_LINE=0077: COUNT=$((COUNT+1))\nDETAIL=SOURCE_LINE=0078: TOTAL=$((TOTAL+SIZE))\nDETAIL=SOURCE_LINE=0079:done\nDETAIL=SOURCE_LINE=0080:\nDETAIL=SOURCE_LINE=0081:python3 - \"$JOB_ID\" \"$NODE\" \"$TS\" \"$VMIDS\" \"$COUNT\" \"$TOTAL\" \"$CHUNKED\" \"$CHUNK_SIZE_BYTES\" \"$FILES_TSV\" > \"$MAN\" <<'PY'\nDETAIL=SOURCE_LINE=0082:import json, sys, pathlib\nDETAIL=SOURCE_LINE=0083:job,node,ts,vmids,count,total,chunked,chunk_size,tsv=sys.argv[1:]\nDETAIL=SOURCE_LINE=0084:items=[]\nDETAIL=SOURCE_LINE=0085:for line in pathlib.Path(tsv).read_text().splitlines():\nDETAIL=SOURCE_LINE=0086: p=line.split(\"\\t\")\nDETAIL=SOURCE_LINE=0087: if len(p)>=9:\nDETAIL=SOURCE_LINE=0088: items.append({\nDETAIL=SOURCE_LINE=0089: \"vmid\":p[0],\nDETAIL=SOURCE_LINE=...\nDETAIL=SOURCE_LINE=0120: CDIR=\"$CHUNK_ROOT/$JOB_ID/$bn.chunks\"\nDETAIL=SOURCE_LINE=0121: echo \"UPLOAD_CHUNKED dest=$DEST file=$bn size=$size parts=$parts\" >> \"$LOG\"\nDETAIL=SOURCE_LINE=0122: rclone mkdir \"$DEST/files/$bn.chunks\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE_LINE=0123: for part in \"$CDIR\"/part-*; do\nDETAIL=SOURCE_LINE=0124: [ -f \"$part\" ] || continue\nDETAIL=SOURCE_LINE=0125: pn=\"$(basename \"$part\")\"\nDETAIL=SOURCE_LINE=0126: rclone copyto \"$part\" \"$DEST/files/$bn.chunks/$pn\" --transfers 1 --checkers 4 >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE_LINE=0127: done\nDETAIL=SOURCE_LINE=...\nDETAIL=SOURCE_LINE=0130: echo \"UPLOAD_DIRECT dest=$DEST file=$bn size=$size\" >> \"$LOG\"\nDETAIL=SOURCE_LINE=0131: rclone copyto \"$path\" \"$DEST/files/$bn\" --transfers 1 --checkers 4 >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE_LINE=0132: fi\nDETAIL=SOURCE_LINE=0133: done < \"$FILES_TSV\"\nDETAIL=SOURCE_LINE=0134:\nDETAIL=SOURCE_LINE=0135: rclone copyto \"$CHKS\" \"$DEST/checksums.txt\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE_LINE=0136: rclone copyto \"$FILES_TSV\" \"$DEST/files.tsv\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE_LINE=0137: rclone copyto \"$MAN\" \"$DEST/manifest.json\" >> \"$LOG\" 2>&1 || BAD=$((BAD+1))\nDETAIL=SOURCE_LINE=0138:}\nDETAIL=SOURCE_LINE=0139:\nDETAIL=SOURCE_LINE=0140:verify_one_dest() {\nDETAIL=FILESET_SOURCE_END\nDETAIL=ARCHIVES_CHANGED=NO\nDETAIL=SERVICE_STARTED=NO\nDETAIL=SECRET_VALUES_OUTPUT=NONE\nDETAIL=FILESET_TRACE=PASS\nCHANGES_MADE=NO\n"
|
|
}
|