Linux sunucular için yedekleme scripti
Eğer SSH erişiminiz olan bir Linux sunucunuz varsa, yazdığım bu script günün birinde hayatınızı kurtarabilir. Özellikleri şunlar:
- Sistemde bulunan tüm veritabanlarını yedekler (MySQL).
- Aynı sunucuda yedek almak çok anlamlı olmadığından, script ayrıca bir FTP sunucusuna da yükleme yapmaktadır (FTP alanı için para vermenize gerek yok, şu adresten 1 GB büyüklüğünde bir alanı ücretsiz alabilirsiniz: http://www.drivehq.com/ftp/ )
- Her ne kadar güvenli olduğunu söyleseler de FTP ile tüm verilerinizi ellere gönderirken, güvenlik en önemli şey. O yüzden script verileri şifrelemektedir (PGP).
- Şifrelendikten sonra az yer kaplaması için sıkıştırmaktadır, böylece trafiği de hafifletmektedir (ZIP).
- Haftanın her günü için bir dosya şeklinde yedek almaktadır. Böylece yedeklerin üstüne yazmamaktadır (1 hafta süre ile geriye dönebilirsiniz).
- log klasöründe günlük yedekleme raporu tutar.
- Yedekleme raporunu, çalıştırılan tüm işlemlerin sonuçlarıyla birlikte e-posta adresinize gönderir.
- İnci dizer, bade süzer
Scripti kurmak için şu adımları izleyin:
- Aşağıdaki scripti kopyalayıp bir editörle açın ve ##YAZI## şeklindeki her yere kendi ayarlarınızı koyun (ara-değiştir’i kullanın, açıklamaları altta).
- Scripti backup.sh adıyla sunucunuza yükleyin ve “chmod +x backup.sh” komutuyla işletim yetkisi verin.
- Scripti kopyaladığınız klasöre /var/www diyelim. SSH ile giriş yaptıktan sonra “crontab -e” komutuyla yeni bir satır açarak şunu yapıştırın: “00 04 * * * /var/www/backup.ssh &> /dev/null”
(Bunun anlamı şu: Her gece saat 04:00 da bu scripti çalıştır) - Denemek için bir kere çalıştırın (./backup.sh)
Yerlerine konacak değerler (ara-değiştir ile yapın):
##KLASOR## Yedeklerinizin oluşacağı klasör. Yazma yetkisi verin. Örnek: /var/www
##KULLANICI## Root / mysql kullanıcı adı
##SIFRE## Root / mysql şifreniz
##KOD## PGP için kullanılacak bir kod, açarken de lazım olacak unutmayın. Açmak için “gpg -d sifrelidosyaadi -o acilmisdosyaadi” şeklinde kullanın. Kodu size soracaktır.
##FTPSUNUCU## Ftp sunucunuz (ftp.drivehq.com gibi)
##FTPKULLANICI## Ftp kullanıcı adınız
##FTPSIFRE## Ftp şifreniz
##EPOSTA## Raporun gönderileceği e-posta adresiniz
Script (backup.sh):
# Yedekleme scripti, Bahadir Colak 2010, serbestce kopyalanabilir.
cd ##KLASOR##
mkdir log &> /dev/null
echo =============== DB YEDEKLEME BASLADI ============== > log/`date +’%F’`.log
echo `date` >> log/`date +’%F’`.log
echo ================================================ >> log/`date +’%F’`.log
echo ” ” >> log/`date +’%F’`.logrm ##KLASOR##/alldbs.sql &> /dev/null
echo ———- SQL aliniyor———- >> log/`date +’%F’`.log
/usr/bin/mysqldump -f -x -v –log-error=log/`date +’%F’`.log –user=##KULLANICI## –password=##SIFRE## –all-databases > ##KLASOR##/alldbs.sql
echo ———- SQL Alindi ———- >> log/`date +’%F’`.log
echo ” ” >> log/`date +’%F’`.logecho ———- Sifreleniyor———- >> log/`date +’%F’`.log
gpg -c –passphrase ##KOD## -o ##KLASOR##/alldbs-`date +’%u’`.gpg ##KLASOR##/alldbs.sql >> log/`date +’%F’`.log
echo ———- Sifreleme tamam ———- >> log/`date +’%F’`.log
echo ” ” >> log/`date +’%F’`.logrm ##KLASOR##/alldbs-`date +’%u’`.zip &> /dev/null
echo ———- Sikistiriliyor———- >> log/`date +’%F’`.log
/usr/bin/zip -9 ##KLASOR##/alldbs-`date +’%u’`.zip##KLASOR##/alldbs-`date +’%u’`.gpg >> log/`date +’%F’`.log
echo ———- Sikistirma tamam ———- >> log/`date +’%F’`.log
echo ” ” >> log/`date +’%F’`.logrm ##KLASOR##/alldbs-`date +’%u’`.gpg &> /dev/null
echo ———- Yukleniyor———- >> log/`date +’%F’`.log
/usr/bin/ftp -nv >> log/`date +’%F’`.log <<EOF
open ##FTPSUNUCU##
user ##FTPKULLANICI## ##FTPSIFRE##
cd /backup
prompt
bin
mput alldbs-`date +’%u’`.zip
quit
EOFecho ———- Yukleme tamam ———- >> log/`date +’%F’`.log
echo ” ” >> log/`date +’%F’`.logrm ##KLASOR##/alldbs-`date +’%u’`.zip &> /dev/null
echo =============== DB YEDEKLEMESI BITTI ============== >> log/`date +’%F’`.log
echo `date`>> log/`date +’%F’`.log
echo ============================================== >> log/`date +’%F’`.logecho ———-Rapor yollaniyor ———-
mail -s”Yedekleme raporu” “##EPOSTA##” <log/`date +’%F’`.log
Dipnot: Ben bu scriptten günde 2 kere çalıştırıyorum. Bunun için cron dosyasına bir ekleme yapmanız yeterli.
Dipnot 2: Fedora kullandığımdan zip, gpg, ftp vs. çalıştırırken /usr/bin klasörünü kullandım. Eğer sizde başka yerdelerse onları da değiştirin. Yerini whereis ya da which komutuyla öğrenebilirsiniz (örneğin “which ftp” gibi).
Dipnot 3: Allah muhtaç etmesin ama günün birinde verilerinizi kaybederseniz, o zaman scriptin değerini anlarsınız (tecrübe konuşuyor).
Dipnot 4: Joinvps’den sunucu almayın!

İnanın Hasenat 4′ten son derece faydalanıyorum. Çalışmalarınızdan dolayı Allah ecrinizi arttırsın.