<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SoftLayer Blog &#187; python</title>
	<atom:link href="http://blog.softlayer.com/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.softlayer.com</link>
	<description>A Behind the Scenes Look at the Best Hosting Provider in the World</description>
	<lastBuildDate>Fri, 24 May 2013 18:19:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.1</generator>
		<item>
		<title>Social Media for Brands: Monitor Twitter Search via Email</title>
		<link>http://blog.softlayer.com/2013/social-media-for-brands-monitor-twitter-search-via-email/</link>
		<comments>http://blog.softlayer.com/2013/social-media-for-brands-monitor-twitter-search-via-email/#comments</comments>
		<pubDate>Fri, 22 Mar 2013 21:50:30 +0000</pubDate>
		<dc:creator>Phil Jackson</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[alert]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[brand monitoring]]></category>
		<category><![CDATA[email digest]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twitter alert]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=10928</guid>
		<description><![CDATA[If you&#8217;re responsible for monitoring Twitter for conversations about your brand, you&#8217;re faced with a challenge: You need to know what people are saying about your brand at all times AND you don&#8217;t want to live your entire life in front of Twitter Search. Over the years, a number of social media applications have been [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re responsible for monitoring Twitter for conversations about your brand, you&#8217;re faced with a challenge: You need to know what people are saying about your brand at all times <strong>AND</strong> you don&#8217;t want to live your entire life in front of <a href="https://twitter.com/search">Twitter Search</a>. </p>
<p>Over the years, a number of social media applications have been released specifically for brand managers and social media teams, but most of those applications (especially the free/inexpensive ones) differentiate themselves only by the quality of their analytics and how real-time their data is reported. If that&#8217;s what you need, you have plenty of fantastic options. Those differentiators don&#8217;t really help you if you want to take a more passive role in monitoring Twitter search &#8230; You still have to log into the application to see your fancy dashboards with all of the information. Why can&#8217;t the data come to you?</p>
<p>About three weeks ago, <a href="http://blog.softlayer.com/author/khazard/">Hazzy</a> stopped by my desk and asked if I&#8217;d help build a tool that uses the <a href="https://dev.twitter.com/docs/using-search">Twitter Search API</a> to collect brand keywords mentions and send an email alert with those mentions in digest form every 30 minutes. The social media team had been using <a href="http://www.twilert.com/">Twilert</a> for these types of alerts since February 2012, but over the last few months, messages have been delayed due to issues connecting to Twitter search &#8230; It seems that the service is so popular that it hits Twitter&#8217;s limits on API calls. An email digest scheduled to be sent every thirty minutes ends up going out ten hours late, and ten hours is an eternity in social media time. We needed something a little more timely and reliable, so I got to work on a simple &#8220;Twitter Monitor&#8221; script to find all mentions of our keyword(s) on Twitter, email those results in a simple digest format, and repeat the process every 30 minutes when new mentions are found.</p>
<p>With Bear&#8217;s <a href="https://github.com/bear/python-twitter">Python-Twitter library</a> on GitHub, connecting to the Twitter API is a breeze. Why did we use Bear&#8217;s library in particular? Just look at his <a a href="https://secure.gravatar.com/avatar/1d1d1c010659cc824304b9a35ea33a14?s=400&#038;d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png">profile picture</a>. Yeah &#8230; &#8217;nuff said. So with that Python wrapper to the Twitter API in place, I just had to figure out how to use the tools Twitter provided to get the job done. For the most part, the process was very clear, and Twitter actually made querying the search service much easier than we expected. The Search API finds all mentions of whatever string of characters you designate, so instead of creating an elaborate Boolean search for &#8220;SoftLayer OR #SoftLayer OR @SoftLayer &#8230;&#8221; or any number of combinations of arbitrary strings, we could simply search for &#8220;SoftLayer&#8221; and have all of those results included. If you want to see <em>only</em> @ replies or hashtags, you can limit your search to those alone, but because &#8220;SoftLayer&#8221; isn&#8217;t a word that gets thrown around much without referencing us, we wanted to see every instance. This is the code we ended up working with for the search functionality:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> status_by_search<span style="color: black;">&#40;</span>search<span style="color: black;">&#41;</span>:
    statuses = api.<span style="color: black;">GetSearch</span><span style="color: black;">&#40;</span>term=search<span style="color: black;">&#41;</span>
    results = <span style="color: #008000;">filter</span><span style="color: black;">&#40;</span><span style="color: #ff7700;font-weight:bold;">lambda</span> x: x.<span style="color: #008000;">id</span> <span style="color: #66cc66;">&gt;</span> get_log_value<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, statuses<span style="color: black;">&#41;</span>
    returns = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>results<span style="color: black;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">0</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> result <span style="color: #ff7700;font-weight:bold;">in</span> results:
            returns.<span style="color: black;">append</span><span style="color: black;">&#40;</span>format_status<span style="color: black;">&#40;</span>result<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        new_tweets<span style="color: black;">&#40;</span>results<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> returns, <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>returns<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        exit<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>If you walk through the script, you&#8217;ll notice that we want to return only unseen Tweets to our email recipients. Shortly after got the Twitter Monitor up and running, we noticed how easy it would be to get spammed with the same messages every time the script ran, so we had to filter our results accordingly. Twitter&#8217;s API allows you to request tweets with a Tweet ID greater than one that you specify, however when I tried designating that &#8220;oldest&#8221; Tweet ID, we had mixed results &#8230; Whether due to my ignorance or a fault in the implementation, we were getting fewer results than we should. Tweet IDs are unique and numerically sequential, so they can be relied upon as much as datetime (and far easier to boot), so I decided to use the highest Tweet ID from each batch of processed messages to filter the next set of results. The script stores that Tweet ID and uses a little bit of logic to determine which Tweets are newer than the last Tweet reported.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> new_tweets<span style="color: black;">&#40;</span>results<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> get_log_value<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #008000;">max</span><span style="color: black;">&#40;</span>result.<span style="color: #008000;">id</span> <span style="color: #ff7700;font-weight:bold;">for</span> result <span style="color: #ff7700;font-weight:bold;">in</span> results<span style="color: black;">&#41;</span>:
        set_log_value<span style="color: black;">&#40;</span><span style="color: #008000;">max</span><span style="color: black;">&#40;</span>result.<span style="color: #008000;">id</span> <span style="color: #ff7700;font-weight:bold;">for</span> result <span style="color: #ff7700;font-weight:bold;">in</span> results<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">True</span>
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> get_log_value<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">with</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'tweet.id'</span>, <span style="color: #483d8b;">'r'</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> f:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>f.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> set_log_value<span style="color: black;">&#40;</span>messageId<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">with</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'tweet.id'</span>, <span style="color: #483d8b;">'w+'</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> f:
        f.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #008000;">str</span><span style="color: black;">&#40;</span>messageId<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>Once we culled out our new Tweets, we needed our script to email those results to our social media team. Luckily, we didn&#8217;t have to reinvent the wheel here, and we added a few lines that enabled us to send an HTML-formatted email over any SMTP server. One of the downsides of the script is that login credentials for your SMTP server are stored in plaintext, so if you can come up with another alternative that adds a layer of security to those credentials (or lets you send with different kinds of credentials) we&#8217;d love for you to share it.</p>
<p>From that point, we could run the script manually from the server (or a laptop for that matter), and an email digest would be sent with new Tweets. Because we wanted to automate that process, I added a cron job that would run the script at the desired interval. As a bonus, if the script doesn&#8217;t find any new Tweets since the last time it was run, it doesn&#8217;t send an email, so you won&#8217;t get spammed by &#8220;0 Results&#8221; messages overnight.</p>
<p>The script has been in action for a couple of weeks now, and it has gotten our social media team&#8217;s seal of approval. We&#8217;ve added a few features here and there (like adding the number of Tweets in an email to the email&#8217;s subject line), and I&#8217;ve enlisted the help of <a href="https://github.com/crackerjackmack">Kevin Landreth</a> to clean up the code a little. Now, we&#8217;re ready to share the <a href="http://sftlyr.com/sltm">SoftLayer Twitter Monitor</a> script with the world via GitHub!</p>
<p><a href="http://sftlyr.com/sltm"><img class="centered" style="border:1px solid #BBB;" src="http://cdn.softlayer.com/innerlayer/sltm.jpg" alt="SoftLayer Twitter Monitor on GitHub"/></a></p>
<p>The script should work well right out of the box in any Python environment with the required libraries after a few simple configuration changes:</p>
<ul>
<li>Get your Twitter Customer Secret, Access Token and Access Secret from <a href="https://dev.twitter.com/">https://dev.twitter.com/</a></li>
<li>Copy/paste that information where noted in the script.</li>
<li>Update your search term(s).</li>
<li>Enter your mailserver address and port.</li>
<li>Enter your email account credentials if you aren&#8217;t working with an open relay.</li>
<li>Set the <code>self.from_</code> and <code>self.to</code> values to your preference.</li>
<li>Ensure all of the Python requirements are met.</li>
<li>Configure a cron job to run the script your desired interval. For example, if you want to send emails every 10 minutes: <code>*/10 * * * * &lt;path to python> &lt;path to script&gt; 2&gt;&amp;1 /dev/null</code></li>
</ul>
<p>As soon as you add your information, you should be in business. You&#8217;ll have an in-house Twitter Monitor that delivers a simple email digest of your new Twitter mentions at whatever interval you specify! </p>
<p>Like any good open source project, we want the community&#8217;s feedback on how it can be improved or other features we could incorporate. This script uses the Search API, but we&#8217;re also starting to play around with the Stream API and <a href="http://www.softlayer.com/services/additional/message-queue">SoftLayer Message Queue</a> to make some even cooler tools to automate brand monitoring on Twitter. </p>
<p>If you end up using the script and liking it, send SoftLayer a shout-out via Twitter and share it with your friends!</p>
<p>-<a href="http://twitter.com/softlayerdevs">@SoftLayerDevs</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2013/social-media-for-brands-monitor-twitter-search-via-email/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using SoftLayer Object Storage to Back Up Your Server</title>
		<link>http://blog.softlayer.com/2012/using-softlayer-object-storage-to-back-up-your-server/</link>
		<comments>http://blog.softlayer.com/2012/using-softlayer-object-storage-to-back-up-your-server/#comments</comments>
		<pubDate>Thu, 27 Dec 2012 21:40:01 +0000</pubDate>
		<dc:creator>Ronald Steelman</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SoftLayer]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Backups]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[object storage]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[SolusVM]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.softlayer.com/?p=9795</guid>
		<description><![CDATA[Before I came to my senses and moved my personal servers to SoftLayer, I was one of many victims of a SolusVM exploit that resulted in the wide-scale attack of many nodes in my previous host&#8217;s Chicago data center. While I&#8217;m a firm believer in backing up my data, I could not have foreseen the [...]]]></description>
			<content:encoded><![CDATA[<p>Before I came to my senses and moved my personal servers to SoftLayer, I was one of many victims of a SolusVM exploit that resulted in the wide-scale attack of many nodes in my previous host&#8217;s Chicago data center. While I&#8217;m a firm believer in backing up my data, I could not have foreseen the situation I was faced with: Not only was my server in one data center compromised with all of its data deleted, but my backup server in one of the host&#8217;s other data centers was also attacked &#8230; This left me with old, stale backups on my local computer and not much else. I quickly relocated my data and decided that I should use <a href="http://www.softlayer.com/cloudlayer/storage/">SoftLayer Object Storage</a> to supplement and improve upon my backup and disaster recovery plans.</p>
<p>With <a href="https://github.com/softlayer/softlayer-object-storage-python">SoftLayer Object Storage Python Client</a> set up and the SoftLayer Object Storage Backup script &mdash; <a href="http://sldn.softlayer.com/blog/klandreth/Deglazing-slbackuppy-Usage-Object-Storage-Kitchen">slbackup.py</a> &mdash; in hand, I had the tools I needed to build a solid backup infrastructure easily. On Linux.org, I contributed an article about how to <a href="http://www.linux.org/article/view/mysql-backups-using-softlayer-object-storage">perform MySQL backups</a> with those resources, so the database piece is handled, but I also need to back up my web files, so I whipped up another quick <code>bash</code> script to run:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># The path the backups will be dumped to</span>
<span style="color: #007800;">DUMP_DIR</span>=<span style="color: #ff0000;">&quot;/home/backups/&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Path to the web files to be backed up</span>
<span style="color: #007800;">BACKUP_PATH</span>=<span style="color: #ff0000;">&quot;/var/www/sites /&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Back up folder name (mmddyyyy)</span>
<span style="color: #007800;">BACKUP_DIR</span>=<span style="color: #ff0000;">&quot;<span style="color: #780078;">`date +%m%d%Y`</span>&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Backup File Name</span>
<span style="color: #007800;">DUMP_FILE</span>=<span style="color: #ff0000;">&quot;<span style="color: #780078;">`date +%m_%d_%Y_%H_%M_%S`</span>_site_files&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># SL container name</span>
<span style="color: #007800;">CONTAINER</span>=<span style="color: #ff0000;">&quot;site_backups&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Create backup dir if doesn't exist</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-d</span> <span style="color: #007800;">$DUMP_DIR</span><span style="color: #007800;">$BACKUP_DIR</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #007800;">$DUMP_DIR</span><span style="color: #007800;">$BACKUP_DIR</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-zcvpf</span> <span style="color: #007800;">$DUMP_DIR</span><span style="color: #007800;">$BACKUP_DIR</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DUMP_FILE</span>.tar.gz <span style="color: #007800;">$BACKUP_PATH</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Make sure the archive exists</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$DUMP_DIR</span><span style="color: #007800;">$BACKUP_DIR</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$DUMP_FILE</span>.tar.gz <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
        <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>slbackup.py <span style="color: #660033;">-s</span> <span style="color: #007800;">$DUMP_DIR</span><span style="color: #007800;">$BACKUP_DIR</span><span style="color: #000000; font-weight: bold;">/</span> <span style="color: #660033;">-o</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$CONTAINER</span>&quot;</span> <span style="color: #660033;">-r</span> <span style="color: #000000;">30</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># Remove the backup stored locally</span>
        <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$DUMP_DIR</span><span style="color: #007800;">$BACKUP_DIR</span>
&nbsp;
        <span style="color: #666666; font-style: italic;"># Success</span>
        <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">else</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$DUMP_DIR</span><span style="color: #007800;">$BACKUP_DIR</span>/<span style="color: #007800;">$DUMP_FILE</span>.tar.gz does not exist.&quot;</span>
        <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>It&#8217;s not the prettiest <code>bash</code> script, but it gets the job done. By tweaking a few variables, you can easily generate backups for any important directory of files and push them to your SoftLayer Object Storage account. If you want to change the retention time of your backups to be longer or shorter, you can change the <code>30</code> after the <code>–r</code> in the line below to the number of days you want to keep each backup:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>slbackup.py <span style="color: #660033;">-s</span> <span style="color: #007800;">$DUMP_DIR</span><span style="color: #007800;">$BACKUP_DIR</span><span style="color: #000000; font-weight: bold;">/</span> <span style="color: #660033;">-o</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$CONTAINER</span>&quot;</span> <span style="color: #660033;">-r</span> <span style="color: #000000;">30</span></pre></div></div>

<p>I created a script for each website on my server, and I set a CRON (crontab –e) entry to run each one on Sundays staggered by 5 minutes:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000;">5</span> <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000;">0</span>  <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>cron<span style="color: #000000; font-weight: bold;">/</span>CRON-site1.com_web_files <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
<span style="color: #000000;">10</span> <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000;">0</span>  <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>cron<span style="color: #000000; font-weight: bold;">/</span>CRON-site2.com_web_files <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null
<span style="color: #000000;">15</span> <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000; font-weight: bold;">*</span> <span style="color: #000000;">0</span>  <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>cron<span style="color: #000000; font-weight: bold;">/</span>CRON-site3.com_web_files <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null</pre></div></div>

<p>If you&#8217;re looking for an easy way to automate and solidify your backups, this little bit of code could make life easier on you. Had I taken the few minutes to put this script together prior to the attack I experienced at my previous host, I wouldn&#8217;t have lost any of my data. It&#8217;s easy to get lulled into &#8220;backup apathy&#8221; when you don&#8217;t <em>need</em> your backups, but just because nothing *has* happened to your data doesn&#8217;t mean nothing *can* happen to your data.</p>
<p>Take it from me &#8230; Be over-prepared and save yourself a lot of trouble.</p>
<p>-Ronald</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softlayer.com/2012/using-softlayer-object-storage-to-back-up-your-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
