Tüm Sistemler Çalışıyor
Network Durumu
Ana Sayfa Blog 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 Sunucuda Otomatik Yedekleme Nasıl Yapılır? Cron ve Script Rehberi

Bu rehberde neler var?

  • 3-2-1 yedekleme kuralının kopya, ortam ve lokasyon olarak açılımı.
  • tar tabanlı yedek script'i ve eski yedekleri silen saklama süresi mantığı.
  • mysqldump ve pg_dumpall ile veritabanı yedeği alma komutları.
  • Cron sözdizimi ile günlük, saatlik ve haftalık yedek zamanlaması.

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:

  • 3 kopya: Orijinal + 2 yedek
  • 2 farklı ortam: Yerel disk + uzak sunucu
  • 1 kopya offsite: Farklı lokasyonda

💡 Sağlayıcınız yedek alıyor olsa bile kendi yedekleme stratejinizi oluşturmanızı öneriyoruz; yedeğin bir kopyası her zaman sizin kontrolünüzde olmalı.

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 yedeklemeTR-VDS-22 Core, 4 GB RAM, 45 GB NVMe SSD
Yoğun yedeklemeTR-VDS-88 Core, 14 GB RAM, 120 GB NVMe SSD
Büyük veri yedeklemeR9 - 98 Core Ryzen, 14 GB RAM, 200 GB NVMe 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. Yedeklerinizi sunucunun dışındaki bir konumda tutmanızı ve geri yüklemeyi düzenli olarak test etmenizi şiddetle öneriyoruz.

👉 Linux VDS kiralama sayfamızdan hangi dağıtımları kurabileceğinizi görebilir, yedeklerinizi ayrı bir makinede tutmak ve üretim ortamınız için Platinum VDS veya Ryzen VDS seçeneklerimize göz atın!