Rsync ve Rclone ile Sağlam ve Otomatik Yedekleme Stratejileri

 · 

Rsync ve Rclone ile Sağlam ve Otomatik Yedekleme Stratejileri

Rsync ve Rclone ile Sağlam ve Otomatik Yedekleme Stratejileri

Veri bütünlüğü ve iş sürekliliği, her IT operasyonunun temelini oluşturur. Bu bağlamda, etkili bir yedekleme stratejisi oluşturmak kritik öneme sahiptir. Rsync ve Rclone, farklı yetenek setleriyle bu stratejinin iki temel bileşenini sunar. Rsync, yerel veya ağ üzerinden sunucular arası dosya senkronizasyonu ve yedeklemede eşsiz hız ve verimlilik sağlarken, Rclone bulut depolama hizmetleriyle entegrasyon için vazgeçilmez bir araçtır.

Rsync: Temel Senkronizasyon ve Veri Bütünlüğü

Rsync (remote sync), Unix benzeri sistemlerde dosya ve dizinleri yerel olarak veya ağ üzerinden eşitlemek için kullanılan güçlü bir yardımcı programdır. En belirgin özelliği, yalnızca kaynak ve hedef arasındaki farkları (delta transfer) aktararak bant genişliğini minimuma indirmesidir. Bu, büyük veri setleriyle çalışırken veya dar bant genişliğine sahip bağlantılarda yedekleme süresini ve kaynak tüketimini dramatik şekilde azaltır.

Rsync ile Yerel Dizin Yedekleme

Bir sunucu üzerindeki kritik yapılandırma dosyalarını veya uygulama verilerini aynı sunucudaki farklı bir diske veya dizine yedeklemek, Rsync'in en basit ve yaygın kullanım senaryolarından biridir. Aşağıdaki örnek, kaynak dizini hedef dizine kopyalar, mevcut dosyaları günceller ve kaynakta olmayan dosyaları hedeften siler (aynı kopyayı korur).

rsync -avh --delete /opt/appdata/ /mnt/backup/appdata_daily/
  • -a: Arşiv modu (rekürsif, sembolik bağlantıları koru, izinleri koru, zaman damgalarını koru, grup ve sahip bilgilerini koru).
  • -v: Ayrıntılı çıktı.
  • -h: İnsan tarafından okunabilir boyutlar.
  • --delete: Hedefte kaynakta olmayan dosyaları sil.

SSH Üzerinden Uzak Sunucuya Artımlı Yedekleme

Uzak bir sunucuya yedekleme, Rsync'in en güçlü özelliklerinden biridir. SSH protokolünü kullanarak güvenli ve şifreli bir bağlantı üzerinden veri aktarımı sağlar.

rsync -avzhe ssh --delete /var/log/apache2/ kullanici@yedek_sunucu:/mnt/uzak_yedekler/weblogs/
  • -z: Veri aktarımı sırasında sıkıştırma kullan. Bu, bant genişliği kısıtlı ortamlarda performansı artırır.
  • -e ssh: SSH'i uzak shell olarak kullan.

Rsync ile Üretim Ortamı Senaryosu: Log Sunucusu Arşivleme

Büyük ölçekli bir e-ticaret platformunda, web sunucularından gelen erişim logları (Apache, Nginx) sürekli olarak merkezi bir log sunucusuna aktarılır. Bu loglar, analitik ve güvenlik denetimleri için kritik öneme sahiptir. Log sunucusundaki disk alanı dolmadan önce, eski logların uzun süreli depolama için ayrı bir yedekleme sunucusuna taşınması gerekir. Rsync, bu senaryoda mükemmel bir çözümdür.

Her gece, 30 günden eski log dizinleri Rsync ile yedekleme sunucusuna aktarılır ve başarıyla aktarılanlar yerel log sunucusundan silinir. Bu, hem disk alanını yönetir hem de verilere erişilebilirliği sağlar.

# Önce 30 günden eski logları bulup listele
find /var/log/apache2/ -maxdepth 1 -type d -mtime +30 -print0 | while IFS= read -r -d $'
' dir;
do
  # Rsync ile uzak sunucuya aktar
  rsync -avzhe ssh --remove-source-files "$dir/" kullanici@yedek_sunucu:/mnt/log_arsivi/apache2/
  echo "Aktarıldı ve silindi: $dir"
done
  • --remove-source-files: Başarılı aktarımdan sonra kaynak dosyaları sil. Bu, arşivleme ve yerel disk alanı yönetimi için önemlidir.

Rclone: Bulut Depolama ile Kusursuz Senkronizasyon

Rclone, Amazon S3, Google Cloud Storage, Azure Blob Storage, Dropbox, Google Drive ve daha birçok bulut depolama hizmetiyle entegre olabilen, komut satırı tabanlı, çok yönlü bir senkronizasyon aracıdır. Rsync'in aksine, Rclone'un temel gücü farklı depolama sağlayıcıları arasında ve yerel disk ile bulut arasında veri aktarımı yapabilmesidir.

Rclone Yapılandırması: AWS S3 Örneği

Rclone'u kullanmadan önce hedef depolama hizmetini yapılandırmak gerekir. Bu, interaktif bir süreçtir.

rclone config

Bu komut, yeni bir remote (uzak hedef) oluşturmanıza olanak tanır. Örneğin, AWS S3 için aşağıdaki gibi adımlar izlenebilir:

  1. n (new remote) seçeneğini seçin.
  2. Remote adını girin (örn: my-s3-backup).
  3. Depolama tipi olarak s3'ü seçin.
  4. access_key_id ve secret_access_key girin (veya IAM rolü kullanın).
  5. Varsayılan bölgeyi ve diğer ayarları yapılandırın.

Rclone ile Yerelden Buluta Senkronizasyon

Yerel bir dizindeki verileri yapılandırılmış bir S3 kovasına senkronize etmek oldukça basittir.

rclone sync /var/lib/postgresql/backup/ my-s3-backup:veritabani-yedekleri/pg_dump/ --log-file=/var/log/rclone_s3.log --progress
  • sync: Kaynak ve hedefi senkronize eder, hedeften kaynakta olmayan dosyaları siler.
  • my-s3-backup:: Yapılandırılmış S3 remote'un adıdır.
  • veritabani-yedekleri/pg_dump/: S3 kovası içindeki dizin yolu.
  • --log-file: İşlemlerin bir log dosyasına yazılmasını sağlar.
  • --progress: Aktarım sırasında ilerleme durumunu gösterir.

Rclone ile Üretim Ortamı Senaryosu: Veritabanı Yedeklerini S3'e Aktarma

Yüksek trafikli bir SaaS uygulamasının günlük PostgreSQL veritabanı yedeği alınır. Bu yedekler, yerel diskte belirli bir süre (örneğin 7 gün) tutulduktan sonra felaket kurtarma ve uzun süreli arşivleme için AWS S3'e aktarılmalıdır. Rclone, bu senaryoda yerel yedekleri S3'e taşıyarak güvenliği ve erişilebilirliği artırır.

#!/bin/bash

# PostgreSQL yedekleme dizini
LOCAL_DB_BACKUP_DIR="/var/lib/postgresql/backups"

# Rclone uzak hedefi ve S3 kovası yolu
S3_REMOTE="my-s3-backup"
S3_PATH="s3-db-backups/production_db"

# Rclone log dosyası
LOG_FILE="/var/log/rclone_db_sync.log"

# Rclone ile yerel yedekleri S3'e senkronize et
rclone sync "${LOCAL_DB_BACKUP_DIR}" "${S3_REMOTE}:${S3_PATH}" \
  --progress \
  --log-file="${LOG_FILE}" \
  --log-level INFO \
  --s3-acl private \
  --transfers 8 \
  --checkers 8

# Rclone işlemi başarılı olursa 7 günden eski yerel yedekleri sil
if [ $? -eq 0 ]; then
  find "${LOCAL_DB_BACKUP_DIR}" -type f -mtime +7 -delete
  echo "$(date): Eski yerel yedekler başarıyla silindi."
else
  echo "$(date): Rclone senkronizasyonu başarısız oldu, yerel yedekler silinmedi."
fi
  • --s3-acl private: Yüklenen objelerin sadece hesap sahibi tarafından erişilebilir olmasını sağlar.
  • --transfers ve --checkers: Paralel dosya aktarımı ve kontrol sayısını belirterek performansı artırır.

Hibrit Stratejiler: Rsync ve Rclone Birlikte

En sağlam yedekleme stratejileri genellikle Rsync ve Rclone'u bir arada kullanır. Örneğin:

  1. Kademe 1 (Hızlı Kurtarma): Rsync kullanarak kritik verileri aynı veri merkezindeki farklı bir sunucuya veya depolama birimine (NAS/SAN) kopyalayın. Bu, hızlı yerel geri yüklemeler için idealdir.
  2. Kademe 2 (Felaket Kurtarma/Arşivleme): Yerel yedekler oluştuktan sonra, Rclone kullanarak bu yedekleri coğrafi olarak yedekli bir bulut depolama hizmetine (örn. S3, GCS) aktarın. Bu, veri kaybı riskini minimize eder ve uzun süreli saklama gereksinimlerini karşılar.

Bu hibrit yaklaşım, hem hızlı yerel kurtarma yetenekleri sağlar hem de bölgesel arızalara veya felaketlere karşı tam koruma sunar.

Yedekleme Süreçlerinin Otomatikleştirilmesi ve İzlenmesi

Manuel yedeklemeler hataya açıktır. Bu nedenle, Rsync ve Rclone komutlarının zamanlanmış görevlerle otomatikleştirilmesi elzemdir. Linux sistemlerinde cron veya systemd timers bu amaçla kullanılabilir.

Cron ile Otomatikleştirme

Günlük bir yedekleme işi için crontab -e komutu ile aşağıdaki gibi bir giriş eklenebilir:

0 3 * * * /usr/local/bin/yedekleme_scripti.sh >> /var/log/yedekleme.log 2>&1

Burada yedekleme_scripti.sh, Rsync ve Rclone komutlarını içeren özel bir bash betiğidir. Çıktı ve hatalar log dosyasına yönlendirilir.

İzleme ve Raporlama

Otomatik yedeklemelerin çalıştığından emin olmak için izleme mekanizmaları kurulmalıdır. Log dosyalarının düzenli olarak incelenmesi, yedekleme hatalarını tespit etmek için önemlidir. Ayrıca, Prometheus, Grafana veya özel betikler aracılığıyla yedekleme durumunu izleyebilir ve başarısızlık durumunda uyarılar (Slack, E-posta, PagerDuty) gönderebilirsiniz.

Sonuç

Rsync ve Rclone, modern IT altyapılarında veri yedekleme ve senkronizasyon için vazgeçilmez iki araçtır. Rsync'in delta transfer yeteneği yerel ve ağ içi yedeklemelerde verimlilik sağlarken, Rclone'un geniş bulut depolama entegrasyonu veri güvenliğini ve erişilebilirliğini coğrafi olarak dağıtma imkanı sunar. Bu iki aracı birleştirerek, işletmeler yalnızca felaketlere karşı dayanıklı olmakla kalmaz, aynı zamanda veri yönetimi süreçlerini optimize ederek operasyonel maliyetleri de düşürebilirler. Kapsamlı bir yedekleme stratejisi, bu araçların doğru senaryolarda etkin bir şekilde kullanılmasıyla başlar ve düzenli testlerle güvence altına alınır.

← Blog Listesine Dön