Sunucu Yedekleme Stratejileri ve Araçları Rehberi
zafer ak
Yazar
Veri kaybı işletmeler için yıkıcı sonuçlar doğurabilir. Bu rehberde profesyonel yedekleme stratejilerini ve araçlarını öğreneceksiniz.
3-2-1 Yedekleme Kuralı
- 3 kopya: Verilerinizin en az 3 kopyası olsun
- 2 farklı ortam: Farklı depolama ortamlarında
- 1 off-site: En az bir kopya farklı lokasyonda
Yedekleme Türleri
| Tür | Açıklama | Avantaj | Dezavantaj |
|---|---|---|---|
| Full | Tüm verilerin kopyası | Kolay geri yükleme | Zaman ve alan |
| Incremental | Son yedekten farklar | Hızlı ve az alan | Zincir bağımlılığı |
| Differential | Full'dan farklar | Daha kolay geri yükleme | Artan boyut |
rsync ile Yedekleme
# Temel rsync
rsync -avz /source/ /destination/
# SSH üzerinden
rsync -avz -e ssh /local/path/ user@remote:/backup/
# Incremental backup
rsync -avz --backup --backup-dir=/backup/incremental/$(date +%Y%m%d) /source/ /destination/
# Exclude patterns
rsync -avz --exclude '*.log' --exclude 'cache/' /source/ /destination/
# Delete extraneous files
rsync -avz --delete /source/ /destination/
Restic ile Modern Yedekleme
Restic, deduplikasyon ve şifreleme özellikli modern bir yedekleme aracıdır.
# Kurulum
sudo apt install restic
# Repository oluşturma
restic -r /backup/restic-repo init
# Yedek alma
restic -r /backup/restic-repo backup /home /etc /var/www
# S3 backend ile
export AWS_ACCESS_KEY_ID="key"
export AWS_SECRET_ACCESS_KEY="secret"
restic -r s3:s3.amazonaws.com/bucket-name init
restic -r s3:s3.amazonaws.com/bucket-name backup /data
# Snapshot listesi
restic -r /backup/restic-repo snapshots
# Geri yükleme
restic -r /backup/restic-repo restore latest --target /restore/
# Eski snapshotları temizleme
restic -r /backup/restic-repo forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6
restic -r /backup/restic-repo prune
Borg Backup
Borg, deduplikasyon ve sıkıştırma ile verimli yedekleme sağlar.
# Kurulum
sudo apt install borgbackup
# Repository oluşturma
borg init --encryption=repokey /backup/borg-repo
# Yedek alma
borg create /backup/borg-repo::backup-{now:%Y-%m-%d} /home /etc
# SSH ile uzak sunucuya
borg create user@backup-server:/backup/borg-repo::backup-{now} /data
# Archive listesi
borg list /backup/borg-repo
# Geri yükleme
borg extract /backup/borg-repo::backup-2024-01-01
# Eski archiveler temizleme
borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 /backup/borg-repo
Veritabanı Yedekleme
MySQL/MariaDB
# Tek veritabanı
mysqldump -u root -p database_name > backup.sql
# Tüm veritabanları
mysqldump -u root -p --all-databases > all_databases.sql
# Sıkıştırılmış
mysqldump -u root -p database_name | gzip > backup.sql.gz
# Otomatik script
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/mysql"
mysqldump -u root -p'password' --all-databases | gzip > $BACKUP_DIR/all_$DATE.sql.gz
find $BACKUP_DIR -mtime +7 -delete
PostgreSQL
# Tek veritabanı
pg_dump -U postgres database_name > backup.sql
# Custom format (sıkıştırılmış)
pg_dump -U postgres -Fc database_name > backup.dump
# Tüm veritabanları
pg_dumpall -U postgres > all_databases.sql
# Geri yükleme
pg_restore -U postgres -d database_name backup.dump
Cloud Backup (rclone)
# Kurulum
curl https://rclone.org/install.sh | sudo bash
# Yapılandırma
rclone config
# Yedekleme
rclone sync /backup/local remote:backup-bucket
# Şifreli yedekleme
rclone sync /backup/local remote:backup-bucket --crypt-remote
# Bandwidth limiti
rclone sync /backup/local remote:backup --bwlimit 10M
Otomatik Yedekleme Script
#!/bin/bash
# /opt/scripts/backup.sh
set -e
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup"
LOG_FILE="/var/log/backup.log"
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a $LOG_FILE
}
log "Backup started"
# Veritabanı yedekleme
log "Backing up MySQL..."
mysqldump -u root --all-databases | gzip > $BACKUP_DIR/mysql_$DATE.sql.gz
# Dosya yedekleme
log "Backing up files with restic..."
restic -r $BACKUP_DIR/restic-repo backup /var/www /etc
# Eski yedekleri temizle
log "Cleaning old backups..."
find $BACKUP_DIR -name "mysql_*.sql.gz" -mtime +7 -delete
restic -r $BACKUP_DIR/restic-repo forget --keep-daily 7 --keep-weekly 4 --prune
# Off-site sync
log "Syncing to cloud..."
rclone sync $BACKUP_DIR/restic-repo remote:backup-bucket
log "Backup completed"
Cron ile Zamanlama
# crontab -e
# Her gün 02:00'de
0 2 * * * /opt/scripts/backup.sh
# Her 6 saatte
0 */6 * * * /opt/scripts/backup.sh
Sonuç
Düzenli ve test edilmiş yedekleme stratejisi kritik öneme sahiptir. 3-2-1 kuralını uygulayın, yedeklerinizi düzenli test edin ve felaket kurtarma planınızı güncel tutun.