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 14 yanıt

  1. Hello, I think your site might be having browser compatibility issues.
    When I look at your website in Ie, it looks fine but when opening in Internet Explorer, it has some overlapping.
    I just wanted to give you a quick heads
    up! Other then that, terrific blog!

  2. I was curious if you ever thought of changing the layout
    of your website? Its very well written; I love what youve got to say.

    But maybe you could a little more in the way of content so people could connect with
    it better. Youve got an awful lot of text for only having 1 or two pictures.
    Maybe you could space it out better?
    https://www.bloglovin.com/@donghoxwatch/tren-10-triu-la-chn-ng-h-nht-bn-hay-thy-s

    1. Hello there.
      I am using up-to-date applications.
      I try not to miss updates as much as possible.
      I don’t use shared hosting.
      I use strong passwords.
      My system is backed up every day.

      There will be a problem on the WordPress side. There is nothing left to do 🙂

  3. Have you ever thought about adding a little bit more than just your articles?
    I mean, what you say is important and everything.
    However think about if you added some great photos or videos to give your posts more, “pop”!
    Your content is excellent but with pics and clips, this site could
    certainly be one of the most beneficial in its niche.
    Awesome blog!
    https://note.com/xwatchvn/n/n5e48388beb73

  4. I have read so many articles or reviews regarding the blogger lovers except this
    piece of writing is genuinely a good article, keep it up.

  5. Hmm it appears like your website ate my first comment (it was super
    long) so I guess I’ll just sum it up what I had written and say, I’m thoroughly enjoying your blog.
    I as well am an aspiring blog blogger but I’m still new to everything.
    Do you have any tips for newbie blog writers? I’d certainly appreciate it.

  6. Woah! I’m really digging the template/theme of this site.
    It’s simple, yet effective. A lot of times it’s challenging to
    get that “perfect balance” between user friendliness
    and appearance. I must say that you’ve done a superb job with this.
    Additionally, the blog loads very fast for me on Safari.
    Excellent Blog!

Bir Cevap Yazın