Creación de un robot para enviar copias de seguridad del sistema de alojamiento de DirectAdmin al servicio Amazon S3
En este artículo, te enseñaremos a crear un bot de respaldo para DirectAdmin y enviarlo a Amazon S3. ¡No te lo pierdas!.

Creación de un robot para enviar copias de seguridad del sistema de alojamiento de DirectAdmin al servicio Amazon S3

Este artículo muestra cómo usar un bot para enviar copias de seguridad del hosting de DirectAdmin a Amazon S3 y eliminar archivos antiguos. Los pasos incluyen la creación de S3, la configuración de IAM y la creación de un script de automatización.
0 acciones
0
0
0
0

Requisitos previos

Para implementar este bot de respaldo, necesita tener un servidor básico y un entorno de AWS listo. Verifique y proporcione lo siguiente:

  • Acceso SSH Acceso al servidor DirectAdmin sudo/root.
  • Instalación CLI de AWS (se prefiere la versión v2) o herramientas como clon.
  • Uno Cubo S3 En AWS con un nombre deseado y una región adecuada.
  • Un usuario SOY Con acceso limitado a ese depósito o utilizando Rol de IAM (Si se ejecuta en EC2).
  • Suficiente espacio en el servidor para almacenar copias de seguridad temporalmente.
  • Activación Política de ciclo de vida En S3 para eliminación después de 7 días.

Descripción general del flujo de trabajo

El flujo del proceso simplificado es el siguiente:

  1. DirectAdmin crea una copia de seguridad y la guarda en una carpeta local (por ejemplo, /inicio/admin/copias de seguridad).
  2. El script (bot) se ejecuta según un cronograma y carga copias de seguridad en S3.
  3. Después de asegurar la carga, el script cargará archivos locales que sean más de 2 días Elimina la edad.
  4. En S3 uno ciclo vital Está configurado para mantener cada objeto después 7 días Elimina.

Implementación paso a paso

1) Cree un bucket S3 y configure el ciclo de vida (eliminar después de 7 días)

Puede crear un bucket desde la consola de AWS o usar la CLI de AWS. Ejemplo de comando para crear un bucket (ejemplo: región = eu-central-1):

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

Ejemplo de política de ciclo de vida (archivo) ciclo de vida.json):

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

Aplicar una política con la CLI:

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

Recomendaciones: Si necesita reducir los costos de almacenamiento, puede utilizar clases de almacenamiento como ESTÁNDAR_IA O NIVELAR INTELIGENTE Si el control de versiones está habilitado, configure también la política NoncurrentVersionExpiration.

2) Cree una política de IAM y un usuario con el acceso menos necesario

Ejemplo de una política limitada a un bucket (archivo JSON):

{"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/*"]}]}

Consejo de seguridad: es mejor utilizar claves aleatorias en lugar de claves estáticas. Rol de IAM (Si su servidor es EC2). Considere también restringir el acceso según la IP o condiciones adicionales.

3) Instalar y configurar AWS CLI en el servidor

Ejemplo de instalación para Debian/Ubuntu y CentOS/RHEL:

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

Configuración de la clave de acceso si es necesario:

aws configure --profile da-backup

Si está utilizando el rol IAM en EC2, no es necesario configurarlo.

4) Ejemplo de script: upload_and_clean.sh

Este script cargará todas las copias de seguridad en S3 y luego eliminará los archivos locales con más de dos días de antigüedad que aún se encuentren en S3. (Coloque el siguiente código en la ruta correspondiente y hágalo ejecutable).

#!/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."

Consejos: Guarde el archivo de script, por ejemplo, en /usr/local/bin/carga_y_limpieza.sh Poner y con chmod +x Ejecutar. Ruta DIRECCIÓN DE COPIA DE SEGURIDAD Modifíquelo según su configuración de DirectAdmin.

5) Programación de ejecución automática (temporizador Cron o systemd)

Para ejecutar diariamente a las 02:00 con cron:

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

Si lo deseas, puedes. temporizador systemd Construido para un mejor control y registro.

6) Verificar y asegurar el éxito de la operación

Revisar los registros en /var/log/da_s3_backup.log Y verificar los archivos en S3:

Para ver una lista de archivos en S3:

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

Verifique el período del ciclo de vida desde la consola o con un comando CLI para asegurarse de que la eliminación se producirá después de 7 días.

Opciones avanzadas y mejoras

  • Carga de varias partes Para archivos grandes: AWS CLI lo admite automáticamente, pero para archivos muy grandes puede cambiar la configuración de simultaneidad.
  • Uso de SSE-KMS Para el cifrado con una clave KMS empresarial: AWS S3 CP De --sse aws:kms --sse-kms-key-id "arn:aws:kms:..."" Usar.
  • Activar Bloqueo de objetos S3 Y control de versiones si necesita protección contra eliminaciones no deseadas.
  • Si el tráfico saliente es costoso, coloque el servidor cerca de la región S3 o en una infraestructura conectada directamente.
  • Agregue una notificación si falla la carga usando AWS SNS o Webhook para enviar un mensaje a Slack/correo electrónico.

Consejos de seguridad importantes

Algunos consejos clave para mantener las copias de seguridad seguras:

  • Mínimo privilegio: Utilice permisos mínimos para IAM.
  • Evite las claves estáticas: No almacene las claves de acceso en un archivo de texto; si está en EC2, use un rol IAM.
  • Cifrado: Utilice cifrado del lado del servidor (SSE) o cifrado previo a la carga (cifrado gpg o rclone).
  • Explotación florestal: Habilite los registros de acceso de S3 y CloudTrail para registrar cada operación.

Monitoreo, alertas y pruebas de recuperación ante desastres (DR)

Recomendaciones para garantizar el funcionamiento continuo:

  • Pruebe periódicamente el proceso de restauración de copias de seguridad desde S3 al servidor e incluya esta prueba en su programación mensual.
  • Uso de Inventario S3 y CloudWatch Para monitorear la velocidad de carga y los errores.
  • Establezca una alerta si ocurre un error o una falla de carga.

Comparación de opciones: awscli vs rclone vs s3fs

CLI de AWSSimple, popular y práctico. Compatible con el ciclo de vida y el cifrado de AWS.

clonMás funciones de sincronización, cifrado del lado del cliente y control de ancho de banda. Ideal si necesita limitar el ancho de banda o cifrar antes de subir archivos.

s3fs:Monta el depósito como un sistema de archivos, pero puede tener menor rendimiento y estabilidad para archivos de respaldo grandes.

¿Por qué es importante elegir la ubicación adecuada?

Elegir la ubicación correcta puede reducir el tiempo de carga y los costos del tráfico saliente. Elegir una ubicación cercana a la región S3 reducirá la latencia y el tiempo de operación.

Si necesita protección adicional, conectividad dedicada o diferencias de rendimiento, una infraestructura con múltiples ubicaciones y características especiales puede ayudar.

Ejemplo operativo: Configuración para el comercio de VPS

  • Elija una ubicación cercana al servidor de intercambio o comercial para reducir la latencia.
  • Habilite la protección DDoS para el servidor relevante.
  • Mueva las copias de seguridad de DirectAdmin a un S3 cercano para reducir el tiempo de copia de seguridad.

Resumen y puntos finales

La creación de un bot implica tres partes principales: carga segura a S3, eliminación local de archivos antiguos, 2 días Después de confirmar la carga y configurar el ciclo de vida en S3 para la retención 7 días.

Utilice IAM con acceso mínimo, cifrado y monitorización adecuada. Pruebe siempre el proceso de restauración para garantizar la recuperación.

Archivos de muestra y recursos

Preguntas frecuentes

También te puede gustar