VPS sunucularında veri güvenliği, işletmelerin dijital altyapısının temel taşlarından biridir.
VPS sunucularında veri güvenliği, işletmelerin dijital altyapısının temel taşlarından biridir. Veri kaybı, donanım arızaları, siber saldırılar veya yanlış yapılandırmalar nedeniyle oluşabilir. Bu riskleri minimize etmek için düzenli yedekleme stratejileri şarttır. Manuel yedekleme yöntemleri zaman alıcı ve hata yapmaya açıktır; bu nedenle otomatik yedek alma scriptleri, kurumsal düzeyde verimlilik sağlar. Bu makalede, VPS sunucunuzda etkili bir yedekleme scripti oluşturma, kurma ve yönetme sürecini adım adım ele alacağız. Bash tabanlı bir script örneği üzerinden pratik bir yaklaşım sunarak, veritabanı ve dosya yedeklemelerini kapsayan kapsamlı bir çözüm geliştireceğiz.
VPS ortamlarında yedekleme, yalnızca veri kurtarma için değil, aynı zamanda uyumluluk ve iş sürekliliği açısından kritik öneme sahiptir. Sunucu kaynaklarının sınırlı olduğu VPS’lerde, yedekleme işlemleri CPU ve disk kullanımını optimize etmelidir. Düzenli yedekler, felaket kurtarma sürelerini kısaltır ve downtime’ı minimize eder. Örneğin, MySQL veritabanı kullanan bir web uygulamasında, günlük yedekler olmadan bir SQL enjeksiyon saldırısı tüm verileri silebilir. Script tabanlı otomasyon, bu süreçleri cron job’larla entegre ederek 7/24 çalışır hale getirir.
Pratikte, yedekleme stratejisi üç katmanı içermelidir: tam yedek (haftalık), inkremental yedek (günlük) ve uzak depolama (bulut entegrasyonu). Bu yaklaşım, yerel disk arızalarında bile verilerin kurtarılmasını sağlar. Kurumsal kullanıcılar için, script log’ları tutmak ve e-posta bildirimleri eklemek, izlenebilirlik sağlar. Sonuç olarak, iyi tasarlanmış bir script, VPS maliyetlerini düşürürken güvenliği maksimize eder ve yaklaşık 500 kelimelik bu rehberde göreceğiniz gibi, uygulanması oldukça basittir.
Yedek alma scriptini oluşturmak için temel Bash bilgisi yeterlidir. Script, /backup dizininde çalışacak şekilde tasarlanmalı ve timestamp ile dosya adlandırması yapmalıdır. Öncelikle, gerekli araçları yükleyin: rsync, mysqldump (veritabanı için) ve tar (arşivleme için). Scriptin amacı, /var/www/html gibi kritik dizinleri ve veritabanlarını sıkıştırılmış halde yedeklemek olmalıdır.
Script geliştirmeden önce, VPS’inize şu komutlarla araçları kurun: apt update && apt install rsync mysql-client tar gzip cron (Debian/Ubuntu için). Bir yedek dizini oluşturun: mkdir -p /backup/daily ve izinleri ayarlayın: chown root:root /backup && chmod 700 /backup. Veritabanı yedekleri için MySQL root şifresini güvenli bir şekilde saklayın, örneğin /root/.my.cnf dosyasında [mysqldump] altında password=şifre şeklinde. Bu hazırlık, scriptin hatasız çalışmasını sağlar ve güvenlik açıklarını önler. Toplamda 5-10 dakika sürer ve VPS’inizin yedek altyapısını hazır hale getirir.
Aşağıdaki örnek scripti /usr/local/bin/backup.sh olarak kaydedin ve chmod +x ile çalıştırılabilir yapın:
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/daily"
DB_USER="root"
DB_PASS="sifreniz"
DB_NAME="veritabani_adi"
# Veritabanı yedeği
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/db_$DATE.sql
# Dosya yedeği
tar -czf $BACKUP_DIR/files_$DATE.tar.gz /var/www/html /etc/nginx
# Eski yedekleri sil (7 gün sonrası)
find $BACKUP_DIR -type f -mtime +7 -delete
# Log tut
echo "$(date): Yedek tamamlandı" >> /var/log/backup.log
Bu script, veritabanını SQL dump olarak, dosyaları tar.gz olarak arşivler ve eski dosyaları otomatik temizler. Timestamp ile unique adlandırma, çakışmaları önler. Test etmek için ./backup.sh çalıştırın ve /backup/daily’yi kontrol edin. Geliştirmek için rsync ile uzak sunucuya senkronizasyon ekleyin: rsync -avz $BACKUP_DIR user@remote:/remote/backup.
Cron ile scripti otomatikleştirmek, yedeklemeyi kurumsal standartlara taşır. Crontab’ı düzenleyin: crontab -e ve 02 02 * * * /usr/local/bin/backup.sh ekleyin (her gün sabah 02:02’de). Bu, düşük trafik saatlerinde çalışır ve sunucu yükünü dağıtır. Ayrıca, script sonunda mail -s “Yedek Tamam” root@localhost < /var/log/backup.log ile bildirim alın.
Cron servisini etkinleştirin: systemctl enable cron && systemctl start cron. Log’ları /var/log/syslog veya /var/log/cron.log’dan takip edin. Hata durumunda, script başına set -e ekleyerek erken çıkış sağlayın. İzleme için, haftalık bir kontrol scripti yazın: du -sh /backup/daily/* | mail -s “Yedek Boyutları” [email protected]. Bu yöntemle, yedeklerin büyüklüğünü ve bütünlüğünü düzenli denetleyin, olası sorunları proaktif çözün.
Güvenlik için, scripti yalnızca root çalıştırın ve şifreleri environment variable’larda saklayın: export DB_PASS=sifre. Uzak depolama için AWS S3 veya Dropbox entegrasyonu ekleyin; aws cli kurup aws s3 sync $BACKUP_DIR s3://bucket/ komutunu script sonuna yerleştirin. Şifreleme için gpg -c files_$DATE.tar.gz yapın. Bu adımlar, veri sızıntılarını önler ve 3-2-1 kuralını (3 kopya, 2 ortam, 1 offsite) uygular. Düzenli testlerle yedekleri doğrulayın: mysqldump geri yükleme simülasyonu yaparak bütünlüğü kontrol edin.
Sonuç olarak, bu VPS yedekleme scripti, basit yapısına rağmen profesyonel düzeyde koruma sağlar. Uyguladıktan sonra, aylık incelemelerle optimize edin ve ek özellikler (örneğin, MongoDB desteği) ekleyin. Düzenli yedekleme ile verileriniz güvende kalacak, iş operasyonlarınız kesintisiz devam edecektir.