LİNUX DROPBOX OTOMATİK YEDEKLEME
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.
- 1033
- 0
Yorumlar ( 0 )