Un jour, une gem

10/03/2012

Samedi c'est Backup

gem install backup

DROP TABLE… Et mer** !!

Il arrive toujours un moment dans la vie d’un développeur où celui-ci perd des données, importantes ou non. Pour éviter ce genre de problème, voici Backup.

Après avoir installé la gem, on génère le fichier de configuration avec la commande suivante :

backup generate:model —trigger my_backup —databases=’mysql’ —storages=’s3’ —compressors=’gzip’

Fichier de configuration qui ressemble à cela :

##
# Backup Generated: my_backup
# Once configured, you can run the backup with the following command:
#
# $ backup perform -t my_backup [-c ]
#
Backup::Model.new(:my_backup, 'Description for my_backup') do
  ##
  # Split [Splitter]
  #
  # Split the backup file in to chunks of 250 megabytes
  # if the backup file size exceeds 250 megabytes
  #
  split_into_chunks_of 250

  ##
  # MySQL [Database]
  #
  database MySQL do |db|
    db.name               = "my_database_name"
    db.username           = "my_username"
    db.password           = "my_password"
    db.host               = "localhost"
    db.port               = 3306
    db.socket             = "/tmp/mysql.sock"
    db.skip_tables        = ['skip', 'these', 'tables']
    db.only_tables        = ['only', 'these' 'tables']
    db.additional_options = ['--quick', '--single-transaction']
  end

  ##
  # Amazon Simple Storage Service [Storage]
  #
  store_with S3 do |s3|
    s3.access_key_id      = 'my_access_key_id'
    s3.secret_access_key  = 'my_secret_access_key'
    s3.region             = ' eu-west-1'
    s3.bucket             = 'bucket-name'
    s3.path               = '/path/to/my/backups'
    s3.keep               = 10
  end

  ##
  # Gzip [Compressor]
  #
  compress_with Gzip do |compression|
    compression.best = true
    compression.fast = false
  end

end

Une fois le fichier de configuration prêt, on lance le backup avec la commande suivante :

backup perform —trigger my_backup

Et voilà ! Backup peut aussi utiliser d’autres services pour stocker vos sauvegardes :

Le lien utile