Birden fazla sunucudan veri yedekleme işlemini otomatikleştirmek ve hızlandırmak, sistem yöneticileri için kritik bir ihtiyaca dönüşmüş durumda. Bash betikleri kullanarak paralel yedekleme yapmak, bu süreci hem daha etkin hem de zaman açısından optimize edebilir. Peki, nasıl?
İlk olarak, temel yapılandırma ve uygun araçlar belirlenmeli. GNU Parallel veya background işlemler (&) kullanmak, çoklu sunucu bağlantılarını paralel hale getirmenin en yaygın yollarıdır.
Bu araç, aynı anda birden fazla SSH veya rsync işlemini başlatmanıza olanak tanır. Örneğin, bir liste dosyasıyla (sunucu listesi) şu şekilde kullanılabilir:
12bash
cat sunucular.txt | parallel -j 4 "rsync -avz -e ssh user@{}:/kaynak/yol /hedef/yol/{/}"
Burada, -j 4 ile aynı anda 4 işlem paralel çalışır. Her sunucu için rsync komutu çalıştırılır, böylece zaman tasarrufu sağlar.
- Background İşlemler Kullanmak:
Her sunucu için ayrı rsync komutunu arka planda başlatmak, basit ve hızlı bir yöntemdir. Örnek:
12345bash
for sunucu in sunucu1 sunucu2 sunucu3; do
rsync -avz -e ssh user@$sunucu:/kaynak/yol /hedef/yol/$sunucu &
done
wait
Bu yapı, tüm işlemler bitene kadar bekler ve sonrasında süreç tamamlanır.
- Hata Kontrolü ve Loglama:
Paralel işlemler sırasında hata olasılığı artar. Bu nedenle, çıktıları ve hata durumlarını log dosyalarına yönlendirmek, sorunları tespit ve çözmede kolaylık sağlar. Ayrıca, her işlem başarısız olursa tekrar deneme mekanizması eklenebilir.
SSH bağlantılarında anahtar tabanlı kimlik doğrulama kullanmak, otomatik girişleri kolaylaştırır ve güvenliği artırır. Ayrıca, rsync parametreleriyle sıkıştırma (-z) ve sıkıştırmayı devre dışı bırakma (–no-compress) duruma göre ayarlanabilir.
Gelişmiş senaryolarda ise, bu temel yapıların üzerine hata yönetimi, zamanlama ve kaynak kullanımı optimizasyonu eklenerek daha sağlam ve güvenilir yedekleme sistemleri kurulabilir.
Sizce, bu yöntemlerden hangisi, mevcut altyapınıza daha uygun? veya başka hangi tekniklerle paralel yedekleme performansını artırabilirsiniz?