bunu sisteminizde kurulu olan tclsh'den faydalanarak çalışacak bir tclsh scripti olarak şu şekilde kullanabilirsiniz :
Kod: Kodu kopyalamak için üzerine çift tıklayın!
#!/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.