Living life and Make it Better

life, learn, contribute

Endy Muhardin

Software Developer berdomisili di Jabodetabek, berkutat di lingkungan open source, terutama Java dan Linux.

Backup Trac

Trac sudah terinstal, sekarang harus diamankan melalui prosedur backup.

Seperti biasa, semua prosedur backup harus otomatis dan terjadwal. Kalau tidak begitu, pasti tidak akan dijalankan. Jadi, selain kegiatan memburn CD, kegiatan backup lainnya harus diotomasi.

Di website Trac sudah dijelaskan tentang cara melakukan backup terhadap instalasi Trac. Kita hanya perlu membuat script sedikit supaya bisa membackup seluruh project dalam folder parent trac, dan mengkompresnya.

Berikut scriptnya, seperti biasa, menggunakan Ruby.

Script ini diadaptasi dari script sebelumnya untuk backup Subversion repo.

Berikut scriptnya

require 'zlib'
require 'fileutils' 

if ARGV.length < 2
  puts "Usage : ruby trac-backup.rb <Trac Parent folder> <backupfolder>"
  exit
end

# some configuration
trac_parent_path = ARGV[0]
backup_folder = ARGV[1]

# variable initialization
current_date = Time.now.strftime("%Y%m%d")

Dir.foreach(trac_parent_path) { |trac|
    next if('.' == trac || '..' == trac)
    puts "Start to process folder : "+trac

    puts "Performing trac hotcopy"
    project_name = trac_parent_path + File::SEPARATOR + trac
    dumpfile_folder = trac + '-' +current_date
    dumpfile = backup_folder + File::SEPARATOR + dumpfile_folder

    `trac-admin #{project_name} hotcopy #{dumpfile}`

    puts "Compressing dumpfile"
    `tar czf #{backup_folder}/#{dumpfile_folder}.tar.gz -C #{backup_folder} #{dumpfile_folder}`

    puts "Deleting uncompressed backup"
    FileUtils.rm_r dumpfile
}

Save dengan nama trac-backup.rb.

Warning, kode di atas tidak bisa dijalankan di Windows, karena menggunakan command line tar untuk mengkompres file. Jika Anda ingin menggunakan di Windows, silahkan gunakan TugZIP seperti contoh ini.

Untuk menjalankannya, cukup panggil dari command prompt.

ruby trac-backup.rb /var/lib/trac /folder/tempat/backup

Supaya fully-automated, daftarkan di cron. Buka editor crontab.

crontab -e

Kemudian ketikkan entri sebagai berikut

0 23 * * 5 /usr/bin/ruby /full/path/ke/trac-backup.rb /var/lib/trac /full/path/ke/folder/backup

Backup akan dijalankan setiap jam 23.00 pada hari Jumat. Lebih lanjut tentang cron bisa dibaca di sini. Jika bingung dengan formatnya, bisa gunakan generator crontab online.