SPB Git forge

spb/trouve-ka

Public ★ Pinned

Trouve-KA — moteur de recherche web indépendant, Québec-first. Crawler distribué, index OpenSearch, ranking bilingue, galerie d'images. En prod : www.trouve-ka.com

40commits 1branches 0releases
9.2 MBsize
maindefault branch
23 days agolast push
Python 51.9% TypeScript 32.7% JavaScript 4.8% CSS 4.1% Shell 2.9% HTML 1.8% SQL 1.5%
1.7 KB · 40 lines shellscript
Raw Blame History
1#!/bin/sh2# Trouve-KA — réplication croisée des sauvegardes (modèle pull)3# Author: Simon-Pierre Boucher4# Contact: contact@spboucher.ai5#6# Chaque node de données TIRE les sauvegardes de l'autre via une clé ssh à7# commande forcée (le détenteur de la clé ne peut QUE recevoir le tar du8# dossier de backups distant — aucun shell, aucun autre accès).9#   hub    (M2M32)  : tire les snapshots OpenSearch de M2M32b10#   search (M2M32b) : tire les dumps Postgres de M2M3211# Ainsi la perte totale d'un node laisse toujours une copie ≤ 24 h sur l'autre.1213PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"14export PATH15ROLE=$(cat "$HOME/.trouveka-role" 2>/dev/null || echo crawler)16LOG="$HOME/trouveka-backups/backup.log"17KEY="$HOME/.ssh/trouveka_pull"1819mkdir -p "$HOME/trouveka-backups"20log() { echo "$(date '+%F %T') [pull-$ROLE] $*" >> "$LOG"; }2122pull() { # $1 = hôte distant, $2 = dossier local de destination23  mkdir -p "$2"24  if /usr/bin/ssh -i "$KEY" -o ControlMaster=no -o ControlPath=none -o IdentitiesOnly=yes -o IdentityAgent=none -o ForwardAgent=no -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new \25      "simon-pierreboucher@$1" pull 2>>"$LOG" | tar -xf - -C "$2" 2>>"$LOG"; then26    log "réplication depuis $1 OK ($(ls "$2" | wc -l | tr -d ' ') fichiers)"27  else28    log "ÉCHEC réplication depuis $1"29  fi30  # Rotation locale du miroir (garder 14 jours de fichiers)31  find "$2" -type f -mtime +14 -delete 2>/dev/null32}3334case "$ROLE" in35  hub) pull 192.168.2.77 "$HOME/trouveka-backups/os-mirror" ;;36  search) pull 192.168.2.90 "$HOME/trouveka-backups/pg-mirror" ;;37  *) log "aucun rôle de réplication" ;;38esac39exit 040