<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8182354863303129314</id><updated>2024-09-01T21:07:02.242-07:00</updated><category term="EC2"/><category term="S3"/><category term="aws"/><category term="file transfer"/><category term="shell script"/><title type='text'>Aruns Workshop</title><subtitle type='html'>A blog about System Administration</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://arunsasidhar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8182354863303129314/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://arunsasidhar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ARUNS</name><uri>http://www.blogger.com/profile/04807851032841352717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHuoQJf-aMZWgqziMlZ3NIecCCPyq370j_1rqDT2FTgeoVcnutUae0oLcr8i1ZkKBhoTG2CQCAZkqTanFeQX6jRRJSCrDE4Uu8b8sBR_x6oCuAt1DA4JaGY1bWYDQqhp4/s220/arun1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8182354863303129314.post-8094417692939503069</id><published>2011-07-18T06:37:00.000-07:00</published><updated>2011-07-19T04:50:14.787-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="aws"/><category scheme="http://www.blogger.com/atom/ns#" term="EC2"/><category scheme="http://www.blogger.com/atom/ns#" term="file transfer"/><category scheme="http://www.blogger.com/atom/ns#" term="S3"/><category scheme="http://www.blogger.com/atom/ns#" term="shell script"/><title type='text'>Shell Script To Transfer Files From Amazon S3 Bucket.</title><content type='html'>Yesterday i have got a requirement from one of my friend for a shell script. He has a application running on AWS EC2. This application daily generates a report file (In zip format) and put it into a aws S3 bucket. He wants to copy this zip file to his local server and available in a common share folder for internal use. And also he wants to extract the zip file before it is in the share. So i am started working on this and created a shell script to satisfy his requirement and i added some extra functionalites for easy use.&lt;br /&gt;
The main functionalities are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Copy a latest uploaded file from S3 bucket.&lt;/li&gt;
&lt;li&gt; Extract this file before moving to common share.&lt;/li&gt;
&lt;li&gt;Log all the activites to a log file.&lt;/li&gt;
&lt;li&gt;Send an email report to admin with current session of the log (Not sending All the Logs).&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
For The working of the script you need to install s3cmd utility. It is a great tool for managing a aws S3 bucket. For installation of s3cmd read the README file.&lt;br /&gt;
&lt;br /&gt;
Here is the script:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style=&quot;color: #274e13;&quot;&gt;#!/bin/bash&lt;br /&gt;
#===============================================================================&lt;br /&gt;
#&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE: &lt;br /&gt;
# &lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USAGE:&amp;nbsp; &lt;br /&gt;
# &lt;br /&gt;
#&amp;nbsp;&amp;nbsp; DESCRIPTION:&amp;nbsp; This script is used to transfer latest zip file from AWS S3 to local directory then extract it into another directory.&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; It will log all the actions and send a mail to admin.&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OPTIONS:&amp;nbsp; ---&lt;br /&gt;
#&amp;nbsp; REQUIREMENTS:&amp;nbsp; This Script Requires s3cmd Utility. It is availble in sourceforge.net&lt;br /&gt;
#&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; http://sourceforge.net/projects/s3tools/files/s3cmd/1.0.1/s3cmd-1.0.1.tar.gz/download&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BUGS:&amp;nbsp; ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTES:&amp;nbsp; ---&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AUTHOR:&amp;nbsp; arun sasidharan (), arunssasidhar@gmail.com&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COMPANY: &lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VERSION:&amp;nbsp; 1.0&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CREATED:&amp;nbsp; Monday 18 July 2011 03:58:59&amp;nbsp; IST IST&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REVISION:&amp;nbsp; ---&lt;br /&gt;
#===============================================================================&lt;br /&gt;
##Your S3 Bucket Name&lt;br /&gt;
S3_BUCKET=mybucket &amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
##Local Directory For downloading files from S3 Bucket&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
LOCAL_DIR=/tmp/1/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
##Where to Log your activities during tranasfer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
LOG_FILE=/tmp/scriptlog&lt;br /&gt;
&lt;br /&gt;
##Target location to extract the ZIP file&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
ZIP_EXT_DIR=/tmp/var/Downloads/ &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
##Admin Email For sending Log&lt;br /&gt;
ADMIN_EMAIL=arunssasidhar@gmail.com&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
##Email Subject&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
EMAIL_SUBJECT=&quot;S3 Transfer Status On&quot;&amp;nbsp; #Should be in Quotes&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
#*****************************************************************************************&lt;br /&gt;
#&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STOP EDITING FROM HERE DOWN!!!&lt;br /&gt;
#&lt;br /&gt;
#*****************************************************************************************&lt;br /&gt;
PATH=/usr/local/bin:/usr/bin:/bin:&lt;br /&gt;
DATE=$(date +&quot;%d-%m-%Y_%Hh:%Mm&quot;)&lt;br /&gt;
TIME=$(date +&quot;%Hh:%Mm&quot;)&lt;br /&gt;
echo &quot;&quot; &amp;gt;&amp;gt;$LOG_FILE&lt;br /&gt;
echo &quot;$DATE&quot; &amp;gt;&amp;gt;$LOG_FILE&lt;br /&gt;
#&lt;br /&gt;
[ -d $LOCAL_DIR ] || mkdir -p $LOCAL_DIR&lt;br /&gt;
[ -d $ZIP_EXT_DIR ] || mkdir -p $ZIP_EXT_DIR&lt;br /&gt;
#&lt;br /&gt;
#Main Functions&lt;br /&gt;
#This function is used to extract current sessions log from log file and send it to Admin&lt;br /&gt;
mail_me () {&lt;br /&gt;
&amp;nbsp;LIVE=$(cat $LOG_FILE | grep -n &quot;$DATE&quot; | tail -1 | cut -d&quot;:&quot; -f 1)&lt;br /&gt;
&amp;nbsp;tail -n +$LIVE $LOG_FILE | mail -s &quot;$EMAIL_SUBJECT $DATE&quot; $ADMIN_EMAIL&lt;br /&gt;
}&lt;br /&gt;
#&lt;br /&gt;
#This function will send mail then exit with status 0 &lt;br /&gt;
exit_0 () {&lt;br /&gt;
&amp;nbsp; mail_me&lt;br /&gt;
&amp;nbsp; exit 0&lt;br /&gt;
}&lt;br /&gt;
#&lt;br /&gt;
#This function will send mail then exit with status 1 (End up with error!)&lt;br /&gt;
exit_1 () {&lt;br /&gt;
&amp;nbsp; mail_me&lt;br /&gt;
&amp;nbsp; exit 1&lt;br /&gt;
}&lt;br /&gt;
#########################&lt;br /&gt;
## Get the Last uploaded File-name from S3 Bucket (Only One)&lt;br /&gt;
S3_OBJECT=$(s3cmd ls s3://$S3_BUCKET | sort | tail -1 | awk &#39;{ print $4 }&#39;) &lt;br /&gt;
## Download the latest file into Local Directory&lt;br /&gt;
s3cmd get $S3_OBJECT $LOCAL_DIR 2&amp;gt;&amp;gt;$LOG_FILE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
#########################&lt;br /&gt;
if [ $? -eq 0 ]&lt;br /&gt;
&amp;nbsp; then &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;$TIME : Transfer Completed Successfully&quot; &amp;gt;&amp;gt;$LOG_FILE&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE=$(echo $S3_OBJECT | awk -F&quot;/&quot; &#39;{print $NF}&#39;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Fetch the file name from S3 URL&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;$TIME : Zip Extraction Started&quot; &amp;gt;&amp;gt;$LOG_FILE&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unzip -nq &quot;$LOCAL_DIR&quot;&quot;$FILE&quot; -d $ZIP_EXT_DIR 2&amp;gt;&amp;gt;$LOG_FILE&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Unzip the downloaded file to extract Directory&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ $? -eq 0 ] &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then echo &quot;$TIME : Zip Successfully Extracted To $ZIP_EXT_DIR&quot; &amp;gt;&amp;gt;$LOG_FILE&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else echo &quot;$TIME : Zip Extraction Failed With Above Errors&quot; &amp;gt;&amp;gt;$LOG_FILE &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_0&amp;nbsp; &lt;br /&gt;
&amp;nbsp; else&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;$TIME : Transfer Failed with Above Errors&quot; &amp;gt;&amp;gt;$LOG_FILE&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_1&lt;br /&gt;
fi&lt;br /&gt;
#########END#######&lt;/blockquote&gt;&lt;br /&gt;
You can Download the script from &lt;a href=&quot;http://www.mediafire.com/file/1fopajh3kjwwap6/AWS-S3.sh&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://arunsasidhar.blogspot.com/feeds/8094417692939503069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8182354863303129314/8094417692939503069?isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8182354863303129314/posts/default/8094417692939503069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8182354863303129314/posts/default/8094417692939503069'/><link rel='alternate' type='text/html' href='http://arunsasidhar.blogspot.com/2011/07/shell-script-to-transfer-files-from.html' title='Shell Script To Transfer Files From Amazon S3 Bucket.'/><author><name>ARUNS</name><uri>http://www.blogger.com/profile/04807851032841352717</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='26' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHuoQJf-aMZWgqziMlZ3NIecCCPyq370j_1rqDT2FTgeoVcnutUae0oLcr8i1ZkKBhoTG2CQCAZkqTanFeQX6jRRJSCrDE4Uu8b8sBR_x6oCuAt1DA4JaGY1bWYDQqhp4/s220/arun1.jpg'/></author><thr:total>1</thr:total></entry></feed>