Özgün ÜNLÜ
Bunu Paylaş
AŞAĞI KAYDIR
BLOG YAZILARINA DÖN
//BLOG YAZISI

LİNUX DROPBOX OTOMATİK YEDEKLEME

09 Ağu 2020KATEGORİ :YAZILIM

Linux Dropbox Otomatik Yedekleme

Bir önceki yazımda linux sunucudaki herhangi bir klasörü dropbox'a nasıl yedekleyebileceğimizi anlatmıştım. Bu yazımda ise örnek bir web sayfasını günlük olarak nasıl otomatik şekilde yedekleyebileceğimizden bahsedeceğim.

Önceki yazıda dropbox api'ın nasıl kurulacağından ve klasör yedeklemenin nasıl yapıldığından bahsettiğim için, bu yazıda kurulum kısmına girmeyeceğim.


Script Hazırlanması

#!/bin/bash
BACKUP_SRC="/var/www/website-klasor-adi"
BACKUP_DST="/tmp/Backup"

MYSQL_SERVER="127.0.0.1"
MYSQL_USER="root"
MYSQL_PASS="mysql-password"

NOW=$(date +"%Y-%m-%d")
DESTFILE="$BACKUP_DST/backup-$NOW.tar.gz"
 
# Websitesini ve veritabanını yedekleyelim.
mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$BACKUP_DST/backup-$NOW-database.sql"
tar cfz "$DESTFILE" $BACKUP_SRC "$BACKUP_DST/backup-$NOW-database.sql"

# Dropbox'a yükleyelim.
/home/kullanici-adi/Dropbox-Uploader/dropbox_uploader.sh upload $DESTFILE OzgunUnlu

# Geçici dosyaları silelim
rm -f "$BACKUP_DST/backup-$NOW-database.sql" "$DESTFILE"


Yukarıda script içerisinde yazdığımız kodları anlatarak başlamak istiyorum.

  • - BACKUP_SRC="/var/www/website-klasor-adi": Bu satırda yedek alınacak web sitenin klasörünü "BACKUP_SRC" adında oluşturduğumuz değişkene atıyoruz.

  • - BACKUP_DST="/tmp/Backup": Bu satırda web sitesinin klasörünü sıkıştırdığımızda onu geçici olarak saklayabileceğimiz klasörü "BACKUP_DST" değişkenine atadık. Bu klasörü istediğiniz gibi belirleyebilirsiniz. Ben "/tmp" içerisine "Backup" adı altında bir klasör açarak yaptım bu işlemi.

  • - "MYSQL" değişkenlerinde ise server olarak localhost, kullanıcı adı olarak root ve parola olarak mysql-password belirttik. Bu kısmı kendi veritabanı bilgilerinize göre değiştirebilirsiniz.

  • - NOW=$(date +"%Y-%m-%d"): Bu satırda ise "NOW" adında bir değişkeni bugünün tarihini atadık -ki bu tarihi yedek dosya isminde kullanacağız. Böylece aldığımız yedeklerin hangi güne ait olduğunda dosya adından basitçe anlayabileceğiz.

  • - DESTFILE="$BACKUP_DST/backup-$NOW.tar.gz": Adından da anlaşılacağı üzere web site kodlarını ve mysql veritabanı yedeğini sıkıştıracağımız dosya yolu ve ismini "destination file" adında bir değişkene atıyoruz.

  • - mysqldump -u $MYSQL_USER -h $MYSQL_SERVER -p$MYSQL_PASS --all-databases > "$BACKUP_DST/backup-$NOW-database.sql": İlk olarak veritabanı yedeğini alacağımız için "mysqldump" komutundan yararlanıyoruz. Burada ben "--all-databases" diyerek mysql içerisindeki tüm veritabanlarını yedeklemek istedim ama siz isterseniz oraya spesifik bir veritabanı adı belirterek tek bir veritabanı yedeği alabilirsiniz. Sonrasında ise daha önceden tanımladığımız "BACKUP_DST" değişkenindeki yola veritabanı yedeğini çıkarmasını söyledik.

  • - tar cfz "$DESTFILE" $BACKUP_SRC "$BACKUP_DST/backup-$NOW-database.sql": Veritabanı yedeğimizi aldıktan sonra o yedek ile birlikte web sitemizin bulunduğu klasörü de "tar" komutuna vererek ikisini birlikte aynı dosyaya sıkıştırıyoruz ve çıkış yeri daha önceden tanımladığımız "DESTFILE" dosya yolu oluyor.

  • - /home/kullanici-adi/Dropbox-Uploader/dropbox_uploader.sh upload $DESTFILE OzgunUnlu: Evet, artık elimizde "/tmp/Backup" klasörü altında hem veritabanı hem de web site kaynak kodlarının sıkıştırılmış haliyle "tar.gz" formatında bulunuyor. Burada yaptığımız, oluşturduğumuz bu dosyayı daha önceki yazımda anlattığım gibi "dropbox-uploader.sh" kullanarak dropbox hesabımızda yer alan "OzgunUnlu" klasörüne gönderiyoruz.

  • - rm -f "$BACKUP_DST/backup-$NOW-database.sql" "$DESTFILE": Yedeğimiz dropbox hesabımıza gönderildikten sonra sunucu içerisinde oluşturduğumuz geçici veritabanı yedeği ve "tar.gz" dosyalarını sunucumuzdan kaldırıyoruz.


Cron Kullanarak Otomatize Etmek

Yukarıda yazdığımız komut betiğini ".sh" adıyla sunucu içerisinde belirlediğimiz bir yere kayıt ediyoruz. Ben bunun için "/home/kullanici-adi/Backup" adında bir klasör oluşturdum. Ve komut betiğimi de "backup.sh" ismiyle bu klasörün altında kaydettim. Ardından gerekli izinleri aşağıdaki gibi veriyoruz.


chmod +x /home/kullanici-adi/Backup
chmod +x /home/kullanici-adi/Backup/backup.sh

Artık komut betiğimiz de hazır olduğuna göre tek yapmamız gereken cron'a bu görevi atamak. Bunun için "crontab -e" komutu ile cron istemcisini açıyoruz. Buraya aşağıdaki şekilde kodumuzu yazıyor ve kayıt ediyoruz.


0 0 * * * /home/kullanici-adi/Backup/backup.sh

Yukarıdaki cron satırında her gece "backup.sh" scriptini çağırmasını söyledik. Böylece her gece saat 00:00'da bizim script'imiz çalışacak ve yedekleme işlemi yapılacak.

Son olarak; cron'un kayıt olup olmadığını "crontab -l" ile kontrol ediyoruz, çıkan listede bizim yazdığımız satır varsa, cron artık çalışacak demektir.


Not: Eğer siz günlük olarak yedekleme yapmak yerine web sitenizi ve veritabanınızı aylık, saatlik, yıllık, dakikalık vs. gibi yedeklemek isterseniz buradan nasıl yapabileceğinizi bulabilirsiniz. Tek yapmanız gereken; cron satırındaki 5 tane yıldızı isteklerinize göre ayarlamak.

  • 138
  • 0
Yorumlar ( 0 )
Yorum Bırakın

Attention! Please do not spam. Your comments will not be shown without approval by the administrator.

Uyarı! Lütfen anlamsız yorum bırakmayın. Yönetici tarafından onay almadan yorumlar gösterilmeyecektir.

01. Yazar Hakkında

Özgün ÜNLÜ

1991 yılında küçük bir şehir olan Akşehir'de doğdum. Bilgisayar Mühendisliği bölümünden mezun olduktan sonra yazılım konusunda sürekli olarak kendimi geliştirmekteyim.

04.Instagram Paylaşımlarım

05. Kategoriler

06. Bağış

Lösev Bağış

Arkadaşlar Merhaba,

Ben kendim yerine bizlerden daha çok bağışa ihtiyaç duyan bu minik arkadaşlar için sizlerin yardımlarınızı bekliyorum. Tam olarak buradan bu minik arkadaşlarımıza yardım edebilirsiniz.

Sevgilerimle...

HAYALİNİZİ GERÇEKLEŞTİRMEYE HAZIR MISINIZ ?

İLETİŞİM
Kapat