Skip to content
Back to blog
Rehber Linux rsync yedekleme otomasyon sistem yönetimi veri koruma backup Mistral

Linux Sunucularda rsync ile Otomatik ve Güvenilir Yedekleme Kurulumu

Linux sunucularınızda rsync kullanarak otomatik, güvenilir ve verimli yedekleme sistemleri nasıl kurulur? Adım adım rehber ve en iyi uygulamalar.

Caner Serbest

Sistem ve Altyapı

7 min read

Linux Sunucularda rsync ile Otomatik ve Güvenilir Yedekleme Kurulumu

Sistem yöneticileri için en kritik görevlerden biri, sunucuların ve verilerin güvenliğini sağlamaktır. Veri kaybı, donanım arızaları, insan hataları veya siber saldırılar gibi birçok tehditle karşı karşıyayız. Bu nedenle, güvenilir bir yedekleme stratejisi oluşturmak, sadece tavsiye edilen bir uygulama değil, zorunluluktur.

Bu rehberde, rsync aracını kullanarak Linux sunucularınızda otomatik, verimli ve güvenilir yedekleme sistemleri nasıl kuracağınızı adım adım öğreneceksiniz. rsync, yerel ve uzak sistemler arasında dosya senkronizasyonu yapabilen güçlü bir komut satırı aracıdır. Hem küçük hem de büyük ölçekli sistemlerde kullanılabilir ve veri kaybını minimize etmek için ideal bir çözümdür.


📌 Neden rsync?

rsync’in tercih edilme sebeplerini birkaç başlık altında inceleyebiliriz:

ÖzellikAçıklama
VerimlilikYalnızca değişiklik yapılan dosyaları aktarır (incremental backup). Bu sayede bant genişliği ve zaman tasarrufu sağlar.
GüvenlikSSH üzerinden çalışabilir, böylece veriler şifrelenmiş olarak iletilir.
EsneklikYerel diskler, uzak sunucular, bulut depolama (AWS S3, Google Cloud Storage vb.) ve hatta USB sürücüler gibi farklı hedeflere yedekleme yapılabilir.
OtomatikleştirilebilirlikCron gibi zamanlama araçlarıyla otomatik olarak çalıştırılabilir.
Veri BütünlüğüAktarım sırasında dosya bütünlüğünü kontrol eder ve hata durumunda uyarı verir.

Diğer popüler yedekleme araçları olan tar, dd veya BorgBackup ile karşılaştırıldığında, rsync özellikle senkronizasyon odaklı bir araçtır ve veri kaybını önlemek için ideal bir seçenektir.


🔧 rsync Temel Kullanımı

rsync’in temel sözdizimi aşağıdaki gibidir:

rsync [seçenekler] kaynak_dizin hedef_dizin

Temel Seçenekler

SeçenekAçıklama
-aArşiv modunu etkinleştirir (sembolik bağlantılar, izinler, sahiplik, tarih bilgilerini korur).
-vAyrıntılı çıktı verir (verbose).
-zAktarım sırasında verileri sıkıştırır.
-PAktarım ilerlemesini ve kısmi aktarılan dosyaları gösterir.
-hİnsan tarafından okunabilir formatta çıktı verir.
--deleteHedef dizinde kaynakta olmayan dosyaları siler.
--excludeBelirli dosya veya dizinleri hariç tutar.
-e sshAktarımı SSH üzerinden şifreler.

Örnek Kullanımlar

  1. Yerel yedekleme (örneğin /home dizinini /backup dizinine yedeklemek):
rsync -avz --delete /home/ /backup/home_backup/
  1. Uzak sunucuya yedekleme (SSH üzerinden):
rsync -avz -e ssh /home/ kullanici@uzak_sunucu:/backup/home_backup/
  1. Belirli dosya türlerini hariç tutarak yedekleme:
rsync -avz --exclude='*.tmp' --exclude='*.log' /home/ /backup/home_backup/
  1. Sadece değişiklikleri senkronize etmek (incremental backup):
rsync -avz --delete /home/ /backup/home_backup/

🛠️ Otomatik Yedekleme Sistemi Kurulumu

Otomatik yedekleme sistemini kurmak için aşağıdaki adımları izleyebilirsiniz. Bu sistemde, Cron kullanarak belirli aralıklarla yedekleme işlemlerini otomatikleştireceğiz.

1. Yedekleme Dizinini Hazırlama

Öncelikle, yedeklerin saklanacağı dizini oluşturun ve gerekli izinleri ayarlayın:

sudo mkdir -p /backup/server_backups
sudo chown -R root:root /backup/server_backups
sudo chmod -R 700 /backup/server_backups

2. Yedekleme Komutunu Oluşturma

Yedekleme komutunu bir shell script dosyasına kaydedin. Örneğin, /usr/local/bin/backup_script.sh dosyasını oluşturun:

#!/bin/bash

# Yedeklenecek dizinler
SOURCE_DIRS="/home /etc /var/www"

# Hedef dizin
BACKUP_DIR="/backup/server_backups"

# Tarih etiketi (örneğin: 2024-05-20_14-30-00)
DATE=$(date +"%Y-%m-%d_%H-%M-%S")

# Yedek dizini oluştur
BACKUP_PATH="$BACKUP_DIR/backup_$DATE"
mkdir -p "$BACKUP_PATH"

# rsync komutu ile yedekleme
rsync -avz --delete --exclude='/var/www/cache/*' --exclude='/var/www/logs/*' $SOURCE_DIRS "$BACKUP_PATH"

# Eski yedekleri temizle (örneğin, 7 günden eski olanları sil)
find "$BACKUP_DIR" -type d -name "backup_*" -mtime +7 -exec rm -rf {} \;

echo "Yedekleme tamamlandı: $BACKUP_PATH"

Bu script:

  • /home, /etc ve /var/www dizinlerini yedekler.
  • /var/www/cache ve /var/www/logs dizinlerini hariç tutar.
  • Her yedek için tarih etiketli bir dizin oluşturur.
  • 7 günden eski yedekleri otomatik olarak siler.

3. Script’e Çalıştırma İzni Verme

sudo chmod +x /usr/local/bin/backup_script.sh

4. Cron ile Otomatikleştirme

Cron kullanarak script’in belirli aralıklarla çalışmasını sağlayın. Örneğin, her gün saat 02:00’de yedekleme yapılmasını istiyorsanız:

sudo crontab -e

Açılan editörde aşağıdaki satırı ekleyin:

0 2 * * * /usr/local/bin/backup_script.sh >> /var/log/backup.log 2>&1

Bu komut:

  • Her gün saat 02:00’de script’i çalıştırır.
  • Çıktıları /var/log/backup.log dosyasına kaydeder.

Cron’un çalışıp çalışmadığını kontrol etmek için:

tail -f /var/log/backup.log

5. Log Dosyalarını Yönetme

Yedekleme loglarını düzenli olarak kontrol etmek önemlidir. Log dosyasının boyutu çok büyürse, logrotate kullanarak yönetebilirsiniz. Örneğin, /etc/logrotate.d/backup dosyasını oluşturun:

/var/log/backup.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 root root
}

Bu ayarlar:

  • Her gün log dosyasını sıkıştırır.
  • 7 günlük log saklar.
  • Log dosyasını yeniden oluşturur.

🔐 Güvenlik Önlemleri

Yedekleme sisteminizin güvenliğini sağlamak için aşağıdaki önlemleri almanız önemlidir:

1. SSH Anahtar Tabanlı Giriş Kullanma

Uzak sunuculara yedekleme yaparken SSH anahtar tabanlı giriş kullanın. Bu, hem güvenliği artırır hem de manuel parola girme ihtiyacını ortadan kaldırır.

Adımlar:

  1. SSH anahtar çifti oluşturun (henüz yoksa):
ssh-keygen -t ed25519 -C "backup_script"
  1. Public anahtarı uzak sunucuya kopyalayın:
ssh-copy-id kullanici@uzak_sunucu
  1. SSH yapılandırmasını düzenleyin (~/.ssh/config):
Host uzak_sunucu
    HostName uzak_sunucu_ip
    User kullanici
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes
  1. rsync komutunda -e ssh kullanın:
rsync -avz -e ssh /home/ kullanici@uzak_sunucu:/backup/home_backup/

2. Yedekleme Dizini İçin Ayrı Bir Kullanıcı Oluşturma

Yedekleme dizini için ayrı bir kullanıcı oluşturun ve bu kullanıcıya sadece okuma/yazma yetkisi verin:

sudo adduser backupuser
sudo mkdir -p /backup/server_backups
sudo chown backupuser:backupuser /backup/server_backups

Ardından, script’i bu kullanıcıyla çalıştırın:

sudo -u backupuser /usr/local/bin/backup_script.sh

3. rsync ile --delete Seçeneğini Dikkatli Kullanma

--delete seçeneği, hedef dizinde kaynakta olmayan dosyaları siler. Bu, yanlışlıkla veri kaybına neden olabilir. Önce test edin! Örneğin, sadece --dry-run seçeneğiyle simülasyon yapın:

rsync -avzn --delete /home/ /backup/home_backup/

Eğer sonuçtan memnunsanız, --dry-run kaldırarak gerçek yedeklemeyi yapın.


📊 Yedekleme Stratejileri ve En İyi Uygulamalar

1. 3-2-1 Yedekleme Kuralı

Güvenilir bir yedekleme stratejisi için 3-2-1 kuralını uygulayın:

  • 3 kopya veriniz olsun (orijinal + 2 yedek).
  • 2 farklı ortamda saklayın (örneğin, yerel disk + uzak sunucu).
  • 1 kopya fiziksel olarak farklı bir konumda olsun (örneğin, bulut depolama).

2. Yedekleme Türleri

TürAçıklamaAvantajlarıDezavantajları
Tam YedeklemeTüm verilerin kopyası.Kolay kurtarma.Depolama alanı ve zaman tüketir.
Artımlı YedeklemeYalnızca değişiklik yapılan dosyalar.Hızlı ve verimli.Kurtarma için tüm artımlı yedeklere ihtiyaç duyulabilir.
Fark YedeklemeSon tam yedekten sonraki tüm değişiklikler.Artımlı yedeklemeye göre daha az veri.Kurtarma için en son tam yedek ve en son fark yedeği gereklidir.

Öneri: Tam yedeklemeyi haftalık, artımlı yedeklemeyi günlük olarak planlayın.

3. Yedekleme Sıklığı

Veri TürüÖnerilen Sıklık
Kritik veriler (örneğin veritabanları)Günlük
Kullanıcı verileri (örneğin /home)Günlük/Haftalık
Sistem yapılandırmaları (örneğin /etc)Haftalık
Geçici dosyalar (örneğin /tmp)Hariç tutulmalı

4. Yedekleme Doğrulama

Yedekleme yaptığınızdan emin olmak için doğrulama adımları uygulayın:

  1. Dosya bütünlüğü kontrolü:
sha256sum /backup/server_backups/backup_2024-05-20_14-30-00/home/user/file.txt
  1. Yedekten kurtarma testi:
rsync -avz /backup/server_backups/backup_2024-05-20_14-30-00/home/ /tmp/test_recovery/
  1. Log dosyalarını inceleme:
grep -i "error\|failed" /var/log/backup.log

🚀 Gelişmiş Senaryolar

1. Uzak Sunucuya Yedekleme (Bulut veya Veri Merkezi)

Aşağıdaki komutla, yedekleri AWS S3’e gönderin:

# AWS CLI kurulumu (henüz yoksa)
sudo apt install awscli -y

# AWS CLI yapılandırma
aws configure

# Yedekleme komutu
rsync -avz --delete /home/ /tmp/s3_sync/
aws s3 sync /tmp/s3_sync/ s3://your-bucket-name/backups/server_backups/

2. Veritabanı Yedekleme

Veritabanı yedeklerini de dahil etmek için script’e aşağıdaki satırları ekleyin:

# MySQL veritabanı yedekleme
mysqldump -u root -pPASSWORD --all-databases > /tmp/all_databases.sql
rsync -avz /tmp/all_databases.sql "$BACKUP_PATH/databases/"

3. Docker Konteyner Yedekleme

Docker konteyner verilerini yedeklemek için:

# Konteyner listesini al
CONTAINER_IDS=$(docker ps -aq)

# Her konteynerin verilerini yedekle
for CONTAINER_ID in $CONTAINER_IDS; do
    CONTAINER_NAME=$(docker inspect --format '{{.Name}}' $CONTAINER_ID | tr -d '/')
    docker export $CONTAINER_ID > "$BACKUP_PATH/docker/$CONTAINER_NAME.tar"
done

⚠️ Yaygın Hatalar ve Çözümleri

HataNedeniÇözümü
Yedekleme başarısız olduDisk dolu, izin sorunu, ağ bağlantısı kesildi.Log dosyalarını kontrol edin, disk alanını temizleyin.
Hedef dizinde dosyalar eksik--delete seçeneğiyle yanlışlıkla silindi.--dry-run ile test edin, kurtarma script’i oluşturun.
Yavaş yedeklemeAğ bant genişliği sınırlı, çok fazla dosya.Sıkıştırma kullanın (-z), hariç tutulacak dizinleri belirleyin.
Yedekten kurtarma başarısızDosya bütünlüğü bozulmuş.Doğrulama adımlarını uygulayın, checksum kontrolü yapın.
Cron çalışmıyorPATH sorunu, script izinleri eksik.Cron’a tam yolu kullanın, script’e çalıştırma izni verin.

📚 Kaynaklar ve İleri Okuma


🎯 Sonuç

Linux sunucularınızda rsync kullanarak otomatik, güvenilir ve verimli yedekleme sistemleri kurmak, veri kaybını önlemenin en etkili yollarından biridir. Bu rehberde öğrendiğiniz adımları takip ederek:

Verilerinizi düzenli olarak yedekleyebilirsiniz.Yedekleme işlemlerini otomatikleştirebilirsiniz.Güvenlik önlemleriyle verilerinizi koruyabilirsiniz.Yedeklerden kolayca kurtarma yapabilirsiniz.

Unutmayın, yedekleme sadece bir kopyadır, kurtarma ise gerçek testtir. Düzenli olarak yedeklerden kurtarma testleri yaparak sisteminizin hazır olduğunu doğrulayın.

Eğer bu rehber size faydalı olduysa, beğenmeyi, paylaşmayı ve yorum yapmayı unutmayın. Teknik içerikler üretmeye devam edeceğim, takipte kalın!

Sorularınız veya önerileriniz varsa, aşağıdaki yorum bölümünde paylaşabilirsiniz.


Bu rehber, Caner Serbest tarafından hazırlanmıştır. Tüm hakları saklıdır.


Bu yazı Mistral ile otomatik oluşturulmuştur.