Centos Linux MYSQL ve Web Dosyaları Yedekleme

VPS ( Virtual Private Server | Özel Sanal Sunucu ) kullanıyorsanız üzerinde de Cpanel, WHM, Vesta, Plesk vb. bir yönetim paneli bulunmuyor ise yedekleme işlemleri biraz zor olabilir. Yedekleme yapabilmek için genellikle manuel işlemler mevcut. MYSQL kullandığımızı düşünürsek PHPMyAdmin üzerinden tüm veritabanını indirmek, PHP kullandığımızı da düşünürsek FTP vb. bir bağlantı ile bağlanıp dosyaları maneul olarak yedeklemek uzun bir senaryo.

Peki biz her gece uyurken yedekler otomatik olarak alınsa ? Daha rahat ve güzel olmaz mı ? 🙂 Bunun için Linux ortamında BASH SCRİPT ile manuel işlemlerimizi kolaylaştırabiliriz. Bize tek gereken SSH bağlantısı. VPS iniz mevcut ise büyük ihtimalle SSH bağlantısı sağlayabilirsiniz. Server üzerinde yapmamız gereken aşağıda örnek olarak verdiğim BASH SCRİPT dosyasını oluşturmak ve bunun için de gerekli olan CRON JOB işlemini sağlamak. Biz geceleri rahat rahat uyurken sistem otomatik olarak yedeklerini alsın. Hatta üstüne yedek aldıktan sonra da başka bir FTP adresine yedeklerimizi otomatik olarak yüklesin. İsterseniz yedekleriniz sadece sunucu üzerinde de durabilir yada çok fazla önem taşıyan verileriniz mevcut ise 3 4 yere daha FTP olarak yükleyebilirsiniz.

Bu işlem sadece FTP olarak da yapmanız gerekmez. Linux tabanlı sistemlerde SCP kullanarak da yedekleme yapabilirsiniz. Aşağıdaki örnek FTP olarak hazırlanmıştır. Geliştirme gücünüze bağlı olarak yedekleme işlemlerinizi sağlama alabilirsiniz.

#!/bin/bash
#uğur karadeniz - Linux Mysql Backup
mkdir /home/backup/$(date +%Y%m%d) #tarih bazlı klasörleme
mysqldump VERITABANI_ADI > /home/backup/$(date +%Y%m%d)/$(date +%Y%m%d).sql
tar -zcvf /home/backup/$(date +%Y%m%d)/wwwhtml$(date +%Y%m%d).tar.gz /var/www/html/WEB_KLASORU

tar -zcvf /home/backup/$(date +%Y%m%d).tar.gz /home/backup/$(date +%Y%m%d) # web klasörü ve mysql yedeğini tekrar sıkıştırır.

ftp -n FTP_ADRESI <<END_SCRIPT
quote USER FTP_KULLANICI_ADI
quote PASS FTK_KULLANICI_SIFRESI
put /home/backup/$(date +%Y%m%d).tar.gz FTP_UZAK_ADRESI
quit
END_SCRIPT

exit 0

Yukarıdaki dosyayı hazırlarken kullanıcı yetkilerine dikkat ediniz. Genelikle root yetkisi kullanılmaktadır. Eğer farklı kullanıcı ile dosyayı kayıt ederseniz Cronjob larınız çalışmayabilir. Dosyayı yedek.sh olarak kayıt edip kapatabilirsiniz.

Ben genellikle tarih bazlı olarak yedekleme yapıyorum. Script üzerinde de önce home klasörü altına tarih bazlı klasör açıyoruz. Sonrasında veritabanımızı mysqldump komutu ile dışarıya alıyoruz. Sonrasında PHP dosyalarımızın klasörü de sıkıştırıp dışarıya alıyoruz. Sonrasında home klasörü altındaki tarih bazlı klasörümüzü de sıkıştırıp ( ben tar kullanıyorum ama farklı sıkıştırma metodları da kullanabilirsiniz ) bırakıyoruz. Sonrasında ise FTP komutu ile dosyalarımızı uzak bir FTP adresine gönderiyoruz. Siz isterseniz local deki yani sunucu üzerindeki yedek dosyalarınızı silebilirsiniz veya şu şekilde kurgulayabilirsiniz. Son 2 günlük yedek dosyaları kalabilir 2 gün önceki dosyalarınızı silebilirsiniz. Bu size son gündeki bir hata veya yanlıştan dolayı yedekten geri dönerken hız kazandırır.

CRONJOB işlemi olarak da aşağıdaki işlemi kullanıyorum

5 3 * * * sh /home/yedek.sh

Her gece saat 3 ü 5 geçe yedek alınma işlemi tamamlanıyor. CRONJOB lar için tarih işlemlerini de https://crontab.guru/ adresinden test edebilirsiniz. İlerleyen zamanlarda CRON larla ilgili yazı da paylaşacağım.

Şunu sorabilirsiniz. Neden PHP dosyalarını da “yedekliyoruz”. İsterseniz veritabanınızı günlük yedekleyip PHP dosyalarınızı haftalık, aylık periyotlarda yedekleyebilirsiniz. Proje üzerindeki canlı sistem üzerinde çalıştığımızdan dolayı günlük olarak yazılım dosyalarını güncellemek hayat kurtarıcı olabiliyor.

Yukarıdaki işlemler Linux Centos üzerinde gerçekleştirilmiş. Farklı bir Linux dağıtımı kullanıyorsanız kodlarınızı ona göre düzenlemeniz gerekebilir. Yedekleme olayları için bir makale daha paylaşacağım. Görüşmek üzere.

“Centos Linux MYSQL ve Web Dosyaları Yedekleme” için 2 yanıt

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir