Project Delta Script (PRO)
#!/bin/bash # Revert using backup of previous hashes cp previous_hashes.bak previous_hashes.json # Then push the old versions from a backup folder rsync -az --relative "/backups/app/*" "deploy@192.168.1.100:/opt/app/" Idempotency Patterns An idempotent delta script includes a pre-flight check :
with open("manifest.json", "r") as mf: manifest = json.load(mf) manifest["deltas"] = deltas with open("manifest.json", "w") as mf: json.dump(manifest, mf) #!/bin/bash # Read deltas from manifest.json (using jq) for file in $(jq -r '.deltas[].file' manifest.json); do echo "Transferring $file" rsync -az --relative "/local/app/$file" "deploy@192.168.1.100:/opt/app/" done Update state cp previous_hashes.json previous_hashes.bak python -c "import json; h=json.load(open('previous_hashes.json')); m=json.load(open('manifest.json')); [h.update(d['file']:d['hash']) for d in m['deltas']]; json.dump(h, open('previous_hashes.json','w'))" Step 4: Rollback Procedure The rollback script restores the previous state: Project Delta Script
import os, json, hashlib def hash_file(path): h = hashlib.sha256() with open(path, 'rb') as f: for chunk in iter(lambda: f.read(4096), b""): h.update(chunk) return h.hexdigest() "w") as mf: json.dump(manifest
deltas = [] for f, h in local_files.items(): if f not in previous or previous[f] != h: deltas.append("file": f, "action": "update", "hash": h) [h.update(d['file']:d['hash']) for d in m['deltas']]