Linux Üzerinde rsync ve cron ile Otomatik, Verimli ve Güvenilir Yedekleme Stratejileri
Linux sistemlerinde rsync ve cron kullanarak nasıl otomatik, verimli ve güvenilir yedeklemeler yapabileceğinizi adım adım öğrenin. Veri kaybını önlemek ve sistem güvenliğini artırmak için pratik rehber.
Caner Serbest
Sistem ve Altyapı
7 min read
Linux Üzerinde rsync ve cron ile Otomatik, Verimli ve Güvenilir Yedekleme Stratejileri
Sistem yöneticilerinin en önemli sorumluluklarından biri, verilerin güvenliğini sağlamaktır. Bir sunucu çökmesi, insan hatası veya kötü niyetli saldırılar sonucunda veri kaybı yaşanabilir. Bu nedenle, güvenilir ve otomatik yedekleme stratejileri geliştirmek, her sistem yöneticisinin temel becerilerinden biri olmalıdır.
Bu rehberde, Linux sistemlerinde rsync ve cron kullanarak nasıl otomatik, verimli ve güvenilir yedeklemeler yapabileceğinizi adım adım öğreneceksiniz. Ayrıca, yedekleme stratejilerini optimize etmek, hata senaryolarını yönetmek ve sistem performansını korumak için ipuçları paylaşacağız.
🔍 Neden rsync ve cron?
Linux dünyasında yedekleme yapmak için birçok araç mevcuttur:
- tar: Dosyaları arşivlemek için kullanılır, ancak büyük dosyalarla çalışırken performans sorunları yaşanabilir.
- dd: Disk düzeyinde yedekleme yapar, ancak dosya düzeyinde esneklik sağlamaz.
- rsync: Dosya düzeyinde senkronizasyon ve yedekleme yapmak için optimize edilmiş bir araçtır. Aynı zamanda veri aktarımını hızlandırır, bandwidth kullanımını optimize eder ve hatalı dosyaları tespit eder.
- cron: Belirli zamanlarda otomatik olarak komutları çalıştırmak için kullanılan bir zamanlayıcıdır. Yedekleme işlemlerini otomatikleştirmek için ideal bir araçtır.
rsync + cron kombinasyonu, hem verimli hem de otomatik yedeklemeler yapmanızı sağlar. Ayrıca, incremental yedekleme (sadece değişen dosyaları yedekleme) desteği sayesinde disk alanından tasarruf edersiniz.
🛠️ Temel rsync Kullanımı
Öncelikle, rsync’in temel kullanımını öğrenelim. rsync komutunun genel yapısı şu şekildedir:
rsync [seçenekler] kaynak_dizin hedef_dizin
📌 En sık kullanılan rsync seçenekleri:
| Seçenek | Açıklama |
|---|---|
-a | Arşiv modunu etkinleştirir (sembolik linkler, dosya izinleri, sahiplik bilgileri korunur). |
-v | Ayrıntılı çıktı verir (verbose mod). |
-z | Veri aktarımı sırasında sıkıştırma uygular. |
-P | İlerlemeyi gösterir ve kısmi aktarımları devam ettirir. |
--delete | Hedef dizinde kaynakta olmayan dosyaları siler. |
--exclude | Belirli dosya/dizinleri hariç tutar. |
--dry-run | Gerçek bir aktarım yapmadan, ne yapılacağını gösterir. |
📌 Örnek Kullanımlar
1. Yerel dizinler arasında yedekleme
rsync -avz --delete /home/kullanici/dokumanlar/ /backup/dokumanlar/
Bu komut:
/home/kullanici/dokumanlar/dizinindeki tüm dosyaları/backup/dokumanlar/dizinine kopyalar.-aseçeneği sayesinde dosya izinleri, sahiplik bilgileri ve sembolik linkler korunur.-vsayesinde ayrıntılı çıktı alırsınız.-zsayesinde aktarım sırasında sıkıştırma uygulanır.--deletesayesinde hedef dizinde kaynakta olmayan dosyalar silinir (böylece yedekleme tamamen senkronize olur).
2. Uzak sunucuya yedekleme (SSH üzerinden)
rsync -avz -e ssh /home/kullanici/dokumanlar/ kullanici@uzak_sunucu:/backup/dokumanlar/
Bu komut, yerel dizini uzak bir sunucuya SSH üzerinden kopyalar. -e ssh seçeneği, rsync’in SSH protokolünü kullanmasını sağlar.
3. Belirli dosya türlerini hariç tutma
rsync -avz --exclude='*.tmp' --exclude='*.log' /home/kullanici/dokumanlar/ /backup/dokumanlar/
Bu komut, .tmp ve .log uzantılı dosyaları yedeklemez.
4. Kuru çalıştırma (Dry Run)
rsync -avz --dry-run /home/kullanici/dokumanlar/ /backup/dokumanlar/
Bu komut, gerçek bir aktarım yapmadan ne yapılacağını gösterir. Önce bu komutu çalıştırarak, yanlışlıkla önemli dosyaları silme riskini ortadan kaldırabilirsiniz.
⏰ cron ile Otomatik Yedekleme
cron, Linux sistemlerinde belirli zamanlarda komutları otomatik olarak çalıştırmak için kullanılan bir zamanlayıcıdır. cron kullanarak, rsync komutunu otomatik olarak çalıştırabilir ve yedeklemelerinizi planlayabilirsiniz.
📌 cron Nasıl Çalışır?
cron, /etc/crontab dosyası veya kullanıcı özelindeki crontab dosyaları aracılığıyla çalışır. cron tablosu aşağıdaki formatta oluşturulur:
* * * * * komut
│ │ │ │ │
│ │ │ │ └── Haftanın hangi günü (0 - 7) (0 ve 7 Pazar anlamına gelir)
│ │ │ └──── Ayın kaçıncı günü (1 - 31)
│ │ └────── Ay (1 - 12)
│ └──────── Saat (0 - 23)
└────────── Dakika (0 - 59)
📌 cron Tablosu Oluşturma
- Kullanıcı özelinde cron tablosu oluşturma:
crontab -e
Bu komut, varsayılan metin düzenleyicisinde cron tablonuzu açar. Eğer metin düzenleyiciniz yoksa, export EDITOR=nano gibi bir komutla düzenleyiciyi ayarlayabilirsiniz.
- Örnek cron satırları:
-
Her gün saat 02:00’de yedekleme yap:
0 2 * * * rsync -avz --delete /home/kullanici/dokumanlar/ /backup/dokumanlar/ -
Her hafta Pazar günü saat 03:00’te tam yedekleme yap (tüm dosyaları arşivle):
0 3 * * 0 tar -czvf /backup/tam_yedek_$(date +%Y%m%d).tar.gz /home/kullanici/dokumanlar/ -
Her saat başı yedekleme yap (ancak sadece değişen dosyaları kopyala):
0 * * * * rsync -avz --delete /home/kullanici/dokumanlar/ /backup/dokumanlar/
📌 cron’un Çalıştığından Emin Olma
cron’un çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
crontab -l
Bu komut, mevcut cron tablonuzu gösterir. Ayrıca, cron’un çalıştığını doğrulamak için aşağıdaki komutu kullanabilirsiniz:
grep CRON /var/log/syslog
Bu komut, cron’un çalıştığına dair log kayıtlarını gösterir.
🔄 Yedekleme Stratejileri ve En İyi Uygulamalar
Yedekleme stratejisi oluştururken aşağıdaki faktörleri göz önünde bulundurmalısınız:
-
Yedekleme sıklığı: Ne sıklıkla yedekleme yapmanız gerektiği, verilerinizin önemine ve değişim sıklığına bağlıdır. Örneğin, sık güncellenen veriler için günlük yedekleme, nadiren değişen veriler için haftalık yedekleme yeterli olabilir.
-
Yedekleme türleri:
- Tam yedekleme (Full Backup): Tüm dosyaların kopyalanması. Disk alanını fazla kullanır, ancak kurtarma süreci hızlıdır.
- Artımlı yedekleme (Incremental Backup): Sadece değişen dosyaların kopyalanması. Disk alanından tasarruf sağlar, ancak kurtarma süreci daha karmaşıktır.
- Fark yedekleme (Differential Backup): Son tam yedeklemeden sonra değişen dosyaların kopyalanması. Artımlı yedeklemeye göre kurtarma süreci daha basittir.
-
Yedekleme depolama yeri:
- Yerel depolama: Hızlı erişim sağlar, ancak fiziksel hasar veya hırsızlık riski vardır.
- Uzak depolama (Bulut, uzak sunucu): Veri kaybı riskini azaltır, ancak aktarım hızı ve maliyet faktörleri göz önünde bulundurulmalıdır.
- Çevrimdışı depolama (USB, harici disk): Veri kaybı riskini azaltır, ancak erişim kolaylığı düşüktür.
-
Yedekleme doğrulama: Yedekleme işlemi tamamlandıktan sonra, yedeklenen verilerin doğruluğunu kontrol etmek önemlidir. Bunun için aşağıdaki yöntemleri kullanabilirsiniz:
- Dosya karşılaştırma:
diffkomutunu kullanarak kaynak ve hedef dizinleri karşılaştırabilirsiniz. - Doğrulama komutları:
rsync --checksumseçeneğini kullanarak dosyaların bütünlüğünü kontrol edebilirsiniz.
- Dosya karşılaştırma:
📌 Örnek Yedekleme Stratejisi
Aşağıda, orta ölçekli bir Linux sunucu için önerilen bir yedekleme stratejisi bulunmaktadır:
| Zaman Aralığı | Yedekleme Türü | Komut Örneği |
|---|---|---|
| Her gün saat 02:00 | Artımlı yedekleme (sadece değişen dosyalar) | rsync -avz --delete /home/kullanici/dokumanlar/ /backup/dokumanlar/ |
| Her hafta Pazar günü saat 03:00 | Tam yedekleme (tüm dosyalar arşivlenir) | tar -czvf /backup/tam_yedek_$(date +%Y%m%d).tar.gz /home/kullanici/dokumanlar/ |
| Her ayın 1’inde saat 04:00 | Uzak sunucuya yedekleme (SSH üzerinden) | rsync -avz -e ssh /home/kullanici/dokumanlar/ kullanici@uzak_sunucu:/backup/dokumanlar/ |
Bu strateji sayesinde:
- Günlük artımlı yedeklemeler ile disk alanından tasarruf sağlanır.
- Haftalık tam yedeklemeler sayesinde kurtarma süreci hızlanır.
- Aylık uzak yedeklemeler sayesinde veri kaybı riski minimize edilir.
🛡️ Yedekleme Güvenliği ve Hata Yönetimi
Yedeklemelerinizin güvenliğini sağlamak ve olası hataları yönetmek için aşağıdaki adımları izleyin:
1. Yedekleme Dosyalarını Şifreleme
Yedekleme dosyalarınızı şifrelemek, veri güvenliğini artırır. Bunun için aşağıdaki yöntemleri kullanabilirsiniz:
- GPG ile şifreleme:
tar -czvf - /home/kullanici/dokumanlar/ | gpg —encrypt —recipient “[email protected]” > /backup/yedek.tar.gz.gpg
- **LUKS ile disk şifreleme**: Yedekleme disklerini LUKS ile şifreleyerek fiziksel erişimden koruyabilirsiniz.
### 2. **Yedekleme Dosyalarını Doğrulama**
Yedekleme işlemi tamamlandıktan sonra, aşağıdaki komutlarla dosyaların bütünlüğünü kontrol edin:
```bash
# Dosyaları karşılaştırma
diff -r /home/kullanici/dokumanlar/ /backup/dokumanlar/
# rsync ile checksum karşılaştırma
rsync -avz --checksum /home/kullanici/dokumanlar/ /backup/dokumanlar/
3. Hata Senaryolarını Yönetme
Yedekleme sırasında oluşabilecek hataları yönetmek için aşağıdaki adımları izleyin:
- Log kayıtlarını inceleme:
grep rsync /var/log/syslog
- **E-posta bildirimleri**: cron’un çıktısını e-posta olarak almak için aşağıdaki satırı cron tablonuza ekleyin:
MAILTO=“[email protected]” 0 2 * * * rsync -avz —delete /home/kullanici/dokumanlar/ /backup/dokumanlar/ > /var/log/yedekleme.log 2>&1
- **Hata durumunda otomatik bildirim**: rsync’in hata durumunda çıkış kodunu kontrol ederek, hata durumunda otomatik bildirim gönderebilirsiniz:
```bash
rsync -avz --delete /home/kullanici/dokumanlar/ /backup/dokumanlar/ || echo "Yedekleme başarısız oldu!" | mail -s "Yedekleme Hatası" [email protected]
4. Yedekleme Diski Sağlığını İzleme
Yedekleme disklerinin sağlığını izlemek için aşağıdaki komutları kullanabilirsiniz:
# Disk kullanımını kontrol et
df -h
# Disk hatalarını tespit et
smartctl -a /dev/sdX
📊 Yedekleme Performansını Optimize Etme
Yedekleme işlemleri sırasında performans sorunları yaşanabilir. Aşağıdaki ipuçlarıyla yedekleme performansını optimize edebilirsiniz:
1. rsync Seçeneklerini Optimize Etme
-z(sıkıştırma) seçeneğini kullanırken, sıkıştırılabilir dosyalar için (örneğin metin dosyaları) performans artışı sağlar. Ancak, zaten sıkıştırılmış dosyalar (örneğin.zip,.jpg) için sıkıştırma işlemi performansı düşürebilir.-P(ilerleme göster) seçeneği, büyük dosyaların aktarımında kullanıcıya ilerleme bilgisi verir ve kısmi aktarımları devam ettirir.--inplaceseçeneği, dosyaların yerinde güncellenmesini sağlar ve geçici dosya oluşturma işleminden kaçınarak performansı artırır.
2. Ağ Bant Genişliğini Yönetme
Ağ üzerinden yedekleme yaparken bant genişliği kullanımını sınırlamak için aşağıdaki seçenekleri kullanabilirsiniz:
rsync -avz --bwlimit=1000 --delete /home/kullanici/dokumanlar/ kullanici@uzak_sunucu:/backup/dokumanlar/
Bu komut, bant genişliğini 1000 KB/s ile sınırlar.
3. Paralel İşlemler Kullanma
Büyük dosyaların yedeklenmesi sırasında paralel işlemler kullanarak performansı artırabilirsiniz. Bunun için parallel-rsync gibi araçları kullanabilirsiniz:
parallel-rsync -a -j 4 /home/kullanici/dokumanlar/ /backup/dokumanlar/
Bu komut, 4 paralel işlem kullanarak yedekleme yapar.
🔚 Sonuç ve Öneriler
Linux sistemlerinde rsync ve cron kullanarak otomatik, verimli ve güvenilir yedeklemeler yapmak mümkündür. Bu rehberde öğrendiğiniz tekniklerle:
✅ Veri kaybını önleyebilirsiniz. ✅ Yedekleme işlemlerini otomatikleştirebilirsiniz. ✅ Disk alanından tasarruf sağlayabilirsiniz. ✅ Yedekleme güvenliğini artırabilirsiniz. ✅ Performansı optimize edebilirsiniz.
📌 Önerilen Adımlar
- rsync’in temel kullanımını öğrenin ve senaryolarınıza uygun komutları oluşturun.
- cron tablonuzu oluşturun ve yedekleme işlemlerini planlayın.
- Yedekleme stratejinizi belirleyin (tam, artımlı, fark yedekleme).
- Yedekleme güvenliğini sağlayın (şifreleme, doğrulama).
- Performansı optimize edin (bant genişliği sınırlama, paralel işlemler).
- Hata senaryolarını yönetin (log kayıtları, e-posta bildirimleri).
Unutmayın, yedekleme stratejiniz ne kadar iyi olursa, veri kaybı riskiniz o kadar düşük olur. Sistem yöneticisi olarak, verilerinizin güvenliğini sağlamak sizin sorumluluğunuzdadır. Bu rehberde öğrendiğiniz teknikleri uygulayarak, verilerinizi koruyabilir ve sistem güvenliğinizi artırabilirsiniz.
Eğer yedekleme konusunda daha fazla bilgi edinmek isterseniz, aşağıdaki kaynaklara göz atabilirsiniz:
Başarılar ve güvenli yedeklemeler! 🚀
Bu yazı Mistral ile otomatik oluşturulmuştur.