User Tools

Site Tools


snapshot_backup

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
snapshot_backup [2011/09/20 20:50] – [C0D3s] k2patelsnapshot_backup [2020/08/10 02:35] (current) – external edit 127.0.0.1
Line 8: Line 8:
   * perl   * perl
   * Net::Amazon::EC2   * Net::Amazon::EC2
 +  * DBI:SQLite
   * bash   * bash
  
Line 20: Line 21:
   * delete_snap.pl     # Delete Snapshot which is out of retention.   * delete_snap.pl     # Delete Snapshot which is out of retention.
  
-==== C0D3s ====+===== C0D3s =====
  
-=== config ===+==== config ====
  
 <code bash | config > <code bash | config >
Line 32: Line 33:
 </code> </code>
  
-=== db.pl ===+==== bash config ==== 
 +<code bash | config_bash> 
 +# this file contain what need to be backup.   
 +# Follow the format of value 
 +# instance<serial number must be unique> = <Volume ID> <Retention Freq.> <total Retention> 
 + 
 +instance1="vol-2222pqrs 7 2" 
 +instance2="vol-1111abcd 1 1" 
 +</code> 
 + 
 +==== db.pl ====
  
 <code perl | db.pl > <code perl | db.pl >
Line 99: Line 110:
 </code> </code>
  
-=== backup.sh ===+==== backup.sh ====
  
 <code bash | backup.sh> <code bash | backup.sh>
Line 113: Line 124:
 ##################################### #####################################
  
-source config_bash 
  
-BASE=$(pwd) 
 BASE="$( cd "$( dirname "$0" )" && pwd )" BASE="$( cd "$( dirname "$0" )" && pwd )"
 cd $BASE cd $BASE
 +
 +source config_bash
 +
 DATE=$(date +%Y%m%d) DATE=$(date +%Y%m%d)
 perl=$(which perl) perl=$(which perl)
Line 169: Line 181:
 done done
 </code> </code>
 +
 +
 +==== create snapshot ====
 +
 +<code perl | create_snap.pl>
 +#!/usr/bin/perl -w
 +# Created / written by k2patel@hotmail.com
 +# this script create snapshot for given volume.
 +
 +use Data::Dumper;
 +use strict;
 +#use Date::Calc qw( :all );
 +
 +use lib "/usr/share/perl5/vendor_perl";
 +use Net::Amazon::EC2;
 +
 +# Configuration.
 +require "config";
 +
 +# our $ec2;
 +our $awsId;
 +our $awsKey;
 +our $awsinstance;
 +
 +my($num_args) = $#ARGV + 1;
 +if ($num_args < 2) {
 +  print "\nUsage: create_snap.pl <Volume_ID> <Today>\n";
 +  print "This will create Snapshot for given Volume\n";
 +  print "Format for today's Date must be \"YYYYMMDD\"\n";
 +  exit 1;
 +}
 +
 +## Define Access Keys for Amazon.
 +my $ec2 = Net::Amazon::EC2->new(
 +        AWSAccessKeyId => $awsId, 
 +        SecretAccessKey => $awsKey
 +);
 +
 +my @result = $ec2->create_snapshot(
 +VolumeId => $ARGV[0],
 +Description => $ARGV[1]
 +);
 +
 +print $result[0]->{snapshot_id};
 +#print Dumper \@result;
 +</code>
 +
 +==== delete shnapshot ====
 +<code perl | delete_snap.pl>
 +# This script delete snapshot of requested volume
 +# Author : k2patel <k2patel@hotmail.com>
 +# Please send me message for suggestion or update.
 +
 +# this script delete snapshot
 +
 +use Data::Dumper;
 +use strict;
 +#use Date::Calc qw( :all );
 +
 +use lib "/usr/share/perl5/vendor_perl";
 +use Net::Amazon::EC2;
 +
 +# Configuration.
 +require "config";
 +
 +# our $ec2;
 +our $awsId;
 +our $awsKey;
 +our $awsinstance;
 +
 +my($num_args) = $#ARGV + 1;
 +if ($num_args < 1) {
 +  print "\nUsage: delete_snap.pl <Snapshot_ID>\n";
 +  print "This will Delete Snapshot\n";
 +  exit 1;
 +}
 +
 +## Define Access Keys for Amazon.
 +my $ec2 = Net::Amazon::EC2->new(
 +        AWSAccessKeyId => $awsId, 
 +        SecretAccessKey => $awsKey
 +);
 +
 +my @result = $ec2->delete_snapshot(
 +SnapshotId => $ARGV[0]
 +);
 +
 +
 +if ( $result[0] eq 1 ){
 + #print "Good to go \n";
 + exit 0;
 +}else{
 + my $err = Dumper \@result;
 + open F,">./rnd895896";
 + print F $err;
 + close F;
 + if(system ("/bin/mail -s \"ERROR : Dump Of Error\" k2patel\@hotmail.com < ./rnd895896") == 0){
 + unlink "./rnd895896";
 + }
 + exit 1;
 + }
 +</code>
 +
 +==== Check Snapshot status ====
 +<code perl | snap_status.pl >
 +# This script check status of given snapshot and wait for it get completed.
 +# Author : k2patel <k2patel@hotmail.com>
 +# Please send me message for suggestion or update.
 +
 +
 +use Data::Dumper;
 +use strict;
 +#use Date::Calc qw( :all );
 +
 +use lib "/usr/share/perl5/vendor_perl";
 +use Net::Amazon::EC2;
 +
 +# Configuration.
 +require "config";
 +
 +# our $ec2;
 +our $awsId;
 +our $awsKey;
 +our $awsinstance;
 +
 +my($num_args) = $#ARGV + 1;
 +if ($num_args < 1) {
 +  print "\nUsage: snap_status.pl <Snapshot_ID>\n";
 +  print "This will check Snapshot Status\n";
 +  exit 1;
 +}
 +
 +## Define Access Keys for Amazon.
 +my $ec2 = Net::Amazon::EC2->new(
 +        AWSAccessKeyId => $awsId, 
 +        SecretAccessKey => $awsKey
 +);
 +
 +my @result = $ec2->describe_snapshots(
 +SnapshotId => $ARGV[0]
 +);
 +
 +while ( $result[0][0]->{status} ne 'completed' ){
 + sleep 10;
 +}
 +
 +if ( $result[0][0]->{status} eq 'completed' ){
 + my $tst = "Good to go \n";
 + exit 0;
 +}else{
 + my $err = Dumper \@result;
 + open F,">./rnd892346";
 + print F $err;
 + close F;
 + if(system ("/bin/mail -s \"ERROR : Dump Of Error\" k2patel\@hotmail.com < ./rnd892346") == 0){
 + unlink "./rnd892346";
 + }
 + exit 1;
 + }
 +</code>
 +
 +==== Machine DB ====
 +
 +<code bash>
 +sqlite3 machine.db
 +</code>
 +
 +<code sql | machine.db>
 +PRAGMA foreign_keys=OFF;
 +BEGIN TRANSACTION;
 +CREATE TABLE DESK ( v_ID, s_ID, Dte );
 +</code>
 +
snapshot_backup.1316551826.txt.gz · Last modified: 2020/08/10 02:29 (external edit)