Loading ...
Sorry, an error occurred while loading the content.

Script untuk backup

Expand Messages
  • Muhammad Rofiq
    Halo salam kenal semua, Sebenarnya udah tau dari lama sih ini milis, cuma karena waktu itu sepi dan juga pesertanya minim banget jadi males join :) To the
    Message 1 of 2 , Sep 4, 2005
    • 0 Attachment
      Halo salam kenal semua,

      Sebenarnya udah tau dari lama sih ini milis, cuma karena waktu itu
      sepi dan juga pesertanya minim banget jadi males join :)

      To the point aja, saya buat kode untuk backup data di windows, tadinya
      pengin pake rsync, tapi akhirnya mutusin buat di ruby aja, itung2
      latihan. Backup server di-map jadi drive terus file yg mo dibackup
      dikopi pake operasi standar. Tapi ada beberapa problem:

      1- prosesnya lama, backup 25 giga, bisa makan setengah hari lebih,
      kaya'nya nggak normal nih

      2- maunya mixin kelas Dir, jadi nggak perlu di inherit ke Dir2, tapi
      kalo mixin saya nggak tau caranya manggil orisinal method entiesnya.
      Alasan di inherit karena saya nggak butuh item [".", ".."]

      Ada saran?

      Ini kodenya, sori kalo kacau :p

      BACKUP_LIST = %w{d:/kerjaan d:/toolkit}
      BACKUP_DEST = "Y:/BACKUPDEST"


      class Dir2 < Dir
      def self.entries(dirname)
      Dir.entries(dirname).reject{|x| x=~ /^[\.]+$/}
      end
      end


      require 'fileutils'
      include FileUtils::Verbose

      def sync_dir(src_dir, dest_dir)
      puts "sync #{src_dir} to #{dest_dir}"
      mkdir (dest_dir) unless File.exist?(dest_dir)
      src, dest = Dir2.entries(src_dir), Dir2.entries(dest_dir)

      src.reject{|f| File.directory?(File.join(src_dir,f)) }.each do |sf|
      s, d = File.join(src_dir,sf), File.join(dest_dir, sf)
      next if File.exist?(d) && File.mtime(s)<=File.mtime(d)
      begin
      cp(s,dest_dir)
      rescue
      end
      end

      begin
      rm_list = dest-src
      rm_r(rm_list.map{|f| File.join(dest_dir,f)}, :force=>true) if
      rm_list.size>0
      rescue
      end

      src.map{|f| File.join(src_dir,f)}.select{|f|
      File.directory?(f)}.each{ |f|
      d_dir = File.join(dest_dir, File.basename(f))
      sync_dir(f, d_dir)
      }
      end

      BACKUP_LIST.each do |s|
      d = File.join(BACKUP_DEST, File.basename(s))
      sync_dir(s, d)
      end
    • Muhammad Rofiq
      ... duh, ternyata ini milis emang bener2 sepi deh. he he Akhirnya setelah pulang kerja ngoprek2 lagi terus ketemu jawabannya no.2, ternyata pake alias (duh
      Message 2 of 2 , Sep 5, 2005
      • 0 Attachment
        --- In id-ruby@yahoogroups.com, "Muhammad Rofiq" <mrofiq@g...> wrote:
        > Halo salam kenal semua,
        >
        > Sebenarnya udah tau dari lama sih ini milis, cuma karena waktu itu
        > sepi dan juga pesertanya minim banget jadi males join :)
        >

        duh, ternyata ini milis emang bener2 sepi deh. he he
        Akhirnya setelah pulang kerja ngoprek2 lagi terus ketemu jawabannya no.2, ternyata pake
        alias (duh ruby emang kebanyakan surprisenya), kira2 spt ini kodenya.

        class Dir
        class << self
        alias old_entries entries
        end

        def self.entries(dirname)
        old_entries(dirname).reject{|x| x=~/^(\.)+$/}
        end
        end


        --
        tanyasendiri,jawabsendiri:(
      Your message has been successfully submitted and would be delivered to recipients shortly.