Bu betik, cPanel/WHM yüklü bir sunucuda, sunucuda barındırılan tüm cPanel hesaplarının yedeklerini otomatik olarak almak için tasarlanmış bir Bash betiğidir. cPanel, web hosting hizmetlerinde yaygın olarak kullanılan bir kontrol panelidir ve bu betik, web hosting sağlayıcıları veya web sitelerini yöneten sistem yöneticileri için son derece yararlı olabilir. Özellikle büyük sayıda web sitesi yönetenler için zaman ve emek tasarrufu sağlar.
Betiğin İşlevselliği ve Kullanımı
Bu betik, sunucuda barındırılan her bir cPanel kullanıcısının yedeğini /root/backups/
dizinine cpmove
formatında alır. cpmove
yedek dosyaları, bir cPanel hesabına ait neredeyse tüm verileri içerir: e-postalar, web dosyaları, veritabanları, cPanel ayarları ve daha fazlası. Bu yedekleme yöntemi, özellikle bir cPanel hesabını başka bir sunucuya taşımak veya mevcut sunucuda bir hesabı geri yüklemek istediğinizde kullanışlıdır.
Betiğin Yapısı
- Kök Kullanıcı Kontrolü: Betik, yalnızca root kullanıcısı tarafından çalıştırılabilir. Bu, cPanel hesaplarını yedeklemenin yönetici hakları gerektirmesi nedeniyledir.
- Yedekleme Dizini Kontrolü ve Oluşturma: Betik, yedeklerin saklanacağı
/root/backups/
dizininin varlığını kontrol eder; eğer bu dizin yoksa, oluşturur. - cPanel Kullanıcılarının Alınması: Betik,
/etc/trueuserdomains
dosyasından tüm cPanel kullanıcılarını alır ve bu kullanıcılar için yedekleme işlemi gerçekleştirir. - Yedekleme İşlemi: Her bir cPanel kullanıcısı için
/usr/local/cpanel/scripts/pkgacct
komutu kullanılarak yedekleme işlemi yapılır. Bu işlem sırasında oluşabilecek hatalar, kullanıcı bazında log dosyalarına kaydedilir.
Kimler İçin Faydalıdır?
- Web Hosting Sağlayıcıları: Büyük sayıda cPanel hesabı yöneten hosting şirketleri, bu betiği müşterilerinin verilerini düzenli olarak yedeklemek için kullanabilir.
- Sistem Yöneticileri: Birden fazla cPanel hesabını yöneten sistem yöneticileri, olası bir sistem hatası veya veri kaybı durumunda hızlı bir şekilde geri yükleme yapabilmek için bu betiği kullanabilir.
- Web Geliştiricileri: Kendi sunucularında birden fazla proje geliştiren ve bu projeleri düzenli olarak yedeklemek isteyen geliştiriciler için de yararlıdır.
Potansiyel Sorunlar ve Çözümleri
- Yazma İzinleri: Eğer betik, yedekleme dizinine yazma izni olmadan çalıştırılırsa, yedekleme işlemi başarısız olabilir. Bu durumda, dizinin yazma izinlerini kontrol edin.
- Disk Alanı: Yeterli disk alanının olmaması, yedekleme işleminin başarısız olmasına neden olabilir. Disk kullanımını düzenli olarak kontrol edin ve gereksiz dosyaları temizleyin.
- cPanel Kullanıcı Adı Sorunları:
/etc/trueuserdomains
dosyasından alınan kullanıcı adlarının doğruluğunu kontrol edin. Yanlış veya geçersiz kullanıcı adları işlemi durdurabilir.
Bu betik, cPanel/WHM kullanılarak yönetilen sunucularda veri güvenliğini sağlamak ve olası veri kayıplarına karşı önlem al
#!/bin/bash
echo "cPanel Yedekleme İşlemi Başlıyor..."
# Kök kullanıcı olarak çalıştırılıp çalıştırılmadığını kontrol et
if [ "$(id -u)" != "0" ]; then
echo "Hata: Bu betik yalnızca root kullanıcısı olarak çalıştırılabilir."
exit 1
else
echo "Kök kullanıcı olarak çalıştırıldı, işlem devam ediyor..."
fi
echo "-----------------------------------------------------"
# Yedeklerin saklanacağı dizin
BACKUP_DIR="/root/backups/"
echo "Yedekleme dizini kontrol ediliyor: $BACKUP_DIR"
# BACKUP_DIR dizini yoksa, oluştur
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p $BACKUP_DIR
echo "Yedekleme dizini oluşturuldu."
else
echo "Yedekleme dizini zaten mevcut."
fi
echo "-----------------------------------------------------"
# Mevcut kullanıcı listesini al (kullanıcı başına bir satır)
echo "cPanel kullanıcıları alınıyor..."
cpanel_users=$(cut -d: -f2 /etc/trueuserdomains | sort | uniq)
# Kullanıcı listesini kontrol et
if [ -z "$cpanel_users" ]; then
echo "Hata: cPanel kullanıcıları bulunamadı."
exit 1
fi
# Her kullanıcı için yedekleme işlemi
for user in $cpanel_users; do
echo "Yedekleme başlıyor: $user"
/usr/local/cpanel/scripts/pkgacct $user $BACKUP_DIR &> $BACKUP_DIR/"$user"_backup.log
if [ $? -eq 0 ]; then
echo "$user için yedekleme başarılı."
else
echo "Hata: $user yedeklenirken bir hata oluştu. Detaylar için $BACKUP_DIR/${user}_backup.log dosyasına bakın."
fi
echo "-----------------------------------------------------"
done
echo "Tüm cPanel hesaplarının yedekleri başarıyla alındı. Yedekler $BACKUP_DIR dizininde."