31 Aralık 2008Python ile otomatik SQL yedeği almak
Merhabalar yine uzunca bir aradan sonra yazmak istedim. Şuan koltuğuma iyice yaslandım biraz alçak kaldı ekrana göre ama onunda çözümünü buldum tabi monitörü aşağı doğru eğdim
şuan gayet iyi bi şekilde geçinmekteyiz bilgisayarım pardusum ve ben. Aylak aylak forum da dolaşırken ceviz için yazmış olduğum ve bizi büyük bir zahmetten kurtarmış olan python betiğini paylaşmak istedim. Betik SQL yedeği alıyor ve bir kaç daha işlem yapmakta. Malum bu büyük bir zahmet oluyor webmasterler veya programcılar için. Betiği crontab a eklerseniz her gün kendisi otomatik olarak yedeği belirttiğiniz dizine alıp son iki günden önceki tüm yedekleri de silerek tamamen sunucunuzda hdd üzerinde yer kaplamasını önleyerek size dostluğunu sunuyor ![]()
Bu arada belirtmek isterim ki bu python betiği sunucu yönetenler için düşünülerek yazılmıştır diyeceğim ama yalan tabiki ceviz için yazdım ne yalan söliyim
gece gece saçmaladığımın da farkındayım artık kusura bakmazsınız.. Evet saçmalamayı bir kenara bırakırsak bu betiğin sunucuda çalışması için python yüklü olması gerekmektedir ki zaten bütün dağıtımlarda kurulu bi şekilde gelmekte hemen hemen..
Yedek alan betiğimiz de gerekli ayarları yaptıktan sonra sunucu da /etc/cron.daily/ dizinine kopyalayın ve chmod 0755 /etc/cron.daily/dosya_adi.py şeklinde chmod u ayarlayın ve koltuğunuza yaslanın. Artık server hergün bu betiği çalıştırcak ve sql yedeğiniz otomatik olarak belirttiğiniz dizine gzip ile sıkıştırılarak alınmış olucak…
Buyurun betik..
#!/usr/bin/env python #-*-coding:utf-8-*- # Ceviz.Net SQL Dumper v2.0 # Raiden - 2008-12-19 # Tarih, OS ve Time Modulunu Yukle # ---------------------------------------------------------------- import datetime, os, time # Dump Edilen SQL Dosyasının Tasinacagi Dizin # ------------------------------------------------------------------------- dizin = "/root/BACKUP/mysql/" # MySQL Veritabanı Bilgileri # -------------------------------------- user = "root" passwd = "123456" dbname = "test" class cevizBackup: def __init__(self,dizin,user,passwd,dbname): self.dizin = dizin self.user = user self.passwd = passwd self.db = dbname self.bugun = datetime.date.today().strftime("%Y-%m-%d") self.sqlFileName = self.bugun + ".ysfkc.com.sql" def cevizYedekAl(self): if os.path.isdir(self.dizin) == False: print "%s Dizini bulunamadı oluşturuluyor.." % self.dizin os.mkdir(self.dizin) else: os.system("mysqldump -u%s -p%s %s > %s%s" % (self.user, self.passwd, self.db, self.dizin, self.sqlFileName)) print "%s dizinine %s dosyası yedek olarak alındı" % (self.dizin, self.sqlFileName) os.system("gzip %s%s" % (self.dizin, self.sqlFileName)) print "%s dosyası gzip ile sıkıştırılarak boyutu küçültülüyor..." % self.sqlFileName # Gecmis Dosyalar Silinerek Son Iki Gun Bırakılıyor # ----------------------------------------------------------------------------------- def dosyaSil(self): for dosya in os.listdir(self.dizin): if os.stat(self.dizin + dosya).st_ctime < (time.time()-86400): os.remove(self.dizin + dosya) yedek = cevizBackup(dizin,user,passwd,dbname) yedek.dosyaSil() yedek.cevizYedekAl()
Dosyayı buradan indirebilirsiniz.


Bu basit işlem için ne güzel kod yazmışsın. Nesne yönelimli yazılım içine işlemiş
Böyle güzel kod görünce, python ile uğraşasım geliyor. Eline sağlık.
@gökhancım
ben de python da çok iyi değilim ama işte hobi olarak uğraşıyorum. Php den sonra syntax ı en hoşuma giden syntax python oldu. platform bağımsızlığı da cabası tabiki
teşekkurler güzel paylaşım.
Örnegin gece 3 gibi çalıştırmak istersek nasıl yaparız?
@nurettin
/etc/cron.daily dizinine atıp dosyaya çalışma izni verirsen sunucu zaten gece 00:00 den sonra bir defaya mahsus olarak çalıştırmaktadır. bu saat süresi sabaha karşı da olabilmekte. Örneğin ceviz.net sunucusu her sabah 05:00 de çalıştırmakta.
Bu saati nasıl ayarlıyabilirim?
@Nurettin
crontab -e komutunu vererek belirlediğiniz zaman aralığında çalıştırılmasını sağlayabilirsiniz.
Eline sağlık kardeş.
Tam da şu sıralar Python’a merak saldım, iyi geldi bu kodlar