IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   TCL Scriptler (https://www.ircforumlari.net/tcl-scriptler/)
-   -   oto yedek alma .tcl (https://www.ircforumlari.net/tcl-scriptler/685804-oto-yedek-alma-tcl.html)

saywhat 02 Mart 2015 03:04

oto yedek alma .tcl
 
istenen dizini / klasörü / dosyaları , haftada bir ( her pazar geceyarısı şeklindedir ,dileyen kendi cron'uyla değişip ayda bir,yılda bir yada haftanın başka bir günü başka bir saatte ,yada daha sık alınmasını sağlayabilir. nasıl değiştirebileceğini bilmeyenler: nette "cron / crontab " kullanımını araştırabilir. )

tcl8.4'ten sonraki,daha yeni sürümlerde "clock" komutu ve kullanımında değişiklikler olmuştur. bu nedenle tcl sürümü 8.4 ve daha eski olanlar kod içinden tarih ayarını kod içinde belirttiğim şekilde değiştirebilirler.

( bu tcl 8.4'teki clock komutu dökümanı -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] | bu ise şu anki tcl 8.6.3 için geçerli olan hali -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] arada neler değişti/eklendiğini görebilmeniz için...)

-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

saywhat 02 Mart 2015 11:14

Cevap: oto yedek alma .tcl
 
bunu sisteminizde kurulu olan tclsh'den faydalanarak çalışacak bir tclsh scripti olarak şu şekilde kullanabilirsiniz :

Kod:

#!/usr/bin/tclsh

# yedek dosya ismi ne olmali:
# ( yedekleri ayrı bir dizinde oluşturmak isteniyorsa:
# yedekler için bir dizin/klasör oluşturun: ./backups  gibi..
# ve alttaki ayardaki yedek dosya ismini bu dizin/klasörü belirtecek şekilde :
# set yedekismi "/home/nrt/backups/benim-botum"  gibi...
# yedeklenen ...tar.gz o dizin/klasörde oluşturulacaktır.
set yedekismi "benim-biricik-botum"

# yedek alinacak dosyalarin dizini ( /home/nrt/bot/  gibi..)
set dizin /home/hesap-ismi/yedek-alinacak/

# sistemde tcllib/tar paketinin bulunduğu dizin.
lappend auto_path /usr/lib/local/tcllib1.xx/tar

# tcllib tar paketi kullanir:
package require tar

    # tarih formati -> 02-Mart-2015 gibidir. tcl8.5 ve ustu surumler icin *
    # daha eski surumlerde clock komutunda bu islemez.
    # tcl8.4 ve daha eski surumler icin :
    # set stamp [clock format [clock seconds] -format "%d-%m-%Y"] olarak deneyin.
    set stamp [clock format [clock seconds] -format "%d-%B-%Y" -timezone :Europe/Istanbul -locale tr_TR]
    append backup [join $::yedekismi "-"] - $stamp .tar.gz
    catch { ::tar::create $backup [glob $::dizin*] } out
    puts $out

bu kodu bir isimle (mesala yedek.tcl diyelim ) kaydedip shell'inize gönderin . chmod u+x /bulunduğu/dizin/yedek.tcl yada chmod 755 /bulunduğu/dizin/yedek.tcl -R gibi scripti işletme/yürütme izinlerini verin.

yedeklerin toplanmasını istediğiniz bir dizin/klasör oluşturun ( örneğin yedeklerim gibi...) bu klasöre/dizinede izinleri verin (okuma/yazma ..) chmod u+x /bulunduğu/dizin/yedeklerim yada chmod 755 /bulunduğu/dizin/yedeklerim -R gibi....

koddaki ( set yedekismi "..." ) ayarında yedeklerinizin toplanmasını istediğiniz klasör/dizini gösterecek şekilde backup/yedekleme dosya ismiyle birlikte girin.. ( set yedekismi /bulunduğu/dizin/yedeklerim/yedeğimin-ismi" ) gibi...

yedeklemeyi manuel komutla yapmak için : konsol/shell üzerinde : tclsh yedek.tcl (yedek.tcl 'nin olduğu dizinde*) komutu kodu işler .farklı bir dizinden çalıştırılacaksa : tclsh /bulunduğu/dizin/yedek.tcl ve backup/yedeğiniz set yedekismi ayarında girdiğiniz yerde ( set dizin "..." ayarında yedeklenmesini istediğiniz dizini/klasörü yedekleyerek ) ....tar.gz olarak tarball halinde yedeklenmiş olur.

yok otomatik belli zaman aralıklarında çalıştırmak isteniyorsa yeni bir cronjob oluşturun:

crontab -l <- komutu var olan cronjob'ları listeler.
crontab -r <- cronjab'ı silmek için
crontab -e <- düzenlemek/yeni oluşturmak için.

crontab -e yaptıktan sonra yeni zamanlanmış görevi:

(yukardaki eggdrop scriptindeki gibi haftada bir pazar geceyarısı işlenmesi için örnek..

59 23 * * 0 tclsh /bulunduğu/dizin/yedek.tcl

şeklinde yeni cronjob oluşturarak ,örnek olarak "yedek.tcl" dediğimiz kodun beli bir gün ve zamanda otomatik olarak çalıştırılmasını sağlamış oluyoruz.

saywhat 03 Mart 2015 01:15

Cevap: oto yedek alma .tcl
 
kod güncellendi: yaptığım düzenlemelerin,çalışıp çalışmadığını görmek için beklemek gerekliydi, o nedenle bugüne sarktı.

-> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

bu düzenlemeyle artık bind satırında cron düzenlemeden ,ayar satırında (set yedekzmn ...) girdiğiniz gün sayısıyla yedekleme zamanlanmış olacak .o ayarda kaç gün olarak ayarlamışsanız o kadar gün aralıkla prosedür işleyecek ve o kadar günde bir istenen dizin/dosyaların yedeklenmesi sağlanacak.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 10:00.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk