403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/clients/client1/web16/web/scripts/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/clients/client1/web16/web/scripts/truncate-data.sh
#!/usr/bin/env bash
# Leert die operativen Datentabellen von pacim_saas, behält Stammdaten + Einstellungen
# (events, products, organizers, settings, users, payment_methods, …) und das Schema selbst.
#
# Geleert werden:
#   - DB-Tabellen: bookings, invoices, invoice_items, booking_products, payments,
#     pdf_documents, history_log, files, aida_prebookings, checkins,
#     customers, messages, import_batches, import_files, import_runs
#   - Datei-Archive: data/trash/* (komplett, inkl. Datums-Unterordner)
#                    data/aida/*  (Inbox)
#
# Aufruf:
#   ./scripts/truncate-data.sh            # mit Sicherheitsabfrage
#   ./scripts/truncate-data.sh --yes      # ohne Rückfrage

set -e

HOST="localhost"
USER="root"
PASS="root"
DB="pacim_saas"

# Wurzel relativ zum Script-Verzeichnis ermitteln, damit der Aufruf von beliebigen Pfaden funktioniert.
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"

TABLES=(
    bookings
    invoices
    invoice_items
    booking_products
    payments
    pdf_documents
    history_log
    files
    aida_prebookings
    checkins
    customers
    messages
    import_batches
    import_files
    import_runs
)

FILE_DIRS=(
    "$ROOT_DIR/data/trash"
    "$ROOT_DIR/data/aida"
)

echo "=========================================="
echo "  PaCIM · Tabellen + Datei-Archive leeren ($DB)"
echo "  Ziel-Tabellen: ${TABLES[*]}"
echo "  Ziel-Ordner:   ${FILE_DIRS[*]}"
echo "=========================================="

if [ "${1:-}" != "--yes" ]; then
    read -p "Wirklich leeren? (yes/n): " ans
    if [ "$ans" != "yes" ]; then
        echo "Abgebrochen."
        exit 1
    fi
fi

# Foreign-Key-Checks temporär aus, dann TRUNCATE pro Tabelle.
# TRUNCATE setzt AUTO_INCREMENT zurück; reine DELETEs würden das nicht tun.
SQL="SET FOREIGN_KEY_CHECKS=0;"
for t in "${TABLES[@]}"; do
    SQL+=" TRUNCATE TABLE \`$t\`;"
done
SQL+=" SET FOREIGN_KEY_CHECKS=1;"

mysql -h "$HOST" -u "$USER" -p"$PASS" "$DB" -e "$SQL"

# Datei-Archive leeren — alles unterhalb der Ordner inklusive Unterordner.
# `.gitkeep` und andere Dot-Files an der Wurzel bleiben erhalten, damit Git die Ordner behält.
for dir in "${FILE_DIRS[@]}"; do
    if [ -d "$dir" ]; then
        # Find: alles im Ordner außer dem Ordner selbst und .gitkeep löschen.
        find "$dir" -mindepth 1 ! -name '.gitkeep' -exec rm -rf {} + 2>/dev/null || true
    fi
done

echo ""
echo "Fertig. Folgende Tabellen sind jetzt leer:"
for t in "${TABLES[@]}"; do
    cnt=$(mysql -h "$HOST" -u "$USER" -p"$PASS" -N -e "SELECT COUNT(*) FROM \`$DB\`.\`$t\`;")
    printf "  %-20s %s rows\n" "$t" "$cnt"
done

echo ""
echo "Datei-Archive:"
for dir in "${FILE_DIRS[@]}"; do
    if [ -d "$dir" ]; then
        # Anzahl verbleibender Einträge (ohne .gitkeep) zählen — sollte 0 sein.
        cnt=$(find "$dir" -mindepth 1 ! -name '.gitkeep' 2>/dev/null | wc -l | tr -d ' ')
        printf "  %-30s %s Einträge übrig\n" "${dir#$ROOT_DIR/}" "$cnt"
    else
        printf "  %-30s (Ordner nicht vorhanden)\n" "${dir#$ROOT_DIR/}"
    fi
done

Youez - 2016 - github.com/yon3zu
LinuXploit