Linux Sunucuda Otomatik Yedekleme Nasıl Yapılır? Cron ve Script Rehberi

Linux Sunucuda Otomatik Yedekleme Nasıl Yapılır? Cron ve Script Rehberi

Linux VDS otomatik yedekleme rehberi. Cron job ile zamanlanmış yedekleme, rsync kullanımı, veritabanı yedekleme ve uzak sunucuya yedek gönderme adım adım anlatım.

White Bilişim
#linux
#yedekleme
#cron
#backup
#vds

Linux Sunucuda Otomatik Yedekleme Rehberi

Veri kaybı, sunucu yönetimindeki en büyük risklerden biridir. Donanım arızası, yazılım hatası veya insan kaynaklı hatalar verilerinizi tehdit edebilir. Otomatik yedekleme sistemi kurmak, bu risklere karşı en etkili savunmanızdır. Bu rehberde Linux VDS üzerinde profesyonel yedekleme stratejileri oluşturmayı anlatıyoruz.

Yedekleme Stratejileri

3-2-1 Kuralı

Profesyonel yedekleme için 3-2-1 kuralını uygulayın:

💡 White Bilişim tüm VDS paketlerinde ücretsiz günlük otomatik yedekleme sunmaktadır. Buna ek olarak kendi yedekleme stratejinizi de oluşturmanızı öneriyoruz.

Yöntem 1: Basit Bash Script ile Yedekleme

Temel Yedekleme Script’i

#!/bin/bash
# backup.sh - Temel yedekleme scripti
 
# Ayarlar
BACKUP_DIR="/backup"
SOURCE_DIRS="/var/www /etc /home"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/backup_$DATE.tar.gz"
LOG_FILE="$BACKUP_DIR/backup.log"
RETENTION_DAYS=7
 
# Yedek klasörü oluştur
mkdir -p $BACKUP_DIR
 
# Yedekleme başlat
echo "[$DATE] Yedekleme başladı..." >> $LOG_FILE
 
tar -czf $BACKUP_FILE $SOURCE_DIRS 2>> $LOG_FILE
 
if [ $? -eq 0 ]; then
    FILESIZE=$(du -h $BACKUP_FILE | cut -f1)
    echo "[$DATE] Yedekleme başarılı: $BACKUP_FILE ($FILESIZE)" >> $LOG_FILE
else
    echo "[$DATE] HATA: Yedekleme başarısız!" >> $LOG_FILE
fi
 
# Eski yedekleri temizle
find $BACKUP_DIR -name "backup_*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "[$DATE] $RETENTION_DAYS günden eski yedekler temizlendi." >> $LOG_FILE
# Script'i çalıştırılabilir yap
chmod +x /root/backup.sh
 
# Test et
./backup.sh

Yöntem 2: Veritabanı Yedekleme

MySQL/MariaDB Yedekleme

#!/bin/bash
# db_backup.sh - Veritabanı yedekleme
 
BACKUP_DIR="/backup/db"
DATE=$(date +%Y%m%d_%H%M%S)
DB_USER="root"
DB_PASS="veritabani_sifresi"
 
mkdir -p $BACKUP_DIR
 
# Tüm veritabanlarını yedekle
mysqldump -u$DB_USER -p$DB_PASS --all-databases --single-transaction | gzip > "$BACKUP_DIR/all_db_$DATE.sql.gz"
 
# Belirli bir veritabanını yedekle
mysqldump -u$DB_USER -p$DB_PASS fivem_db --single-transaction | gzip > "$BACKUP_DIR/fivem_db_$DATE.sql.gz"
 
# 14 günden eski yedekleri sil
find $BACKUP_DIR -name "*.sql.gz" -mtime +14 -delete

PostgreSQL Yedekleme

#!/bin/bash
# pg_backup.sh
BACKUP_DIR="/backup/pgsql"
DATE=$(date +%Y%m%d_%H%M%S)
 
mkdir -p $BACKUP_DIR
 
# Tüm veritabanlarını yedekle
sudo -u postgres pg_dumpall | gzip > "$BACKUP_DIR/pg_all_$DATE.sql.gz"

Yöntem 3: rsync ile Artımlı Yedekleme

rsync, sadece değişen dosyaları kopyalar — bu sayede hızlı ve verimli yedekleme yapar:

#!/bin/bash
# rsync_backup.sh - Artımlı yedekleme
 
SOURCE="/var/www"
DEST="/backup/rsync"
LOG="/var/log/rsync_backup.log"
 
mkdir -p $DEST
 
rsync -avz --delete \
    --exclude='*.log' \
    --exclude='node_modules/' \
    --exclude='.git/' \
    $SOURCE $DEST \
    >> $LOG 2>&1
 
echo "[$(date)] rsync yedekleme tamamlandı." >> $LOG

Uzak Sunucuya rsync

# Başka bir sunucuya yedek gönderme
rsync -avz -e "ssh -p 22" /backup/ backup_user@UZAK_SUNUCU_IP:/remote-backup/

Cron Job ile Otomatik Zamanlama

Cron Sözdizimi

# ┌───────── Dakika (0-59)
# │ ┌─────── Saat (0-23)
# │ │ ┌───── Gün (1-31)
# │ │ │ ┌─── Ay (1-12)
# │ │ │ │ ┌─ Haftanın günü (0-7, 0/7=Pazar)
# │ │ │ │ │
# * * * * * komut

Cron Job Ekleme

# Cron editörünü aç
crontab -e
 
# Her gece 03:00'te tam yedekleme
0 3 * * * /root/backup.sh
 
# Her 6 saatte bir veritabanı yedekleme
0 */6 * * * /root/db_backup.sh
 
# Her saat başı rsync
0 * * * * /root/rsync_backup.sh
 
# Her Pazar gece 02:00'de haftalık tam yedek
0 2 * * 0 /root/weekly_backup.sh

Cron Job’ları Listeleme

# Mevcut cron job'ları görüntüle
crontab -l
 
# Root kullanıcısının cron job'ları
sudo crontab -l

Yedekleri Doğrulama

Yedeklerin çalıştığını düzenli olarak kontrol edin:

# Yedek dosyalarını listele
ls -lh /backup/
 
# Tar arşivinin bütünlüğünü kontrol et
tar -tzf /backup/backup_20260408_030000.tar.gz > /dev/null && echo "Yedek sağlam" || echo "Yedek bozuk!"
 
# Veritabanı yedeğini test et (geçici veritabanına geri yükle)
zcat /backup/db/all_db_20260408.sql.gz | mysql -u root -p test_restore_db

Yedekleme Bildirimi (E-posta)

#!/bin/bash
# backup_with_notification.sh
 
# Yedekleme yap
/root/backup.sh
 
# Sonucu e-posta ile gönder
if [ $? -eq 0 ]; then
    echo "Yedekleme başarılı - $(date)" | mail -s "✅ Sunucu Yedekleme Başarılı" admin@siteniz.com
else
    echo "HATA: Yedekleme başarısız! - $(date)" | mail -s "❌ Sunucu Yedekleme BAŞARISIZ" admin@siteniz.com
fi

Oyun Sunucusu Yedekleme Örnekleri

FiveM Sunucusu Yedekleme

#!/bin/bash
# fivem_backup.sh
FIVEM_DIR="/home/fivem-server"
BACKUP_DIR="/backup/fivem"
DATE=$(date +%Y%m%d_%H%M%S)
 
mkdir -p $BACKUP_DIR
 
# Veritabanını yedekle
mysqldump -u root -p fivem_db | gzip > "$BACKUP_DIR/fivem_db_$DATE.sql.gz"
 
# Server dosyalarını yedekle
tar -czf "$BACKUP_DIR/fivem_files_$DATE.tar.gz" \
    $FIVEM_DIR/server.cfg \
    $FIVEM_DIR/resources/ \
    --exclude='$FIVEM_DIR/resources/[system]'
 
find $BACKUP_DIR -mtime +7 -delete

Minecraft Dünyası Yedekleme

#!/bin/bash
# minecraft_backup.sh
MC_DIR="/home/minecraft"
BACKUP_DIR="/backup/minecraft"
DATE=$(date +%Y%m%d_%H%M%S)
 
mkdir -p $BACKUP_DIR
 
# Dünyayı yedekle
tar -czf "$BACKUP_DIR/world_$DATE.tar.gz" $MC_DIR/world/
 
find $BACKUP_DIR -name "world_*.tar.gz" -mtime +14 -delete

VDS Paket Önerileri

İhtiyaçÖnerilen PaketÖzellikler
Basit yedeklemeENT-22 Core, 4 GB RAM, 40 GB SSD
Yoğun yedeklemeENT-58 Core, 10 GB RAM, 100 GB SSD
Büyük veri yedeklemePRO-48 Core Ryzen, 10 GB RAM, 100 GB SSD

Sonuç

Otomatik yedekleme sunucu yönetiminin en kritik parçasıdır. Cron job’lar ve script’ler ile yedekleme sürecini tamamen otomatikleştirebilirsiniz. White Bilişim tüm VDS paketlerinde ücretsiz günlük yedekleme sunar, ancak kendi yedekleme stratejinizi de oluşturmanızı şiddetle öneriyoruz.

👉 Yedekleme dahil VDS paketleri için Xeon Enterprise VDS veya Ryzen Premium VDS seçeneklerimize göz atın!