existe duas gems que tornam essa tarefa extremamente simples, a astrails-safe e a whenever, neste post vou exemplificar a utilizacao destas otimas gems que oferecem recursos muito requisitados como backup remoto.Uma das forma de realizar backups automaticos do banco de dados e usar um script mysql dump junto com um cronjob.porem configurar o crontab nao e uma tarefa simples, para facilitar esta configuracao utilizaremos a gem whenever que tem uma sintaxe simples para criacao de cron jobs. e utilizaremos tambem a gem astrails-save, que e um sistema para backups nao so do banco de dados mas tambem dos arquivos e com suporte a CDN's como o Amazom S3 e o Rackspace Cloud Files. no caso estou utilizando Rails 3.0.4 e Ruby 1.8.7. o primeiro passo e adicionar as linhas abaixo ao Gemfile.gem 'whenever'gem 'astrails-safe' vamos primeiro analisar o funcionamento do astrails-safe, sua utilizacao e simples:astrails-safe [OPTIONS] CONFIG_FILE as [OPTIONS] sao: -h, --help Mostrar a ajuda -v, --verbose executa todos os backups configurados! -n, --dry-run apenas testa, nao executa. -L, --local Fazer somente backups locais, ignorando os remotos. o CONFIG_FILE e um arquivo .rb eu criei o arquivo "safe_config.rb" no diretorio config.abaixo tem um exemplo retirado da documentacao da gem, com algumas partes traduzidas.safe do local :path => "/backup/:kind/:id" s3 do key "...................." secret "........................................" bucket "backup.astrails.com" path "servers/alpha/:kind/:id" end cloudfiles do user "..........." api_key "................................." container "safe_backup" path ":kind/" # this is default service_net false end sftp do host "sftp.astrails.com" user "astrails" # port 8023 password "ssh password for sftp" end gpg do command "/usr/local/bin/gpg" options "--no-use-agent" # symmetric encryption key # password "qwe" #chave publica GPG (deve ser conhecida com GPG, ou seja, estar no chaveiro key "backup@astrails.com" end keep do local 20 s3 100 cloudfiles 100 sftp 100 end mysqldump do options "-ceKq --single-transaction --create-options" user "root" #seu usuario password "............" #sua senha socket "/var/run/mysqld/mysqld.sock" #liste todas as tabelas que deseja efetuar o backup database :blog database :servershape database :astrails_com # voce pode ignorar algumas tabelas database :secret_project_com do skip_tables "foo" skip_tables ["bar", "baz"] end end svndump do repo :my_repo do repo_path "/home/svn/my_repo" end end pgdump do options "-i -x -O" # -i => ignorar versao, -x => nao configurar privilegios (grant/revoke), -O => skip restoration of object ownership in plain text format user "username" password "............" # shouldn't be used, instead setup ident. Current functionality exports a password env to the shell which pg_dump uses - untested! database :blog database :stateofflux_com end #Para efetuar os backups dos arquivos tar do options "-h" # dereference symlinks archive "git-repositories", :files => "/home/git/repositories" archive "dot-configs", :files => "/home/*/.[^.]*" archive "etc", :files => "/etc", :exclude => "/etc/puppet/other" archive "blog-astrails-com" do files "/var/www/blog.astrails.com/" exclude "/var/www/blog.astrails.com/log" exclude "/var/www/blog.astrails.com/tmp" end archive "astrails-com" do files "/var/www/astrails.com/" exclude ["/var/www/astrails.com/log", "/var/www/astrails.com/tmp"] #adicione os arquivos aos quais voce nao deseja que sejam salvos. end endendapos ter o arquivo "safe_config.rb" configurado voce pode executar o comando abaixo para realizar o backup:astrails-safe -L safe_config.rb #para backup somente localastrails-safe -v safe_config.rb #para executar o arquivo de configuracao na integra, executando os backups local e remoto.agora vamos tornar a execucao deste comando automatico e