Erstellung eines Roboters zum Senden von DirectAdmin-Hostingsystem-Backups an den Amazon S3-Dienst
In diesem Artikel zeigen wir Ihnen, wie Sie einen Backup-Bot für DirectAdmin erstellen und die Backups an Amazon S3 senden. Bleiben Sie dran.

Erstellung eines Roboters zum Senden von DirectAdmin-Hostingsystem-Backups an den Amazon S3-Dienst

Dieser Artikel zeigt Ihnen, wie Sie mithilfe eines Bots DirectAdmin-Hosting-Backups in Amazon S3 hochladen und alte Dateien löschen. Die Schritte umfassen das Erstellen eines S3-Kontos, das Konfigurieren von IAM und das Schreiben eines Automatisierungsskripts.
0 Aktien
0
0
0
0

Voraussetzungen

Um diesen Backup-Bot zu implementieren, benötigen Sie einen grundlegenden Server und eine AWS-Umgebung. Bitte prüfen und stellen Sie Folgendes bereit:

  • SSH-Zugriff Zugriff auf den DirectAdmin-Server sudo/root.
  • Installation AWS CLI (Version v2 bevorzugt) oder Tools wie rclone.
  • Eins S3-Bucket In AWS mit dem gewünschten Namen und der entsprechenden Region.
  • Ein Benutzer ICH BIN Bei eingeschränktem Zugriff auf diesen Bucket oder bei Verwendung IAM-Rolle (Falls die Ausführung auf EC2 erfolgt).
  • Genügend Speicherplatz auf dem Server, um Backups vorübergehend zu speichern.
  • Aktivierung Lebenszyklusrichtlinie In S3 zur Löschung nach 7 Tagen.

Überblick über den Arbeitsablauf

Der vereinfachte Prozessablauf ist wie folgt:

  1. DirectAdmin erstellt eine Sicherungskopie und speichert sie in einem lokalen Ordner (z. B. /home/admin/backups).
  2. Das Skript (der Bot) läuft nach einem Zeitplan und lädt Backups auf S3 hoch.
  3. Nach erfolgreichem Upload lädt das Skript lokale Dateien, die größer als … sind. 2 Tage Es entfernt das Alter.
  4. In S3 one Lebenszyklus Es ist so eingestellt, dass jedes Objekt anschließend beibehalten wird. 7 Tage Löscht.

Schrittweise Umsetzung

1) Erstellen Sie einen S3-Bucket und legen Sie den Lebenszyklus fest (Löschung nach 7 Tagen).

Sie können einen Bucket über die AWS-Konsole oder mithilfe der AWS CLI erstellen. Beispielbefehl zur Bucket-Erstellung (Beispielregion = eu-central-1):

aws s3api create-bucket --bucket my-da-backups-bucket --region eu-central-1 --create-bucket-configuration LocationConstraint=eu-central-1

Beispiel einer Lebenszyklusrichtlinie (Datei) lifecycle.json):

{"Rules":[{"ID":"ExpireBackupsAfter7Days","Prefix":"","Status":"Enabled","Expiration":{"Days":7},"NoncurrentVersionExpiration":{"NoncurrentDays":7}}]}

Anwenden einer Richtlinie über die CLI:

aws s3api put-bucket-lifecycle-configuration --bucket my-da-backups-bucket --lifecycle-configuration file://lifecycle.json

Empfehlungen: Wenn Sie die Speicherkosten reduzieren müssen, können Sie Speicherklassen wie diese verwenden. STANDARD_IA Oder INTELLIGENTE TIERING Wenn die Versionsverwaltung aktiviert ist, muss auch die Richtlinie „NoncurrentVersionExpiration“ festgelegt werden.

2) Erstellen Sie eine IAM-Richtlinie und einen Benutzer mit den minimal erforderlichen Zugriffsrechten.

Beispiel einer auf einen Bucket beschränkten Richtlinie (JSON-Datei):

{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:PutObject","s3:GetObject","s3:ListBucket","s3:DeleteObject","s3:PutObjectAcl"],"Resource":["arn:aws:s3:::my-da-backups-bucket","arn:aws:s3:::my-da-backups-bucket/*"]}]}

Sicherheitshinweis: Es ist besser, zufällige Schlüssel anstelle von statischen Schlüsseln zu verwenden. IAM-Rolle (Falls Ihr Server auf EC2 basiert). Erwägen Sie außerdem, den Zugriff anhand der IP-Adresse oder zusätzlicher Bedingungen einzuschränken.

3) Installieren und konfigurieren Sie die AWS CLI auf dem Server.

Installationsbeispiel für Debian/Ubuntu und CentOS/RHEL:

sudo apt update && sudo apt install -y awscli
sudo yum install -y awscli

Konfiguration für den Zugriffsschlüssel, falls erforderlich:

aws configure --profile da-backup

Wenn Sie IAM-Rollen auf EC2 verwenden, ist keine Konfiguration erforderlich.

4) Beispielskript: upload_and_clean.sh

Dieses Skript lädt alle Backups in S3 hoch und löscht anschließend lokale Dateien, die älter als zwei Tage sind und sich noch in S3 befinden. (Platzieren Sie den folgenden Code im entsprechenden Pfad und machen Sie ihn ausführbar.)

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'

# Configuration
BACKUP_DIR="/home/admin/backups"
BUCKET="my-da-backups-bucket"
S3_PREFIX="directadmin"
AWS_PROFILE="da-backup"
LOGFILE="/var/log/da_s3_backup.log"
DAYS_LOCAL=2

# Helpers
log() { echo "$(date '+%F %T') $*" | tee -a "$LOGFILE"; }

aws_cmd() {
  if [ -z "${AWS_PROFILE:-}" ]; then
    aws "$@"
  else
    aws --profile "$AWS_PROFILE" "$@"
  fi
}

# Upload files
log "Starting upload from $BACKUP_DIR to s3://$BUCKET/$S3_PREFIX"
aws_cmd s3 cp "$BACKUP_DIR" "s3://$BUCKET/$S3_PREFIX/" --recursive --only-show-errors --storage-class STANDARD --sse AES256
if [ $? -ne 0 ]; then
  log "Error: upload to S3 failed."
  exit 1
fi
log "Upload completed."

# Remove local files older than DAYS_LOCAL if present in S3
log "Searching for local files older than $DAYS_LOCAL days"
find "$BACKUP_DIR" -type f -mtime +"$DAYS_LOCAL" -print0 | while IFS= read -r -d '' file; do
  base=$(basename "$file")
  s3key="$S3_PREFIX/$base"
  if aws_cmd s3api head-object --bucket "$BUCKET" --key "$s3key" >/dev/null 2>&1; then
    log "Removing local file: $file (found in S3)"
    rm -f "$file" && log "Deleted: $file" || log "Error deleting: $file"
  else
    log "S3 object not found: s3://$BUCKET/$s3key — not removed locally."
  fi
done

log "Operation finished."

Tipp: Speichern Sie die Skriptdatei beispielsweise in /usr/local/bin/upload_and_clean.sh Setzen und mit chmod +x Ausführen. Pfad BACKUP_DIR Passen Sie die Einstellungen entsprechend Ihren DirectAdmin-Einstellungen an.

5) Planung der automatischen Ausführung (Cron- oder systemd-Timer)

Täglich um 02:00 Uhr mit cron ausführen:

0 2 * * * /usr/local/bin/upload_and_clean.sh >> /var/log/da_s3_backup.log 2>&1

Wenn Sie möchten, können Sie das tun. systemd-Timer Entwickelt für bessere Steuerung und Protokollierung.

6) Überprüfung und Sicherstellung des Erfolgs der Operation

Überprüfen Sie die Protokolle in /var/log/da_s3_backup.log Und überprüfen Sie die Dateien in S3:

So sehen Sie die Liste der Dateien in S3:

aws s3 ls s3://my-da-backups-bucket/directadmin

Überprüfen Sie die Lebensdauer über die Konsole oder mit einem CLI-Befehl, um sicherzustellen, dass die Löschung nach 7 Tagen erfolgt.

Erweiterte Optionen und Verbesserungen

  • Mehrteiliger Upload Bei großen Dateien: Die AWS CLI unterstützt dies automatisch, aber bei sehr großen Dateien können Sie die Einstellungen für die Parallelverarbeitung ändern.
  • Verwendung von SSE-KMS Zur Verschlüsselung mit einem Enterprise-KMS-Schlüssel: aws s3 cp Aus --sse aws:kms --sse-kms-key-id "arn:aws:kms:..."" Verwenden.
  • Aktivieren S3-Objektsperre Und Versionierung, falls Sie Schutz vor ungewolltem Löschen benötigen.
  • Wenn ausgehender Datenverkehr kostspielig ist, platzieren Sie den Server in der Nähe der S3-Region oder in einer direkt angeschlossenen Infrastruktur.
  • Fügen Sie eine Benachrichtigung hinzu, falls der Upload fehlschlägt, indem Sie AWS SNS oder Webhook verwenden, um eine Nachricht an Slack/E-Mail zu senden.

Wichtige Sicherheitstipps

Einige wichtige Tipps zur sicheren Aufbewahrung von Backups:

  • Minimales Privileg: Verwenden Sie minimale Berechtigungen für IAM.
  • Vermeiden Sie statische Schlüssel: Speichern Sie Zugriffsschlüssel nicht in einer Textdatei; wenn Sie EC2 verwenden, nutzen Sie eine IAM-Rolle.
  • Verschlüsselung: Verwenden Sie serverseitige Verschlüsselung (SSE) oder Vor-Upload-Verschlüsselung (GPG- oder rclone-Verschlüsselung).
  • Protokollierung: Aktivieren Sie die Zugriffsprotokolle von S3 und CloudTrail, um jeden Vorgang aufzuzeichnen.

Überwachung, Alarmierung und Tests zur Notfallwiederherstellung (DR).

Empfehlungen zur Sicherstellung des kontinuierlichen Betriebs:

  • Testen Sie regelmäßig den Prozess der Wiederherstellung von Backups von S3 auf den Server und nehmen Sie diese Tests in Ihren monatlichen Zeitplan auf.
  • Verwendung von S3-Inventar Und CloudWatch Zur Überwachung der Upload-Rate und von Fehlern.
  • Richten Sie eine Benachrichtigung ein, falls ein Fehler oder ein Upload-Fehler auftritt.

Vergleich der Optionen: awscli vs rclone vs s3fs

AWS CLIEinfach, beliebt und komfortabel. Unterstützt AWS-Lebenszyklus und Verschlüsselung.

rcloneZusätzliche Funktionen für Synchronisierung, clientseitige Verschlüsselung und Bandbreitenkontrolle. Geeignet, wenn Sie die Bandbreite begrenzen oder vor dem Hochladen verschlüsseln müssen.

s3fs: Bindet den Bucket als Dateisystem ein, kann aber bei großen Sicherungsdateien zu geringerer Leistung und Stabilität führen.

Warum ist die Wahl des richtigen Standorts wichtig?

Die Wahl des richtigen Standorts kann die Upload-Zeit und die Kosten des ausgehenden Datenverkehrs reduzieren. Ein Standort in der Nähe der S3-Region verringert die Latenz und die Betriebszeit.

Wenn Sie zusätzlichen Schutz, dedizierte Verbindungen oder Leistungsunterschiede benötigen, kann eine Infrastruktur mit mehreren Standorten und speziellen Funktionen helfen.

Anwendungsbeispiel: Einrichtung eines VPS-Handels

  • Wählen Sie einen Standort in der Nähe der Börse oder des Handelsservers, um die Latenz zu reduzieren.
  • Aktivieren Sie den DDoS-Schutz für den betreffenden Server.
  • Verschieben Sie DirectAdmin-Backups auf einen nahegelegenen S3-Server, um die Backup-Zeit zu verkürzen.

Zusammenfassung und Schlusspunkte

Die Entwicklung eines Bots umfasst drei Hauptteile: sicheres Hochladen auf S3, lokales Löschen älterer Dateien, 2 Tage Nach Bestätigung des Uploads und Konfiguration des Lebenszyklus in S3 für die Aufbewahrung 7 Tage.

Nutzen Sie IAM mit minimalem Zugriff, Verschlüsselung und angemessener Überwachung. Testen Sie den Wiederherstellungsprozess stets, um die Wiederherstellung sicherzustellen.

Beispieldateien und Ressourcen

Häufig gestellte Fragen

Das könnte Ihnen auch gefallen