This is a small ruby script that you should symbolically link to from your cron.daily directory. It does the following:
The script creates backups for each day of the last week and also has monthly permanent backups.
To use this script, you must:
– bk
#!/bin/env ruby require 'rubygems' require 'aws/s3' # Create a tar file with the wiki data files. wiki_data = '/path/to/wiki/data' target_dirs = ['attic', 'media', 'meta', 'pages'] tar_dirs = '' target_dirs.each do |dir| tar_dirs += wiki_data + '/' + dir + ' ' end weekday = Time.now.wday backup_filename = "/path/to/backup/wiki-#{weekday}.tar" `tar -cvf #{backup_filename} #{tar_dirs}` `gzip #{backup_filename}` backup_filename += '.gz' # If we are on monthly anniversary, archive a permanent backup. permanent_backup = nil if Time.now.day == 1 # Hardwired but what the hey... timestamp = Time.now.strftime("%Y-%m-%d") permanent_backup = "wiki-#{timestamp}.tar.gz" end # Put the backup file in the S3 bucket under backups. AWS::S3::Base.establish_connection!( :access_key_id => '...put your access key here...', :secret_access_key => '...put your secret access key here...' ) bucket_name = '...put your bucket name for wiki backups here...' begin AWS::S3::Bucket.find( bucket_name ) AWS::S3::S3Object.store( File.basename(backup_filename), open(backup_filename), bucket_name ) puts "#{backup_filename} was successfully backed up to Amazon S3" if permanent_backup AWS::S3::S3Object.store( permanent_backup, open(backup_filename), bucket_name ) puts "#{permanent_backup} (monthly archive) was successfully backed up to Amazon S3" end rescue puts "Unable to backup file to S3" end
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported