From d06ef901bdc7777e5ef8ecbbbb421c13ca74a0a6 Mon Sep 17 00:00:00 2001 From: DocTator Date: Thu, 22 May 2025 08:54:45 -0400 Subject: [PATCH] Auto-commit from giteapush.sh at 2025-05-22 08:54:45 --- .../bash/documentation/disk_mitigator.md | 64 ------- .../bash/documentation/venv-backup-script.md | 169 ------------------ 2 files changed, 233 deletions(-) delete mode 100644 miscellaneous/bash/documentation/disk_mitigator.md delete mode 100644 miscellaneous/bash/documentation/venv-backup-script.md diff --git a/miscellaneous/bash/documentation/disk_mitigator.md b/miscellaneous/bash/documentation/disk_mitigator.md deleted file mode 100644 index 0398ac3..0000000 --- a/miscellaneous/bash/documentation/disk_mitigator.md +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/bash - -# === Prompt for Target === -read -p "Enter SSH username: " USERNAME -read -p "Enter server hostname (e.g. krang.internal): " HOSTNAME - -REMOTE="$USERNAME@$HOSTNAME" - -# === Alert Config (local alerts) === -TELEGRAM_BOT_TOKEN="8178867489:AAH0VjN7VnZSCIWasSz_y97iBLLjPJA751k" -TELEGRAM_CHAT_ID="1559582356" -MASTODON_INSTANCE="https://chatwithus.live" -MASTODON_TOKEN="rimxBLi-eaJAcwagkmoj6UoW7Lc473tQY0cOM041Euw" -TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S") - -# === Remote Disk Check + Cleanup Script === -REMOTE_SCRIPT=$(cat << 'EOF' -#!/bin/bash -THRESHOLD_PERCENT=15 -HOST=$(hostname) -ALERTED=false - -df -h --output=target,pcent | tail -n +2 | while read -r mount usage; do - percent=$(echo "$usage" | tr -d '%') - if [ "$percent" -ge $((100 - THRESHOLD_PERCENT)) ]; then - echo "[!] $HOST: Low space on $mount ($usage used). Running cleanup..." - - apt-get clean -y > /dev/null 2>&1 - journalctl --vacuum-time=3d > /dev/null 2>&1 - docker system prune -af --volumes > /dev/null 2>&1 - rm -rf /tmp/* /var/tmp/* - - echo "[โœ“] $HOST: Cleanup complete for $mount" - else - echo "[OK] $HOST: $mount has enough space ($usage used)" - fi -done -EOF -) - -# === Run Remote Script via SSH === -echo "[*] Connecting to $REMOTE..." -OUTPUT=$(ssh "$REMOTE" "$REMOTE_SCRIPT") - -# === Log and Notify === -echo "[$TIMESTAMP] === Remote Disk Check on $HOSTNAME ===" >> /var/log/disk_mitigator.log -echo "$OUTPUT" >> /var/log/disk_mitigator.log - -# Alert if low space was found -if echo "$OUTPUT" | grep -q "\[!\]"; then - MSG="โš ๏ธ Disk cleanup triggered on $HOSTNAME via Krang.\n\n$OUTPUT" - - # Send alerts - curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \ - -d chat_id="$TELEGRAM_CHAT_ID" \ - -d text="$MSG" > /dev/null - - curl -s -X POST "$MASTODON_INSTANCE/api/v1/statuses" \ - -H "Authorization: Bearer $MASTODON_TOKEN" \ - -d "status=$MSG" \ - -d "visibility=unlisted" > /dev/null -fi - -echo "[โœ“] Done. Output logged and alerts (if any) sent." diff --git a/miscellaneous/bash/documentation/venv-backup-script.md b/miscellaneous/bash/documentation/venv-backup-script.md deleted file mode 100644 index b0cf830..0000000 --- a/miscellaneous/bash/documentation/venv-backup-script.md +++ /dev/null @@ -1,169 +0,0 @@ -# ๐Ÿ Python Virtual Environment Backup Script - -This Bash script automates the process of backing up Python virtual environments. It performs the following steps: - -1. Locates virtual environments in a specified root directory -2. Archives them into a compressed `.tar.gz` file -3. Transfers the backup to a remote server using `rsync` -4. Deletes local backups older than a specified retention period - ---- - -## ๐Ÿ“ฆ Features - -- Detects virtual environments by checking for `bin/activate` -- Compresses selected environments into a tarball -- Transfers the backup to a remote server via SSH -- Deletes backups older than a retention threshold -- Uses strict error handling to avoid silent failures - ---- - -## โš™๏ธ Configuration - -| Variable | Description | -|------------------|-------------------------------------------------------------------------| -| `VENV_ROOT` | Directory where virtual environments are stored | -| `BACKUP_DIR` | Local directory where the backup tarballs are saved | -| `RETENTION_DAYS` | Number of days to retain local backups | -| `REMOTE_USER` | SSH user for the remote backup server | -| `REMOTE_HOST` | Hostname or IP address of the remote server | -| `REMOTE_PATH` | Remote directory where backups will be copied via `rsync` | - ---- - -## ๐Ÿ“ Script Walkthrough - -### 1. Setup - -```bash -#!/usr/bin/env bash -set -euo pipefail -``` - -- Enables strict error handling to prevent unnoticed failures. - ---- - -### 2. Define Variables - -```bash -VENV_ROOT="/home/doc" -BACKUP_DIR="$VENV_ROOT/backups" -RETENTION_DAYS=7 - -REMOTE_USER="root" -REMOTE_HOST="thevault.bounceme.net" -REMOTE_PATH="/mnt/backup3/pythonvenvs" -``` - ---- - -### 3. Generate Timestamped Backup Filename - -```bash -DATE=$(date +'%F_%H-%M-%S') -BACKUP_FILE="$BACKUP_DIR/venvs_backup_$DATE.tar.gz" -``` - ---- - -### 4. Ensure Backup Directory Exists - -```bash -mkdir -p "$BACKUP_DIR" -``` - ---- - -### 5. Locate Virtual Environments - -```bash -mapfile -t VENV_DIRS < <( - find "$VENV_ROOT" -maxdepth 1 -type d \ - -exec test -f "{}/bin/activate" \; -print -) -``` - -If no environments are found, the script exits: - -```bash -if [ ${#VENV_DIRS[@]} -eq 0 ]; then - echo "โŒ No virtual environments found under $VENV_ROOT" - exit 1 -fi -``` - ---- - -### 6. Extract Environment Names and Archive - -```bash -VENV_NAMES=() -for path in "${VENV_DIRS[@]}"; do - VENV_NAMES+=( "$(basename "$path")" ) -done - -echo "๐Ÿ”„ Backing up virtual environments: ${VENV_NAMES[*]}" -tar czf "$BACKUP_FILE" -C "$VENV_ROOT" "${VENV_NAMES[@]}" -echo "โœ… Local backup saved to $BACKUP_FILE" -``` - ---- - -### 7. Sync Backup to Remote Server - -```bash -echo "๐Ÿ“ก Sending backup to ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/" -rsync -az --progress "$BACKUP_FILE" \ - "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/" -``` - -Check if sync was successful: - -```bash -if [ $? -ne 0 ]; then - echo "โŒ Remote sync failed!" - exit 1 -else - echo "โœ… Remote sync succeeded." -fi -``` - ---- - -### 8. Cleanup Old Backups - -```bash -echo "๐Ÿ—‘๏ธ Removing local backups older than $RETENTION_DAYS days..." -find "$BACKUP_DIR" -type f -name "venvs_backup_*.tar.gz" \ - -mtime +$RETENTION_DAYS -delete -echo "๐ŸŽ‰ Backup and cleanup complete." -``` - ---- - -## ๐Ÿงช Example Output - -```text -๐Ÿ”„ Backing up virtual environments: venv1 venv2 -โœ… Local backup saved to /home/doc/backups/venvs_backup_2025-05-01_02-00-00.tar.gz -๐Ÿ“ก Sending backup to root@thevault.bounceme.net:/mnt/backup3/pythonvenvs/ -โœ… Remote sync succeeded. -๐Ÿ—‘๏ธ Removing local backups older than 7 days... -๐ŸŽ‰ Backup and cleanup complete. -``` - ---- - -## ๐Ÿ›ก๏ธ Notes - -- Ensure SSH access is set up for passwordless login to the remote host. -- Confirm that `rsync` is installed on both the local and remote systems. -- Consider running this script via `cron` or `systemd` for automation. - ---- - -## ๐Ÿ–‹๏ธ Author - -Maintained by **Doc**. Custom backup tooling for Genesis Hosting infrastructure.