Linux Web Sunucusunu Dropbox’a Nasıl Yedeklerim ?

Merhaba

Özellikle benim gibi VPS sunucusu üzerinde blog vb hizmetler veren kişiler için minimum maliyetli Backup Plan’ı son derece önemlidir.

Bu ihtiyacı gidermek adına yaptığım araştırmalarda en ilkel ve maliyetsiz yöntem olarak, web dizininin ve veri tabanı dump’ının sıkıştırılıp mail atıldığını gördüm. Benim gibi sadece veri tabanı dump’ı 74 MB olan birisi için bu yöntem maalesef işe yaramayacaktır. 

Dropbox

Dropbox servisi, fotoğraf video vb kişisel verilerinizi çok rahat saklayabildiğiniz bir servisi. Pro planının aylık 10$ olduğunu düşündüğümüzde de, son derece uygun bir fiyat karşılığında 1 TB alan sahibi olunabilmektedir. Bizim için en önemli özelliği ise Dropbox hesabınızı yönetebileceğiniz API servisi veriyor olmasıdır ki bu özelliğini birazdan kullanıyor olacağız.

Backup Plan

Teknik çalışmalara girmeden önce aşağıdaki soruya net cevap verilmesi son derece önemlidir

Sunucu üzerindeki hangi verilerin, ne sıklık ile yedeği alınmalıdır ?

Ben tüm domainlerin bulunduğu dizini ve full veri tabanı yedeğini, her haftanın pazar günü gece saat 00:00’da yedeklemeye karar vermiş bulunmaktayım.

Dropbox Hesabı ve API app oluşturulması

Öncelikle Dropbox hesabı alınmalıdır. Ardından API kullanımı için bir “application” oluşturulması gerekmektedir.

https://www.dropbox.com/developers/apps/create

Adresini ziyaret ederek lütfen “Dropbox API app” oluşturunuz. Bu işlem sırasında “My app only needs access to files it creates.” seçeneğini işaretlemeyi unutmayınız. İşlem sonunda sizi oluşturduğunuz application sayfasına yönlendirecektir ve burada “App key” ve “App secret” isminde iki adet key göreceksiniz. Bu iki bilgiyi kenara not ettikten sonra Dropbox ile işiniz -şimdilik- bitmiş olacaktır.

Dropbox Uploader Uygulaması

Dosyaların sunucudan Dropbox’a aktarılması gerekmektedir. Bu hususta kullanabileceğimiz en güzel, basit ve açık kaynaklı Dropbox Uploader betiğidir. Bash script ile yazılmış ve curl uygulamasından başka herhangi bir aracın kurulmasına ihtiyaç duymayan bu betik, Dropbox API’lerini kullanarak dosya yükleme, silme veya bilgi alma işlemlerini gerçekleştirebilmektedir.

Ardından aşağıdaki iki komutu vererek Dropbox Uploader’ı çalıştırıp, bir önceki adımda oluşturduğunuz API Key’lerinizi girebilirsiniz.

Böyle karşınıza kurulum adımları çıkacaktır ve sizden API Key bilgilerinizi isteyecektir. Bu bilgiler daha sonra kullanılmak üzere homefolder altında .dropbox klasöründe saklanıyor olacaktır.

Backup Script

Aşağıdaki betik kurulumu gerçekleştirilen dropbox uploader uygulamasını kullanarak yedekleme işlemini gerçekleştirmektedir.

Bu script temel olarak aşağıdaki adımları uygulamaktadır.

  1. Veri tabanındaki tüm verileri dump et.
  2. Belirlenen dizinde ki her şeyi ve  veri tabanı dump dosyasını sıkıştır.
  3. Sıkıştırılmış dosyanın ismine bugünün tarihini ata.
  4. Dosyayı dropbox’a upload et.
  5. Dropbox’ta ki dosyaları ismine göre sırala ve yüklenen son 4 dosya haricinde kalan dosyaları sil.
  6. Yerel dizinde oluşturulan yedek dosyasını sil.

Bu scripti /root/backup.sh olarak kayıt ettiğinizi düşünürsek aşağıdaki crontab girdisi bu betiğin her haftanın pazar günü çalıştırılarak yedekleme işlemi gerçekleştirilecektir.

  • Ömer Özkan

    Ben yedek icin uzak bir git deposu kullaniyorum. SQL dosyasi plain text oldugundan git kullanmayi tercih ettim. Ayrica git sayesinde sadece farklari yedeklemis oluyorum. Her yedek ayri bir commit seklinde.

  • Amazon S3 gibi bir çözümde düşünülebilir. Maliyeti daha az olacağı kesin :) Küçük bir maliyet bile yazdım. Bu arada ilk 1 sene free tier programı sebebiyle 1gb geçmediği sürece ödemede yapmayacaksınız.

    İyide bununla nasıl backup alacağız diyenler için scriptte paylaşalım.

    https://github.com/hibrahimsafak/shell-scripts/blob/master/dbbackup.sh

  • metin

    Tam olarak faydalı bir eklenti ancak şöyle bir problemle karşılaşıyorum, sıkıştırma işlemi başladığında tüm web sitelerinin sıkışması işlemi için hali hazırda boş olan 12 GB alan yetmiyor ve yedek dropbox’a gönderilmeden yedek işlemi başarız oluyor, bu problemi nasıl çözebiliriz acaba?

  • AHMET

    Merhaba bu servisleri veritabanımız olarak kullanabilirmiyiz yedeklemek yerine veritabanımızı direk bu servislerdeki alanımız yapabilirmiyiz web uygulamaları vb. için

    • Merhaba,
      Evet, teoride /var/lib/mysql klasörünü doğrudan Dropbox folder’ı olarak gösterip sync işlemi yapabilirsiniz ama bence kesinlikle yapılmaması gereken bir hareket olur.