27 Apr 2017
Amazon S3 Üzerine Komut Satırıyla Verilerinizi Yedekleyin
  • 559 Okuma
  • 0 Yorum
  • 0 Beğeni

Amazon S3 Üzerine Komut Satırıyla Verilerinizi Yedekleyin

Bu makalemde Ubuntu Server üzerinde s3cmd kullanarak, komut satırı üzerinden istediğimiz verileri Amazon S3 (Simple Storage Service) üzerine nasıl yedekleyebileceğimizden bahsedeceğim. Ayrıca yedekleme işlemi için, istediğiniz bir klasör altında bulunan dosyaları yedekleyen küçük bir bash script paylaşacağım.


Amazon S3 ve s3cmd hakkında ayrıntlı bilgi almak isteyenler daha önceki makaleme buradan erişebilirler.


Amazon üzerinde bir kullanıcı oluşturup, bu kullanıcıyı Amazon S3 üzerinde yetkilendirme işleminden sonra s3cmd aracına geçebiliriz. Bu araç sayesinde komut satırı üzerinden S3 üzerinde birçok işlemi yapabildiğimizi ve bunların neler olduğuna burada daha önce değindiğimiştik zaten.


Amazon S3 üzerinde verilerimizin yedekleneceği bir bucket oluşturuyoruz. Bunun için aşağıdaki komutu kullanabilirsiniz.


 s3cmd mb s3://bucket-webdeyaz


Şimdi bu bucket üzerinde istediğimiz dosyaları göndermek için aşağıdaki komutu kullanabilirsiniz.

s3cmd put dosyaAdi.tar.gz s3://bucket-webdeyaz


Yedeklecek olan dosyalarınız bir dizin içerisinde saklıyor olabilirsiniz. Bu gibi durumlarda s3cmd 'nin pratik bir kullanımı var. İstediğiniz bir dizin içeriği ile Amazon S3 üzerindeki bucket'ın içeriğinin senkronize olması için aşağıdaki komutu kullanabilirsiniz.


s3cmd sync dizinAdi s3://bucket-webdeyaz


Bu şekilde dizin içerisinde olan herşeyi bucket'a göndermiş olduk. Bu dosyalar gerçekten bucket'a gönderildi mi acaba? Bunun için bucket üzerinde var olan dosyaların gösterilmesinde kullanılan aşağıdaki komutu kullanabilirsiniz.


 s3cmd ls s3://bucket-webdeyaz


Yukarıda verdiğim komutları kullanarak istediğiniz dosyaları Amazon S3 üzerinde oluşturduğunuz bucket üzerinde yedekleyebilirsiniz. Bu işlemi bir script yardımıyla nasıl yapacağımıza da değinelim.

İstediğiniz bir dizin içerisindeki dosyaların s3cmd ile bucket'a gönderilmesi için aşağıdaki script'i kullanabilirsiniz.


#!/bin/bash

tarih=$(date +"%Y-%m-%d")
for dosya in $(find /var/log/apache2/ -regextype sed -regex ".*.log")
do    
dosyaAdi=$(echo $dosya | rev| cut -d'/' -f1 | rev)
tar -zcvf  $dosyaAdi".tar.gz" $dosya
s3cmd put $tarih"-"$dosyaAdi".tar.gz" s3://bucket-webdeyaz
done

Script'in ne yaptığına kısaca değinelim. Öncelikle hangi tarihte yedek alındığının belli olması için tarih değişkenine tarihi atadık. Sonra "/var/log/apache2" dizini içerisinde bulunan "*.log" uzantılı yani log dosyalarını bulup, for döngüsüne gönderdik. Döngü içerisinde her bir dosyanın dosya adını bulup "dosyaAdi" değişkenine atadık. Bu işlemden sonra log dosyasını "tarih-dosyaAdi.tar.gz" adında sıkıştırarak bucket'a yedekledik. Yedeklerimizi sıkıştırarak bucket üzerinde saklamak, hem bucket üzerinde daha az alan kapsaması da hem de yedekleri alma/göndermede band genişliği ve zaman tasarrufu açısından avantaj sağlamaktadır.


Bu betik dosyasını crontab 'ta tanımlayarak istediğiniz bir zamanda bu işlemi otomatik olarak yapılmasını sağlayabilirsiniz.


Sonuç

Bu makalemde Amazon S3 üzerinde komut satırı üzerinden bir bucket oluşturma ve bu yine komut satırı üzerinden bu bucket'a dosyalarımızı nasıl yedekleyeceğimizden bahsettim. Buna ek olarak bir script yardımdıyla bu işlemin nasıl otomatik olarak yapıldığına değindim. Verilerinizi Amazon S3 üzerinde yedeklerden, yedeklerinizi önce sıkıştırıp sonra bucket'a göndermenizi tavsiye ederim. Bu şekilde hem bucket üzerinde yer tasarrufu yapmış olursunuz hem de yedeği bucket üzerinen alma/gönderme işlemlerinde band genişliği ile zamandan tasarruf etmiş olursunuz.

Umarım faydalı olur. İyi çalışmalar.


Makaleyi faydalı buldunuz mu ?

Yazar


Legend Engineer

Legend Engineer

Mühendis (Bilgisayar)

Bilgisayar Mühendisliği mezunuyum. Bilgisayar alanında edindiğim bilgileri bu blog üzerinde paylaşıyorum. Beni takipte kalın.

Yorumlar


İlk yorum yapan sen ol

İlginizi Çekebilir

Makale Hakkındaki Düşünçelerinizi Paylaşın