DirectAdmin barındırma sistemi yedeklerini Amazon S3 hizmetine göndermek için bir robot oluşturma
Bu yazıda, DirectAdmin için bir yedekleme botu oluşturmayı ve bunu Amazon S3'e göndermeyi öğreteceğiz. Takipte kalın.

DirectAdmin barındırma sistemi yedeklerini Amazon S3 hizmetine göndermek için bir robot oluşturma

Bu makale, DirectAdmin barındırma yedeklerini Amazon S3'e göndermek ve eski dosyaları silmek için bir bot kullanmayı göstermektedir. Adımlar arasında S3 oluşturma, IAM yapılandırma ve otomasyon komut dosyası yazma yer almaktadır.
0 Hisse senetleri
0
0
0
0

Ön koşullar

Bu yedekleme botunu çalıştırmak için temel bir sunucuya ve AWS ortamına ihtiyacınız var. Lütfen aşağıdakileri kontrol edin ve sağlayın:

  • SSH erişimi DirectAdmin sunucusuna erişim sudo/root.
  • Kurulum AWS CLI (v2 sürümü tercih edilir) veya benzeri araçlar rclone.
  • Bir S3 kovası AWS'de istenen isim ve uygun Bölge ile.
  • Bir kullanıcı BEN Bu depolama alanına sınırlı erişimle veya kullanarak IAM Rolü (EC2 üzerinde çalışıyorsa).
  • Sunucuda yedeklemeleri geçici olarak saklamak için yeterli alan mevcut.
  • Aktivasyon Yaşam döngüsü politikası S3 klasöründe 7 gün sonra silinecek.

İş akışına genel bakış

Basitleştirilmiş işlem akışı aşağıdaki gibidir:

  1. DirectAdmin bir yedekleme oluşturur ve bunu yerel bir klasöre kaydeder (örneğin, /home/admin/yedeklemeler).
  2. Komut dosyası (bot), belirli bir program dahilinde çalışır ve yedekleri S3'e yükler.
  3. Yükleme işlemi tamamlandıktan sonra, komut dosyası yerel dosyaları yükleyecektir. 2 gün Yaşı ortadan kaldırıyor.
  4. S3'te bir yaşam döngüsü Her nesneyi bir süre sonra saklayacak şekilde ayarlanmıştır. 7 gün Siliyor.

Adım adım uygulama

1) S3 kovası oluşturun ve yaşam döngüsünü ayarlayın (7 gün sonra silinecek şekilde).

AWS konsolundan veya AWS CLI'yı kullanarak bir kova oluşturabilirsiniz. Örnek kova oluşturma komutu (örnek bölge = eu-central-1):

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

Örnek yaşam döngüsü politikası (dosya) yaşam döngüsü.json):

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

CLI ile bir politika uygulamak:

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

Öneriler: Depolama maliyetlerini düşürmeniz gerekiyorsa, aşağıdaki gibi depolama sınıflarını kullanabilirsiniz. STANDART_IA Veya AKILLI_KATMANLAMA Sürümleme etkinleştirilmişse, NoncurrentVersionExpiration politikasını da ayarlayın.

2) Bir IAM Politikası oluşturun ve en az gerekli erişime sahip bir kullanıcı atayın.

Bir kovaya (JSON dosyasına) sınırlı bir politika örneği:

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

Güvenlik ipucu: Statik anahtarlar yerine rastgele anahtarlar kullanmak daha iyidir. IAM Rolü (Sunucunuz EC2 ise). Ayrıca IP adresine veya ek koşullara dayalı erişimi kısıtlamayı da düşünün.

3) Sunucuya AWS CLI'yı kurun ve yapılandırın.

Debian/Ubuntu ve CentOS/RHEL için kurulum örneği:

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

Gerekirse erişim anahtarı için yapılandırma:

aws configure --profile da-backup

EC2 üzerinde IAM Rolü kullanıyorsanız, yapılandırmanıza gerek yoktur.

4) Örnek komut dosyası: upload_and_clean.sh

Bu komut dosyası tüm yedekleri S3'e yükleyecek ve ardından S3'te hala bulunan ve 2 günden eski olan yerel dosyaları silecektir. (Aşağıdaki kodu uygun yola yerleştirin ve çalıştırılabilir hale getirin.)

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

İpucu: Komut dosyası dosyasını örneğin şu konumda kaydedin: /usr/local/bin/upload_and_clean.sh Koy ve ile chmod +x Yürüt. Yol YEDEK_DİZİNİ DirectAdmin ayarlarınıza göre düzenleyin.

5) Otomatik yürütmenin zamanlanması (Cron veya systemd zamanlayıcısı)

Cron ile her gün saat 02:00'de çalıştırmak için:

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

Dilerseniz yapabilirsiniz. systemd zamanlayıcısı Daha iyi kontrol ve kayıt tutma için tasarlandı.

6) Operasyonun kontrol edilmesi ve başarısının sağlanması

Kayıtları kontrol edin. /var/log/da_s3_backup.log Ve S3'teki dosyaları doğrulayın:

S3'teki dosyaların listesini görmek için:

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

Silme işleminin 7 gün sonra gerçekleşeceğinden emin olmak için yaşam döngüsü süresini konsoldan veya bir CLI komutuyla kontrol edin.

Gelişmiş seçenekler ve iyileştirmeler

  • Çok parçalı yükleme Büyük dosyalar için: AWS CLI bunu otomatik olarak destekler, ancak çok büyük dosyalar için eşzamanlılık ayarlarını değiştirebilirsiniz.
  • Kullanımı SSE-KMS Kurumsal KMS anahtarıyla şifreleme için: aws s3 cp İtibaren --sse aws:kms --sse-kms-key-id "arn:aws:kms:..."" Kullanmak.
  • Etkinleştir S3 Nesne Kilidi İstenmeyen silmelere karşı koruma sağlamak için sürümleme özelliğini kullanabilirsiniz.
  • Giden trafik maliyetliyse, sunucuyu S3 bölgesinin yakınına veya doğrudan bağlı bir altyapıya yerleştirin.
  • Yükleme başarısız olursa AWS SNS veya Webhook kullanarak Slack/E-posta'ya mesaj gönderecek bir bildirim ekleyin.

Önemli güvenlik ipuçları

Yedeklemelerinizi güvende tutmak için bazı önemli ipuçları:

  • En az ayrıcalıklı: IAM için minimum izinleri kullanın.
  • Statik tuşlardan kaçının: Erişim anahtarlarını metin dosyasında saklamayın; EC2 kullanıyorsanız, IAM Rolü kullanın.
  • Şifreleme: Sunucu tarafı şifreleme (SSE) veya ön yükleme şifrelemesi (gpg veya rclone şifrelemesi) kullanın.
  • Günlük kaydı: Her işlemi kaydetmek için S3 ve CloudTrail erişim günlüklerini etkinleştirin.

İzleme, uyarı ve afet kurtarma (DR) testleri

Kesintisiz çalışmayı sağlamak için öneriler:

  • S3'ten sunucuya yedeklemelerin geri yüklenmesi sürecini düzenli olarak test edin ve bu testleri aylık programınıza dahil edin.
  • Kullanımı S3 Envanteri Ve Bulut İzleme Yükleme hızını ve hataları izlemek için.
  • Bir hata veya yükleme başarısızlığı meydana gelirse uyarı ver.

Seçeneklerin karşılaştırılması: awscli, rclone ve s3fs

AWS CLIBasit, popüler ve kullanışlı. AWS yaşam döngüsünü ve şifrelemeyi destekler.

rcloneSenkronizasyon, istemci tarafı şifreleme ve bant genişliği kontrolü için daha fazla özellik. Yüklemeden önce bant genişliğini sınırlamanız veya şifrelemeniz gerekiyorsa uygundur.

s3fsBu işlem, yedekleme kovasını bir dosya sistemi olarak bağlar, ancak büyük yedekleme dosyaları için performans ve kararlılık açısından daha düşük sonuçlar verebilir.

Doğru yeri seçmek neden önemlidir?

Doğru konumu seçmek, yükleme süresini ve giden trafik maliyetlerini azaltabilir. S3 bölgesine yakın bir konum seçmek, gecikmeyi ve işlem süresini azaltacaktır.

Ekstra korumaya, özel bağlantıya veya performans farklılıklarına ihtiyacınız varsa, birden fazla lokasyona ve özel özelliklere sahip altyapı yardımcı olabilir.

Operasyonel örnek: VPS alım satımı için kurulum

  • Gecikmeyi azaltmak için borsaya veya işlem sunucusuna yakın bir konum seçin.
  • İlgili sunucu için DDoS korumasını etkinleştirin.
  • Yedekleme süresini kısaltmak için DirectAdmin yedeklerini yakındaki bir S3 depolama alanına taşıyın.

Özet ve son noktalar

Bir bot oluşturmak üç ana bölümden oluşur: S3'e güvenli yükleme, eski dosyaların yerel olarak silinmesi, 2 gün Yüklemeyi onayladıktan ve S3'te saklama için yaşam döngüsünü yapılandırdıktan sonra 7 gün.

IAM'i minimum erişim, şifreleme ve uygun izleme ile kullanın. Kurtarma işleminin sorunsuz gerçekleştiğinden emin olmak için geri yükleme sürecini her zaman test edin.

Örnek dosyalar ve kaynaklar

Sıkça Sorulan Sorular

Ayrıca Şunları da Beğenebilirsiniz
ModSecurity cPanel

cPanel'deki Güvenlik Araçları — Uzman Rehberi

Web sitesi barındırma hizmetinizi yönetmek için cPanel kullanıyorsanız, güvenliğin sitenizin hayatta kalmasının ve kullanıcı güveninin temellerinden biri olduğunu muhtemelen biliyorsunuzdur. cPanel, sitenizin güvenliğini ciddi şekilde artırmanız için çok çeşitli araçlar sunar. Bu makalede, bu araçları daha derinlemesine inceleyecek ve barındırma güvenliğinizi daha güvenli bir şekilde yapılandırmanıza yardımcı olacak resmi belgelere ve ilgili makalelere bağlantılar sunacağız.