O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Backup 3.0

Iniciado por Kvothe, 12/03/2014 às 17:19

12/03/2014 às 17:19 Última edição: 20/01/2017 às 09:22 por King Gerar

Requerimento: N/A(Já vem incluso no Dax Core >i8.1)
Versão: 3.0
Este sistema tem duas opções de backup. A primeira ele copia os arquivos da pasta Data. A segunda ele copia todos(sim, todos) os arquivos da pasta de seu projeto. Todo é feito de maneira muito rápida. E ele só irá funcionar em modo de testes.

• Para executar no modo normal. Ele irá copiar os arquivos da pasta Data
Backup.call

• Para executar no modo complexo. Ele irá copiar todos os arquivos.
Backup.call true


#==============================================================================
# • Backup
#==============================================================================
# Author: Dax
# Version: 3.0
# Site: www.dax-soft.weebly.com
# Requires: N/A
#==============================================================================
# • Description
#------------------------------------------------------------------------------
#   Make a backup of all direction of your project.
#==============================================================================
# • How to use:
#------------------------------------------------------------------------------
#  Backup.call | Make a backup just of the paste Data.
#  Backup.call(true) | Make a backup complete.
#==============================================================================
module Backup
  extend self
  #----------------------------------------------------------------------------
  # • Const.
  #----------------------------------------------------------------------------
  DIR = "./Backup"
  COPYFILE = ->(*args) { Win32API.new('kernel32', 'CopyFile', 'ppl', 'l').call(*args) }
  #----------------------------------------------------------------------------
  # • Call.
  #----------------------------------------------------------------------------
  def call(complete=false)
    return unless $TEST
    Dir.mkdir(DIR) unless FileTest.directory? DIR
    complete ? call_complete : call_data
  end
  private
  #----------------------------------------------------------------------------
  # • Call of the Data.
  #----------------------------------------------------------------------------
  def call_data
    Dir.mkdir(DIR + "/Data") unless FileTest.directory? DIR + "/Data"
    Dir.glob("./Data/*").each { |_data| COPYFILE[_data, DIR + _data, 1] }
  end
  #----------------------------------------------------------------------------
  # • Call Complete.
  #----------------------------------------------------------------------------
  def call_complete
    Dir.glob(File.join("**", "**")).each { |_backup|
      next if _backup.match(/Backup/im)
      _dir = FileTest.directory?(_backup) ? _backup : _backup.gsub!(/\/\.(\w+)/, "")
      Dir.mkdir(DIR + "/#{_dir}") unless FileTest.directory? DIR + "/#{_dir}"
      COPYFILE[_backup, DIR + "/" + _backup, 1]
    }
  end
end
 
Backup.call true



Ah sim acho isso bem interessante, visto que várias vezes eu já vi ocorrer aqueel problema com o pessoal por acabar a luz... de corromper os arquivos e talz, essa parece uma bela saída para aquilo.

Esse considero um script MUITO útil para o maker, parabéns :)

 Script atualizado(Depois de muitos tempo;)