S3 to backup Media Temple’s Grid (gs)">Using Amazon S3 to backup Media Temple’s Grid (gs)
Proper backups are like eating your vegetables -- we all say we'll do it and that it is a good idea, but it is so much easier NOT to do it and eat Oreo cookies instead. Don't risk losing your website because you didn't bother backing up.
Proper backups are like eating your vegetables — we all say we’ll do it and that it is a good idea, but it is so much easier NOT to do it and eat Oreo cookies instead. Then you wake up one day, are 25 years old and are a really picky eater and annoy your boyfriend because you won’t go eat at the Indian place he loves that doesn’t have a menu but only serves vegetarian stuff that scares you. And the people at Subway give you dirty looks when you tell them you don’t want anything on your sandwich. Don’t risk losing your website because you didn’t bother backing up.
Update: I posted a video tutorial that walks through all of these steps here. I still recommend reading through this page because the video tutorial assumes that you will be following these steps.
This a tutorial for creating an automated back-up system for (mt) Media Temple’s (gs) Grid Service. Although it will almost certainly work on other servers and configurations, this is written for users who are on the Grid who want an easy way to do automated backups. I personally feel most comfortable having my most important files backed-up offsite, so I use Amazon’s S3 service. S3 is fast, super cheap (you only pay for what you use) and reliable. I use S3 to store my website backups and my most important computer files. I spend about $1.50 a month, and that is for nearly 10 GBs of storage.
You can alter the script to simply store the data in a separate location on your server (where you can then just FTP or SSH in and download the compressed archive), but this process is assuming that you are using both the (gs) and S3.
This tutorial assumes that you know how to login to your (gs) via SSH using either the Terminal in OS X or Linux or PuTTY for Windows. If SSH is still confusing, check out (mt)‘s Knowledge Base article and take a deep breath. It looks more scary than it really is.
Acknowledgements
I would be remiss if I didn’t give a GIGANTIC shout-out to David at Stress Free Zone and Paul Stamatiou (I met Paul at the Tweet-up in March) who both wrote great guides to backing stuff up server side to S3. I blatantly stole from both of them and rolled my own script that is a combination of the two. Seriously, thank you both for your awesome articles.
Furthermore, none of this would even be possible without the brilliant S3Sync Ruby utility.
Installing S3Sync
Although PHP and Perl script exist to connect with the S3 servers, the Ruby solution that the S3Sync dudes created is much, much better.
The (gs) already has Ruby on it (version 1.8.5 as of this writing), which is up-to-date enough for S3Sync.
OK, so log-in to your (gs) via SSH. My settings (and the defaults for (gs), I assume) are to place you in the .home directory as soon as you login to SSH.
Once you are at the command line, type in the following command:
wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
This will download the latest S3Sync tarball to your .home folder
tar xvzf s3sync.tar.gz
This uncompresses the archive to its own directory.
rm s3sync.tar.gz</p> <p>cd s3sync</p> <p>mkdir certs</p> <p>cd certs</p> <p>wget http://mirbsd.mirsolutions.de/cvs.cgi/~checkout~/src/etc/ssl.certs.shar</p> <p>sh ssl.certs.shar</p> <p>cd ..</p> <p>mkdir s3backup
That will delete the compressed archive, make a directory for certificates (certs), download an SSL certificate generator script, execute that script and create a backup directory within the s3sync directory called “s3backup.”
Now, all you need to do is edit two files in your newly created s3sync folder. You can use TextEdit, TextMate, NotePad or any other text editor to edit these files. You are only going to be changing a few of the values.
I edited the files via Transmit, but you can use vi straight from the command line if you are comfortable.
The first file you want to edit is called s3config.yml.sample
You want to edit that file so that the aws_access_key and aws_secret_access_key fields correspond to those from your S3 account. You can find those in the Access Information area after logging into Amazon.com’s Web Services page.
Make sure that the ssl_cert_dir: has the following value (if you created your s3sync folder in the .home directory): /home/xxxxx/users/.home/s3sync/certs were xxxxx is the name of your server.
You can get your entire access path by typing in
pwdat the command line.
Save that file as s3config.yml
The next step is something I had to do in order to get the s3 part of the script to connect, but it may not be required for all server set-ups, but it was for the (gs).
Edit the s3config.rb file so that the area that says
confpath = [xxxxx]
looks like this
confpath = ["./", "#{ENV['S3CONF']}", "#{ENV['HOME']}/.s3conf", "/etc/s3conf"]
Writing the backup script (or editing mine)
OK, that was the hard part. The rest is pretty simple.
I created the following backup script called, “backup_server.sh” This script will backup the content of the domain directories you specify (because if you are like me, some of your domain folders are really just symlinks) and all of your MySQL databases. It will then upload each directory and database in its own compressed archive to the S3 Bucket of your choice. Buckets are unique, so create a Bucket using either the S3Fox tool or Transmit or another S3 manager that is specific for your website.
This is the content of the script:
#!/bin/sh</p> <h1>A list of website directories to back up</h1> <p>websites="site1.com site2.com site3.com"</p> <h1>The destination directory to backup the files to</h1> <p>destdir=/home/xxxxx/users/.home/s3sync/s3backup</p> <h1>The directory where all website domain directories reside</h1> <p>domaindir=/home/xxxxx/users/.home/domains</p> <h1>The MySQL database hostname</h1> <p>dbhost=internal-db.sxxxxx.gridserver.com</p> <h1>The MySQL database username - requires read access to databases</h1> <p>dbuser=dbxxxxx</p> <h1>The MySQL database password</h1> <p>dbpassword=xxxxxxx</p> <p>echo <code>date</code> ": Beginning backup process..." > $destdir/backup.log</p> <h1>remove old backups</h1> <p>rm $destdir/*.tar.gz</p> <h1>backup databases</h1> <p>for dbname in <code>echo 'show databases;' | /usr/bin/mysql -h $dbhost -u$dbuser -p$dbpassword</code> do if [ $dbname != "Database" ]; then echo <code>date</code> ": Backing up database $dbname..." >> $destdir/backup.log /usr/bin/mysqldump --opt -h $dbhost -u$dbuser -p$dbpassword $dbname > $destdir/$dbname.sql tar -czf $destdir/$dbname.sql.tar.gz $destdir/$dbname.sql rm $destdir/$dbname.sql fi done</p> <h1>backup web content</h1> <p>echo <code>date</code> ": Backing up web content..." >> $destdir/backup.log for website in $websites do echo <code>date</code> ": Backing up website $website..." >> $destdir/backup.log tar -czf $destdir/$website.tar.gz $domaindir/$website done</p> <p>echo <code>date</code> ": Backup process complete." >> $destdir/backup.log</p> <h1>The directory where s3sync is installed</h1> <p>s3syncdir=/home/xxxxx/users/.home/s3sync</p> <h1>The directory where the backup archives are stored</h1> <p>backupdir=/home/xxxxx/users/.home/s3sync/s3backup</p> <h1>The S3 bucket a.k.a. directory to upload the backups into</h1> <p>s3bucket=BUCKET-NAME</p> <p>cd $s3syncdir ./s3sync.rb $backupdir/ $s3bucket:
For (mt) Media Temple (gs) Grid Server users, you just need to change the “site1.com” values to your own domains (you can do as many as you want) and substitute all the places where marked “xxxxx” with your server number (again, you can find this by entering “pwd” at the command line) and with your database password (which is visible in the (mt) control panel under the “Database” module.
Make sure you change the value at the end of the script that says “BUCKET-NAME” to the name of the S3 Bucket you want to store you backups in.
Now that you have edited the script, upload it to your /data directory.
Change the permissions (you can do this either via SSH
chmod a+x backup_server.shor using your FTP client to 755.
Now, test the script.
In the command line type this in:
cd data</p> <p>./backup_server.sh</p> <p>
And watch the magic. Assuming everything was correctly input, an archived version of all your domain directories and all of your MySQL databases will be put in a folder called “s3backup” and then uploaded directly to your S3 server. Next time you run the script, the backup files will be replaced.
Check to make sure that the script is working the way you want it to work.
Automate the script
You can either run the script manually from the command line or set it to run automatically. I’ve set mine to run each night at midnight. To set up the cron job, just click on the Cron Jobs button in the (mt) Admin area:
and set you parameters. The path for your script is: /home/xxxxx/data/backup_server.sh.
Enjoy your backups!
One note: The compressed domain archives retain their entire directory structure, as such, there is a .home directory that may not appear in Finder or Windows Explorer unless you have invisible or hidden files turned on. Don’t worry, all your data is still retained in those archives.
Update (7/27/2008):
If you are getting an error that says something like
Permanent redirect received. Try setting AWS_CALLING_FORMAT to SUBDOMAIN
Add the following array to your s3config.yml file
AWS_CALLING_FORMAT: SUBDOMAIN
The error is either because your bucket is in the EU or there is something else funky with its URL structure. Changing that value should allow the script to perform as intended.
120 people have left comments
Paul Stamatiou said:
S3 is great huh? That s3config.rb path thing must have been a change with the recent s3sync as I had to do the same thing when I just upgraded.. didn’t have to do that when I had published it. Anyways, thanks for bringing that to my attention, I’ve updated my article.
Christina said:
Thanks for your original tutorial and article Paul — it helped me out tremendously when I was setting the whole thing up. And yes, S3 is the bees knees as they say.
George Ornbo said:
Great write up. The Amazon S3 service is perfect for backing up a web server remotely, safely and cheaply. I’m also using it to do off site backups for machines inside the network. For a small business it is a great solution.
Mike Marley said:
Neat article Christina.
/me adds it to list of KB articles that need to be written.
Mike Marley Senior Technical Support (mt) Media Temple, Inc.
Michael said:
Excellent resource, thank you. One note on my experience when configuring on the gs:
I was receiving errors like “-o is not a valid variable” or something like this, when the script was trying to execute the mysql dump. I changed it to –opt (vs. –opt in your script).
Thanks again!
Christina said:
Thanks for the info Michael! The script actually DOES say –opt, but the way that “code” is displayed on this page didn’t show the dashes clearly (I’ll have to try to change that) — the downloadable script has the correct dashes too. I’m glad that it worked for you and I appreciate the feedback on the –opt thing. I’ll do my best to change the text display now.
duivesteyn said:
I’ve modified this to better suit CPanel based sites with sql support at http://duivesteyn.net/2008/amazon-s3-backup-for-webserver-public_html-sql-bash/
hope it helps someone
Christina said:
duivesteyn said: I’ve modified this to better suit CPanel based sites with sql support at http://duivesteyn.net/2008/amazon-s3-backup-for-webserver-public_html-sql-bash/ hope it helps someone
Oh that’s awesome! Thanks for posting your script!
Thejesh GN said:
s3 is amazing. I also use it deliver images and other media files to blog since its fast.
Karl Hardisty said:
Christina,
Thanks for putting in the time and effort to not only come up with the script, but to make it robust/structured/pretty enough for sharing. It’s good to know that someone has tested it and put it to public scrutiny, and that it’s worthwhile. You’ve saved me (and plenty others I’m sure) a lot of time.
Much appreciated.
Host Disciple » Blog Archive » Inside the hosting mind of a blogger said:
[…] hosted there (calm down fellas she is dating someone already). Christina wrote a very informative how-to on backing up your MediaTemple GS […]
Patrick Sikorski said:
Can I borrow your wisdom? I’m getting some weird errors:
warning.com@cl01:~/data$ ./backup_server.sh
tar: Removing leading /' from member names
tar: Removing leading/’ from member names
tar: Removing leading /' from member names
tar: Removing leading/’ from member names
tar: Removing leading /' from member names
tar: Removing leading/’ from member names
tar: Removing leading ‘/’ from member names
You didn’t set up your environment variables; see README.txt
s3sync.rb [options] version 1.2.6
–help –h –verbose –v –dryrun –n
–ssl –s –recursive –r –delete
–public-read –p –expires=”” –cache-control=”“
–exclude=”” –progress –debug –d
–make-dirs –no-md5
One of or must be of S3 format, the other a local path.
Reminders:
* An S3 formatted item with bucket ‘mybucket’ and prefix ‘mypre’ looks like:
mybucket:mypre/some/key/name
* Local paths should always use forward slashes ‘/’ even on Windows
* Whether you use a trailing slash on the source path makes a difference.
* For examples see README.
Not sure where my problem is, do you have any idea?
Awesome article by the way!
Christina said:
Patrick Sikorski said: Can I borrow your wisdom? I’m getting some weird errors: warning.com@cl01:~/data$ ./backup_server.sh tar: Removing leading ‘/’ from member names tar: Removing leading …
Patrick,
OK, this was a problem I had in the beginning, and I had to change the s3config.rb file so that confpath = ["./", "#{ENV['S3CONF']}", "#{ENV['HOME']}/.s3conf", "/etc/s3conf"] — make sure that has been changed and try again.
As for the tar: removing leading “/” from member names, that’s fine.
Hope this helps!
Patrick Sikorski said:
Did this go as smoothly for you as it did for me lol. Now for some reason I’m getting this.
./s3sync.rb:28:in `require': ./s3config.rb:19: syntax error, unexpected tIDENTIFIER, expecting ']' (SyntaxError)
config = YAML.load_file("#{path}/s3config.yml")
^
./s3config.rb:25: syntax error, unexpected kEND, expecting $end from ./s3sync.rb:28
After you told me about that code, I realized that I didn’t copy it right. This is probably something just as stupid.
Christina said:
Patrick, Did you rename the s3confi.yml.sample file to s3config.yml?
If you did, I’ll have to check the codebase (it is possible a new version of S3sync was released since I’ve written the article) and investigate.
We’ll get this working!
This might be the sort of thing I should do a screencast of, from start to finish, to supplement the written guide. Hmm…
Patrick Sikorski said:
Yes I renamed the file. I guess a new version could have been released… but you didn’t write the article that long ago. Update your version of it and see if it breaks (backup first lol). A screencast would be cool.…!
Christina said:
OK — a new version has NOT been released, so I’m thinking this is probably as simple as a mis-typed comma or period somewhere.
I’ll make a screencast today, going from start to finish.
Patrick Sikorski said:
Awesome, I’ll delete everything and start over when you make the screen cast. Thanks!
Video Tutorial: Automate Media Temple (gs) backups with Amazon S3 | www.ChristinaWarren.com said:
[…] This entry was posted on Sun, July 13th, 2008. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site. Previous Entry […]
Matt said:
The backups are going fine, but the s3sync portion keeps giving me:
Connection reset: Connection reset by peer 99 retries left, sleeping for 30 seconds Connection reset: Connection reset by peer 98 retries left, sleeping for 30 seconds Connection reset: Connection reset by peer 97 retries left, sleeping for 30 seconds Connection reset: Connection reset by peer … and so on
Any ideas?
Matt said:
Hmmm… I guess that’s normal? I checked my S3 bucket and it had all the files there and in the right size. So are those messages just there to say that it is still working?
Christina said:
Hmm, I don’t get any of those Matt — but if the copies are transferring over correctly, I guess its fine.
Cedric said:
I tried 2 times, but it doesn’t work at all for me :
tar: Removing leading /' from member names
tar: Removing leading/’ from member names
tar: Removing leading /' from member names
tar: Removing leading/’ from member names
tar: Removing leading /' from member names
tar: Removing leading/’ from member names
tar: Removing leading /' from member names
tar: Removing leading/’ from member names
Permanent redirect received. Try setting AWS_CALLING_FORMAT to SUBDOMAIN
S3 ERROR: #
./s3sync.rb:290:in +': can't convert nil into Array (TypeError)
from ./s3sync.rb:290:ins3TreeRecurse’
from ./s3sync.rb:346:in main'
from ./thread_generator.rb:79:incall’
from ./thread_generator.rb:79:in initialize'
from ./thread_generator.rb:76:innew’
from ./thread_generator.rb:76:in initialize'
from ./s3sync.rb:267:innew’
from ./s3sync.rb:267:in ‘main’
from ./s3sync.rb:735
Maxwell Scott-Slade said:
I have set it up exactly the same as your blog (btw, thanks for all this) but I also get this error:
tar: Removing leading /' from member names
tar: Removing leading/’ from member names
Permanent redirect received. Try setting AWS_CALLING_FORMAT to SUBDOMAIN
S3 ERROR: #
./s3sync.rb:290:in +': can't convert nil into Array (TypeError)
from ./s3sync.rb:290:ins3TreeRecurse’
from ./s3sync.rb:346:in main'
from ./thread_generator.rb:79:incall’
from ./thread_generator.rb:79:in initialize'
from ./thread_generator.rb:76:innew’
from ./thread_generator.rb:76:in initialize'
from ./s3sync.rb:267:innew’
from ./s3sync.rb:267:in ‘main’
from ./s3sync.rb:735
Christina said:
OK, so both Cedric and Maxwell are getting the same error. I looked up that error and it appears to be associated with EU buckets. Are either of you using buckets in the EU?
To change this, you need to add this line to your s3config.yml file:
AWS_CALLING_FORMAT: SUBDOMAIN
Christina said:
Ced — no, I just double-checked. I think the issue is either with using an EU bucket name or something else in the bucket-name not being correct. EU Bucket names cannot contain capital letters (so they are not case-sensitive), whereas US bucket names can.
Make sure your bucket name is correct in the script. I think adding the AWS_CALLING_FORMAT parameter to the yml file will solve the problem.
Christina said:
Ced, Glad to hear it! I’ve updated the post with that information in case anyone else runs into the same issue.
Maxwell Scott-Slade said:
Thanks Christina, that’s all working fine now. It’s so awesome to know that the site is getting backed up everyday to a safe place 100%. It’s nice to turn on the email feature in the Cron job section so you know it’s all done.
A guide to remember. I never used SSH before, now that I have I feel pretty happy it all works!
Faire un backup de son blog sur Amazon S3 | 64k said:
[…] avec ce service, mais je n’avais pas vraiment pris le temps de tester. Je suis tombé sur un billet de Christina Warren qui m’a décidé, puisqu’il décrit toute la procédure pour faire un backup d’un […]
Easily Backup Your Entire Website to S3 | HighEdWebTech said:
[…] sent me a great link to a Ruby script that will backup your website and push that backup file to Amazon S3 for safe, […]
Philip said:
So does this backup everything or just the content that’s changed since the last backup?
Links of Interest — CSS-Tricks said:
[…] Warren has a comprehensive and excellent tutorial on creating a Ruby script to back up your entire web server, including databases, and upload them […]
Christina said:
Philip, I was having some problems having effective recursive backups, so it’s just doing everything. Your comment reminds me to re-investigate the best/most effective way to do it recursively though (it would be like a few character changes to the script), so I’ll do that later this week and post an update with my findings. Realistically, your databases are going to be changing more frequently than your actual directories, so you can always set a separate CRON job to run the databases and certain folders every day, and other folders less frequently. That’s what I do anyway — my blogs and databases are backed up daily and a few domains that are just basically image storing for right now get updated once a week or once a month.
Matt said:
The backup part works great for me, but not the s3sync. Cron job doesn’t even bother with copying anything over. When I do the site copy to S3 manually, it usually dies after copying just a few sites. Wish I could get that part working as that is the important part!
Christina said:
Matt, Are you getting an error of any kind? About how much data is being copied over before it dies? I’ve successfully copied over more than 500 megabytes before using the script (a test case and also a backup of some photographs I uploaded to my gs temporarily when at my parent’s house). Let’s see if we can figure out why it isn’t working.
Matthew Barker said:
Nope, not getting any errors that matter it seems. Earlier I reported this error:
Connection reset: Connection reset by peer 99 retries left, sleeping for 30 seconds 98 retries left, sleeping for 30 seconds …
But that doesn’t seem to really matter. I am backing up 10 sites, with only 1 being larger than 500 MB; the gzipped/tarred file is currently 1.3 GB in size. The odd thing about all of this is that sometimes everything works when I do it manually, but that is only sometimes. It generally quits when transferring the 1.3 GB file to Amazon, with no error messages encountered. But with the cron job running, it sometimes quits when tarring the 1.3 GB site, but generally tars everything just fine, but doesn’t transfer a thing. That’s the hard part about trying to troubleshoot this problem; sometimes it works, sometimes it doesn’t; and when it doesn’t work, it doesn’t die at the same place every time.
Peter said:
I was hoping I could download your full backup script and customize it to my needs, but it looks like access it denied on the file from S3. Is there any chance you could make it public?
Marcus McCurdy said:
Thanks for this great write up. I went through it last night and it worked like a champ and I learned a thing or two in the process. This really makes backing up a media temple site a breeze.
Christina said:
Matt, I remember you had that error. I’ll do what I can to investigate why this seems to not be working. It might be necessary to create two separate Cron jobs — one for the biggest site, one of the others — to see if that is an acceptable workaround.
Peter — OK, try it now — I changed the URL structure. It was working fine, I’m not sure what could have changed. If you still have issues, let me know.
Marcus — yay! I’m so happy this worked for you!
Automatically back up your entire web server files and databases to Amazon S3 | QuickPipe said:
[…] Warren has a comprehensive and excellent tutorial on creating a Ruby script to back up your entire web server, including databases, and upload them […]
Links of Interest | Proba said:
[…] Warren has a comprehensive and excellent tutorial on creating a Ruby script to back up your entire web server, including databases, and upload them […]
Automatically back up MetiaTemple Grid (gs) via Amazon S3 | Randomess of Josh Price said:
[…] months now, and thought I’d share it with you guys. Christina Warren has written up some excellent instructions on how to back up MediaTemple’s Grid (gs) to your Amazon S3 account. There is also a video. […]
Michael York said:
Hey Christina,
Not sure if you got my e-mail or not…
Anyways, I wanted to know why I keep getting “Connection Reset: connection reset by peer” error messages. When looking at the S3 bucket, not all of the files have transferred over…
Thanks! Michael
Petter said:
Matthew Barker said: Nope, not getting any errors that matter it seems. Earlier I reported this error: Connection reset: Connection reset by peer 99 retries …
I am experiencing the same problem. It is a fairly large site. About 2.5GB worth of photos. I have split the backup script up in two parts, the DB and the Site. The DB works fine and goes up to S3 easily. Leads me to believe it is related to the size
. Have to divide it up in smaller chunks or similar.
Mat, Christina, how did/would you approach it? any suggestions.
Christina said:
Peter, Mat, and anyone else receiving the connection reset message: It IS size related. I’m working on a new post that details changing the number of resets and does recursive backups for large files — so that you don’t transfer everything over every single time. I need to test it out and make sure it is solid before posting, but it should be up sometime this week!
Jordan said:
Christina,
Thanks for the well written guide. I was able to get my backups running perfectly but did have one question.
I am using a slightly modified version of your backup script, and while it works well as far as creating the backup files, I don’t see any of the echo messages in either the shell or in the cron emails. I only see the following:
tar: Removing leading /' from member names
tar: Removing leading/’ from member names
Otherwise, this seems to be the perfect backup system for Media Temple gs users.
William B. said:
Hey Christina,
This has really helped my mission, thanks for the guide. Works flawlessly for me.
Poll Results: How do you back up your websites? — CSS-Tricks said:
[…] this poll was to tap into your collective knowledge and find some sweet automated backup solutions. Christina’s solution is absolutely awesome and fits into my situation perfectly (being on Media Temple, and having an S3 […]
Tim Peacock said:
Christina, really appreciate the help with this. A couple of errors, but got these ironed out, and now working perfectly. Saved me so much time !!
Ced said:
How to choose the database to save ? (and not all the databases) Because with more than 5–6 db, it uses too much ressources : “(mt) Media Temple’s automated MySQL monitoring systems have detected an increase in database activity for your Grid-Service”
Matt said:
Any word on when this will be ready? I could definitely use it; my backups fail consistently because of one site that is around 2GB in size.
Christina said: Peter, Mat, and anyone else receiving the connection reset message: It IS size related. I’m working on a new post that …
Christina said:
Matt, It will be up by the end of the week. I had work commitments and then went on vacation and this week has been crazy busy!
Week in Review (October 20 through October 26) | GrandmasterB dot com said:
[…] I also setup an account on the Amazon AWS to remotely backup my sites. After reading a tutorial by Christina Warren, I setup the necessary software and a shell script to do automatic backups of my site daily. The […]
creede said:
I get a connection reset too, but it seems to go through eventually. Let me know if you get rolling backups going. Thanks again for the great tool!
Mikkel said:
I get the same error as Matt when I test the script:
Connection reset: Connection reset by peer
99 retries left, sleeping for 30 seconds
However when I look in my bucket (using transmit), I see the files are turning up just fine, so I guess I should just ignore the error. But it would be nice to have it running smoothly.
An yes, I’m using a EU bucket (sitting in Denmark).
Another thing I’ve noticed; It backs up all of my databses, but only the domain directories I choose in the “backup_server.sh” file. Is there a way to exlude databases? I have a lot of test sites (with db’s), that arent realy that important to backup.
Samm said:
First, Christina, thank you for this article — I am using mt (gs) and S3 and am having problem. Probably a mistake on my part, but looking for some help. I have completed the setup, and when I run the command ./backup_server.sh, I get the message: “bad interpreter: No such file or directory”. The file is clearly there, I can see it via FTP and it shows with the dir command in Putty. Any ideas?
trs21219 said:
i got this running fine but i want the backups to go into subdirectories in my s3 bucket for each day that it backs up. i got it doing it for my server but how do i make it make the folders on S3?
im adding this to the end of the directory path at the top and bottom of the backup.sh
directorypath........./date +%m-%d-%y/
trs21219 said:
trs21219 said: i got this running fine but i want the backups to go into subdirectories in my s3 bucket for each …
nevermind i got it ! here is my backup_server.sh file
!/bin/sh
A list of website directories to back up
websites=“domains.com domain2.com”
The destination directory to backup the files to
destdir=/home/xxxxx/users/.home/s3sync/s3backup/date +%m-%d-%y
The directory where all website domain directories reside
domaindir=/home/xxxx/users/.home/domains
The MySQL database hostname
dbhost=internal-db.sxxxxx.gridserver.com
The MySQL database username — requires read access to databases
dbuser=xxxxxx
The MySQL database password
dbpassword=xxxxxxx
mkdir $destdir rm $destdir/*.tar.gz
echo date “: Beginning backup process…” > $destdir/backup.log
backup databases
for dbname in echo 'show databases;' | /usr/bin/mysql -h $dbhost -u$dbuser -p$dbpassword
do
if [ $dbname != “Database” ];
then
echo date “: Backing up database $dbname…” » $destdir/backup.log
/usr/bin/mysqldump –opt –h $dbhost –u$dbuser –p$dbpassword $dbname > $destdir/$dbname.sql
tar –czf $destdir/$dbname.sql.tar.gz $destdir/$dbname.sql
rm $destdir/$dbname.sql
fi done
backup web content
echo date “: Backing up web content…” » $destdir/backup.log
for website in $websites
do
echo date “: Backing up website $website…” » $destdir/backup.log
tar –czf $destdir/$website.tar.gz $domaindir/$website
done
echo date “: Backup process complete.” » $destdir/backup.log
echo date “: Compacting Package Total…” » $destdir/backup.log
tar –czf $destdir.tar.gz $destdir
rm –r –f $destdir
The directory where s3sync is installed
s3syncdir=/home/xxxxx/users/.home/s3sync
The directory where the backup archives are stored
backupdir=/home/xxxxxx/users/.home/s3sync/s3backup/
The S3 bucket a.k.a. directory to upload the backups into
s3bucket=BUCKET NAME HERE
cd $s3syncdir ./s3sync.rb $backupdir/ $s3bucket:
hope this helps some people… i got it from trail and error… thanks again christina for the awesome script!
Adam said:
- I thought I did everything right, but got this after running the script manually:
-
command not found line 4:
- command not found line 8:
- command not found line 10:
- command not found line 14:
- command not found line 16:
- command not found line 20:
- command not found line 22:
- command not found line 26:
- command not found line 28:
- command not found line 32:
- command not found line 34:
- command not found line 40: ./backup_server.sh: line 42: /backup.log: Read-only file system
- command not found line 44:
rm: cannot remove
/*.tar.gz': No such file or directory rm: cannot remove\r’: No such file or directory - command not found line 50:
’/backup_server.sh: line 70: syntax error near unexpected token
'/backup_server.sh: line 70:fi
What did I do wrong?
Adam said:
Adam said: I thought I did everything right, but got this after running the script manually: : command not found line 4: : command …
Nevermind. My bucket name had a typo. Sorry.
Does anyone know of a way to filter out certain directories (for example: “cache” folders)? I also have dropbox folders that I don’t need to backup, etc. I’d love to exclude them.
A said:
“Proper backups are like eating your vegetables — we all say we’ll do it and that it is a good idea, but it is so much easier NOT to do it and eat Oreo cookies instead”
Its refreshing to see analogies like these..once in a while atleast..web would be so much greener, warmer & healthier if even guy geeks start giving such analogies..i wish..
Adam said:
Adam said: Does anyone know of a way to filter out certain directories (for example: “cache” folders)? I also have dropbox folders that I don’t need to backup, etc. I’d love to exclude them.
In case anyone else is interested, I made two changes to the script that I’m really happy with. I changed the compression type to bzip2 (bz2) instead of gzip (gz), and my file sizes shrunk dramatically! Additionally, I excluded some files and directories that I didn’t need backed up and knew were full of tons on files. This saves a lot of time and end file size. Here’s the main change, but a couple others need to be made for this to fully work:
tar –jcf $destdir/$website.tar.bz2 –exclude ‘/cache’ –exclude ‘/dropbox’ –exclude ‘*.zip’ $domaindir/$website
Johnny said:
hi!
Is there any way to backup the e-mails as well from the grid-server?
(Thanks for the tutorial, it’s working fine on my side.)
jota said:
Hello,
It’s been a few weeks since the script stopped working for me.
Now I’m getting this error
Read from remote host domain.com: Connection reset by peer Connection to domain.com closed.
Any clue what might be happening?
Matt said:
Hello Christina,
Excellent script! It seems to work fine for me all the files and dbs get backed up but I get this error for some reason:
/usr/bin/mysqldump: Got error: 1044: Access denied for user ‘db62917’@’%’ to database ‘information_schema’ when using LOCK TABLES
Not quite sure why this is, any ideas?
Matt
Pietro said:
Hi Christina, thanks a lot! Your tutorial is fantastic!
I’m getting the same error as Matt, though: /usr/bin/mysqldump: Got error: 1044: Access denied for user ‘dbxxxxx’@’%’ to database ‘information_schema’ when using LOCK TABLES
Anyway, the script is working…
Pietro
Karl Gechlik said:
I am getting errors, can you help me out? Any help would be greatly appreciated.
tar: Removing leading /' from member names
S3 command failed:
list_bucket prefix max-keys 200 delimiter /
With result 404 Not Found
S3 ERROR: #
./s3sync.rb:290:in+’: can’t convert nil into Array (TypeError)
from ./s3sync.rb:290:in s3TreeRecurse'
from ./s3sync.rb:346:inmain’
from ./thread_generator.rb:79:in call'
from ./thread_generator.rb:79:ininitialize’
from ./thread_generator.rb:76:in new'
from ./thread_generator.rb:76:ininitialize’
from ./s3sync.rb:267:in new'
from ./s3sync.rb:267:inmain’
from ./s3sync.rb:735
Christina said:
Hey guys, OK — I’m uploading new copies of the screencast now and will have those links switched in about 15 minutes. Karl, give me a little bit to look over the code, I need to do a follow-up post (13 months later, wow!) anyway
Karl Gechlik said:
Thank you so much Christina I am sitting on the edge of my seat pulling my hair out for a few days now (more like a week!) I can generate the backup file but I have to manually xfer it to s3. I am wondering if it is my bucket name it has a — in it. Any assistance is REALLY REALLY appreciated! You rock.
MattO said:
SOME HELP FOR NEWBIES ON HOW TO DO THIS AND SOME PROBLEMS I RAN INTO:
Hi Christina,
You Rock! This is a huge help — you have no idea how hard this stuff can be to get done when your not a pro.
I just want to document a few problems that I encountered when trying this so others can hopefully skip my frustrations on Saturday Morning : )
1) If you run into the problem of not being able to see the s3sync directory that you create.
In Christina’s video it shows up as a directory next to your domain folder, however, in my experience it wasn’t anywhere to be found. I knew it existed because I could see it in SSH, but in FTP and my Account Center it was invisible.
To rectify this you can go into your FTP setting and show hidden files. In filezilla this is under the Server Menu and is called “Force showing hidden files”
–Then, your not done yet — to actually see the s3sync directory — go into your users directory and you should now see a directory called “.home” — you’ll find it in there.
2) Put your server_backup.sh script in the data directory — this is the main data directory in the same hierarchical level as your domains folder and etc folder
3) When you figure all this out and you actually run the script you’ll get some errors — the first ones I hit were related to buckets in AWS.
–If your new at all this you need to create a bucket, but this can be kinda confusing.
–I finally found this simple way to do it: http://it.toolbox.com/blogs/oracle-guide/cloud-studio-for-aws-ec2-and-s3-28117
–Essentially you download the cloud studio freeware (FYI — I’m on MAC), open it, go into the settings and enter your account info, don’t worry about all the RED text (that has to do with another amazaon image tool), go down toward the bottom of the screen and add a new bucket. That should do the trick — now go to the server_backup.sh script and put the name of your bucket there like she tells you to do.
4) You might still be getting an error that has this in it: “s3sync/s3backup/*.tar.gz’: No such file or directory”
–This is because the way that the amazon directories are downloaded is a bit different than the script is written (I think).
–To solve this simply go into your FTP and simply move the S3backup directory inside of the s3sync directory where it is looking for it.
OK! I know it’s the clearest explaination, but I hope it saves someone a few hours!
Thanks again for the detailed tutorial!
–MattO
MattO said:
Hi Christina,
Quick Question:
Is there a way to modify the script so that you don’t overwrite the backups on S3?
For Example — I would like to run a daily backup and on S3 I would like the html directories and the sql databases to append the date to each version. Day one: Example.com_8_25_09.tar.gz, Example.com_8_26_09.tar.gz, etc.
That way, if there is a problem, I can roll back to the last fully functioning date.
Thanks,
MattO
Christina said:
Matt, Amazing, amazing — I’ll be updating the post this week (I’ve been saying that for a year but I actually mean it this time) and will be using your corrections — the formatting has changed a bit in the last year and I need to update the script.
I’ll also include a way for you to write a new file each time (with a date appended). I’m sure we can figure out a way to have a rule to only keep the last X or whatever too.
Coalesce said:
Thanks for the helpful tutorial. We’re going to be awaiting your revised script!
Andrew said:
Just implemented this on my gs server, thanks for the great script. Eargly anticipating the revised script with the dated backups.
zxr said:
Hi guys!
I still have a problem when working with a big backup file. One of my sites is around 1gb of data and this method does not work for It. I run the script but It says comthing like the time has expired…
Any solutiono for this?
Thanks!
Mikkel Hansen said:
Any news on the update? Would realy love to be able to keep the last x days of backups on the server!
Andrew said:
I was wondering if you had an ETA for a way to keep multiple dated backups, I needed that today. Thanks for the script though, it was a lifesaver.
Brett Wilcox said:
Hello Christina!
I just wanted to share with you and everyone here that I have created a VERY robust backup script that keeps multiple rotating backups and such.
I will be releasing more information soon but I have posted the code at http://www.brettwilcox.com/2009/09/20/amazon-s3-backup-script/ for anyone interested.
Shoot me an email if anyone has any questions!
Anthony Abraira said:
This is probably a stupid question, but is there a means of doing something where this can instead zip up to one file that goes to a designated folder on the site. That way one can just go in and download the zip file and have their back up without needing an additional server storage space.
If this has been answered I am sorry, can somebody point me in the right direction?
Brett Wilcox said:
Hello Anthony,
I have created that very script that you are talking about.
http://www.brettwilcox.com/2009/09/20/amazon-s3-backup-script/
Just disable the amazon S3 Sync option and it will create multiple rotating dated backups without the need for amazon S3.
Brett Wilcox said:
I have released a newer version of the script and published it to google code — http://code.google.com/p/ziplinebackup/
Hugh Esco said:
A couple of thoughts I have not seen addressed above:
I would be careful about deleting the previous backup prior to creating the new one.
If memory serves, an S3 bucket is limited to a gigabyte or so. This may be the issue folks are encountering backing up larger sites.
Essential touch to time stamp backups and keep the last several around. I once had to roll back several days to find an uncorrupted database backup. That was when I gave up email (for scp and rsync) as a transport for files which mattered.
if you can add some sort of log rotate function to this script you’ll have a full featured backup system in place.
Backing up to S3 is a fine way to store public data accessible on the web anyway, but for folks dealing with proprietary data, inhouse file stores, or at least encrypted S3 buckets are probably a more appropriate way to go.
And one last important step, as you add new sites and new resources which ought to be backed up, it important to update your backup script to account for those.
Thanks for the article. Was unaware of this ruby tool.
– Hugh
Clayton said:
Thanks for the tutorial, Christina. This post, along with your video, were a huge help for me.
Clayton said:
This appears to be working, but I am getting an error message at the top of my Cron job notification email: “Got error: 1044: Access denied for user ‘dbXXXXX’@’%’ to database ‘information_schema’ when using LOCK TABLES”
Anyone else get this?
Christina Warren said:
Clayton, Yes — a user was nice enough to put up a new script on github — the link is in the comments (a few posts before yours) — I desperately need to update this blog post with that info — thanks for the reminder!
Karl L. Gechlik | AskTheAdmin.com said:
Thanks for your help. I rewrote the script to create custom filenames with the date in them. I then croned another script to remove files after 7 days keeping 7 backups. I could not get your MySql part to work so I cronned out MySql dumps and put them in the tar. Finally I reduced the file size with compression and filtering out specific file types I didnt need backed up. I will get it documented and up on http://www.askTheAdmin.com as soon as I can.
Jesse said:
Thank you so much for spelling all this out for us! This was extremely helpful! I am using Amazon S3 now, it’s kind of tricky to use but this helped me save much time
Media Temple backups naar Amazon S3 met S3Sync said:
[…] GB per maand + upload en download fees. Er is geen verplichte afname van het aantal GBs. Kudos voor Christina Warren en haar blogpost die de basis vormt voor deze Nederlandse vertaling en kudos voor Brett Wilcox, […]
Andre Kreft said:
Hi Christina, love the script and has been working for a while now. Lately I got some strange error’s I cant seem to fix.
Like: No such file or directory in my Cron Deamon emails and when I try to kick off my cron job through SSH I can’t kick off ./server_backup.sh in my data folder. It keep saying: –bash: /backup_server.sh: No such file or directory
Anything changed on MT side? or am I missing something. Hope you can help.
the Blog Butler said:
Thanks for writing this up Cristina, was a great help and got me off to a good start. I have everything working fine when I run it from an SSH session but when the cron kicks the job off it will back up the site but will NOT transfer it to my S3 bucket. It does it just fine when I run it manually but not from cron.
Anyone have any clue on this?
Tanner Hobin said:
Thank you, thank you, thank you!
So I tried to make things a little easier on myself by making the “list of website directories to backup” /domains and “the directory where all website domain directories reside” /home/XXXXX/users/.home and the resulting .tar.gz file only had folders in it for home>XXXXX>users. No domains backed-up.
Simply put, I was hoping to skip having to list all domains and the need to update the script every time I add/remove a domain. Any idea how I might be able to do that?
Again, thank you.
Brett said:
Any idea on how to correct these errors in the zipline scripte?
======================================================================
Database Backup Start Time Fri Oct 8 01:33:30 PDT 2010
Backing up databases from /home/86415/data/database_backups tar: Removing leading ‘/’ from member names tar: /home/86415/data/database_backups: Cannot stat: No such file or directory tar: Error exit delayed from previous errors Complete
======================================================================
Database Backup End Time Fri Oct 8 01:33:30 PDT 2010
======================================================================
Starting Transfer to Online Storage Backup Fri Oct 8 01:33:30 PDT 2010
Now transfering Backups to Amazon S3
S3 command failed:
list_bucket max-keys 200 prefix delimiter /
With result 404 Not Found
S3 ERROR: #
./s3sync.rb:290:in +': can't convert nil into Array (TypeError)
from ./s3sync.rb:290:ins3TreeRecurse’
from ./s3sync.rb:346:in main'
from ./thread_generator.rb:79:incall’
from ./thread_generator.rb:79:in initialize'
from ./thread_generator.rb:76:innew’
from ./thread_generator.rb:76:in initialize'
from ./s3sync.rb:267:innew’
from ./s3sync.rb:267:in ‘main’
from ./s3sync.rb:735
Complete
Brett said:
Oh crap this is the wrong blog to ask that question, I should really not mess with this sort of thing this late at night. ><
Barton said:
I also get the error:
Access denied for user ‘dbxxxxx_s3sync’@’%’ to database ‘yyyyy’ when using LOCK TABLES
Barton said:
Okay, to all people with the “Access denied” … “using LOCK TABLES” error:
The backup is working, its just failing when it tries to backup the information_schema, which isn’t required.
nosaukums said:
Some ideas,
I defined in the beginning of backup script:
DATESTAMP=date +%Y-%m-%d
and modified to include it in all filenames i.e.:
backup databases
for dbname in echo 'show databases;' | /usr/bin/mysql -h $dbhost -u$dbuser -p$dbpassword
do
if [ $dbname != “Database” ];
then
echo date “: Backing up database $dbname…” » $destdir/backup.log
/usr/bin/mysqldump –h $dbhost –opt –skip-lock-tables –u$dbuser –p$dbpassword $dbname > $destdir/$DATESTAMP.$dbname.sql
tar –czf $destdir/$DATESTAMP.$dbname.sql.tar.gz $destdir/$DATESTAMP.$dbname.sql
rm $destdir/$DATESTAMP.$dbname.sql
fi done
backup web content
echo date “: Backing up web content…” » $destdir/$DATESTAMP.backup.log
for website in $websites
do
echo date “: Backing up website $website…” » $destdir/backup.log
tar –czf $destdir/$DATESTAMP.$website.tar.gz $domaindir/$website
done
also useful thing — exclude a specific directory (in my case cash, save some precious bandwidth
)
tar -czf $destdir/$DATESTAMP.$website.tar.gz $domaindir/$website --exclude 'notthis/cache/*'
also couldnt figure out database locking issue so i added “–skip-lock-tables” to command. so far so good.
thanks so much fur such a great tutorial.
nosaukums said:
ouch, formatting screwed up.
anyway.. just add “$DATESTAMP.” to all “$dbname.sql.tar.gz” and to first “$website.tar.gz”
tadaa..
and not tested yet, but I replaced the original “rm $destdir/*.tar.gz” (remove all tar.gz files) with “find /$destdir –type f –mtime +10 –exec rm {} \;” (delete all files older then 10 days.)
Rosamunda said:
Thanks Christina! I was so helpless about what to do to backup remotely my sites in my brand new MT account!! THANK YOU VERY MUCH!!! Gracias! Rosamunda from Buenos Aires, Argentina
금주의 연예가 소식 — [3월 2일 NZtimes] 이효리 채식 효과로 “주량이 줄었다” said:
금주의 연예가 소식 — [3월 2일 NZtimes] 이효리 채식 효과로 “주량이 줄었다”…
Using Amazon S3 to backup Media Temple’s Grid (gs)…
Seveners Free Board — Scientists prove Jabulani ball is ‘too perfect’ said:
Seveners Free Board — Scientists prove Jabulani ball is ‘too perfect’…
Using Amazon S3 to backup Media Temple’s Grid (gs)…
her comment is here said:
Excellent items from you, man. I’ve be aware your stuff previous to and you are just too wonderful. I really like what you have obtained here, certainly like what you’re stating and the best way through which you assert it. You are making it entertaining and you continue to take care of to keep it sensible. I can not wait to read far more from you. That is really a tremendous web site.
http://fog5rain.livejournal.com said:
I just like the valuable info you supply on your articles. I’ll bookmark your weblog and take a look at again here regularly. I am reasonably sure I’ll be told plenty of new stuff right here! Best of luck for the next!
www.elagat.com said:
I am actually grateful to the holder of this website who has shared this fantastic paragraph at at this time.
Dave F said:
Thanks so much for posting this. It was EXACTLY what I was looking for. Perfectly written and commented. THANK YOU!. I did run into one snag. I keep getting this error when trying to backup my domain archive.
Broken pipe: Broken pipe
99 retries left, sleeping for 30 seconds
Broken pipe: Broken pipe
98 retries left, sleeping for 30 seconds
The sql archive uploaded to s3 perfectly but it fails with this file for some reason. Any idea why? My site is VERY image dependant (for a modeling agency). The site archive is about 10GB. It created the archive but its failing to upload it from my MT Grid Server.
Any help is greatly appreciated.
Thanks,
Dave
Dave F said:
Just a follow up. I split the very large tar file into 950MB parts and it seems to solve the Broken Pipe problem. Hope this helps someone.
cheap christian louboutin shoes said:
I am actually happy to glance at this website posts which includes plenty of valuable data, thanks for providing such information.
hunter wellington boots said:
I have been browsing online more than 4 hours today, yet I never found any interesting article like yours. It is pretty worth enough for me. Personally, if all webmasters and bloggers made good content as you did, the web will be much more useful than ever before.| I could not refrain from commenting. Perfectly written! | I’ll right away grab your rss feed as I can not to find your email subscription hyperlink or newsletter service. Do you’ve any?
Kindly permit me realize in order that I may subscribe. Thanks.| It’s appropriate time to make some plans for the future and it is time to be happy. I’ve read this post and if I could I desire to suggest you few interesting things or advice. Perhaps you could write next articles referring to this article.
I want to read more things about it!| It’s perfect time to make a few plans for the longer term and it’s time to be happy.
I’ve read this publish and if I may just I desire to suggest you some fascinating things or tips. Perhaps you could write subsequent articles relating to this article. I desire to read more issues about it!|
I have been browsing online more than 3 hours lately, but I never discovered any fascinating article like yours. It is lovely value enough for me. In my view, if all webmasters and bloggers made just right content as you probably did, the net will probably be a lot more useful than ever before.|
Ahaa, its pleasant discussion concerning this piece of writing at this place at this weblog, I have read all that, so at this time me also commenting at this place.|
I am sure this piece of writing has touched all the internet visitors, its really really good piece of writing on building up new webpage.|
Wow, this paragraph is good, my younger sister is analyzing these things, so I am going to convey her.|
Saved as a favorite, I like your website!|
Way cool! Some extremely valid points! I appreciate you writing this write-up and the rest of the site is very good.|
Hi, I do think this is an excellent web site. I stumbledupon it
I’m going to come
back once again since I book marked it. Money and freedom is the best way to change, may you be rich and
continue to guide others.|
Woah! I’m really digging the template/theme of this site. It’s simple, yet effective.
A lot of times it’s very difficult to get that “perfect balance” between superb usability and visual appeal. I must say that you’ve done a excellent job with this.
Additionally, the blog loads extremely quick for me on Firefox.
Exceptional Blog!|
These are genuinely fantastic ideas in regarding
blogging. You have touched some fastidious things here. Any way keep up wrinting.
|
I love what you guys are usually up too. Such clever
work and reporting! Keep up the very good works guys I’ve included you guys to my personal blogroll.|
Howdy! Someone in my Facebook group shared this site with us so I came to look it over. I’m definitely loving the information.
I’m bookmarking and will be tweeting this to my followers! Terrific blog and brilliant style and design.|
I really like what you guys tend to be up too. Such clever work and coverage! Keep up the very good works guys I’ve added you guys to our blogroll.
|
Hi would you mind sharing which blog platform you’re working with? I’m going to start my own blog soon but I’m having a tough time deciding between BlogEngine/Wordpress/B2evolution and Drupal. The reason I ask is because your design and style seems different then most blogs and I’m looking for something
unique. P.S Apologies for being off-topic but
I had to ask!|
Hey there would you mind letting me know which webhost you’re utilizing? I’ve loaded your
blog in 3 completely different web browsers and I must say this blog loads a lot quicker then most.
Can you recommend a good internet hosting provider at a honest price?
Thanks a lot, I appreciate it!|
Everyone loves it whenever people come together and share thoughts.
Great blog, stick with it!|
Thank you for the auspicious writeup. It in fact was
a amusement account it. Look advanced to far added agreeable from you!
However, how can we communicate?| Hey just wanted to give you a quick heads up.
The words in your post seem to be running off the screen in Safari. I’m not sure if this is a formatting issue or something to do with browser compatibility but I thought I’d post to let you know. The style and design look great though! Hope you get the problem solved soon. Thanks| This is a topic which is near to my heart… Thank you!
Where are your contact details though?| It’s very easy to find out any matter on web as compared to books, as I found this post at this website.| Does your website have a contact page? I’m having trouble locating it but, I’d like to shoot you an email. I’ve got some suggestions for your blog you might be interested in hearing. Either way, great website and I look forward to seeing it improve over time. | Hey there! I’ve been following your site for a long time now and finally got the bravery to go ahead and give you a shout out from Lubbock Tx! Just wanted to mention keep up the excellent job!| Greetings from Carolina! I’m bored to death at work so I decided to browse your blog on my iphone during lunch break. I love the information you present here and can’t wait to take a look when I get home. I’m amazed at how fast your blog loaded on my phone . . I’m not even using WIFI, just 3G .. Anyways, fantastic site!| Its such as you learn my thoughts! You appear to grasp a lot about this, like you wrote the guide in it or something. I feel that you just can do with a few p.c. to pressure the message house a bit, however instead of that, that is wonderful blog. An excellent read. I will certainly be back.| I visited various websites except the audio feature for audio songs present at this web page is actually superb.| Hello, i read your blog occasionally and i own a similar one and i was just curious if you get a lot of spam comments? If so how do you reduce it, any plugin or anything you can advise? I get so much lately it’s driving me crazy so any assistance is very much appreciated.| Greetings! Very useful advice in this particular post! It’s the little changes that produce the biggest changes. Thanks for sharing!| I absolutely love your website.. Excellent colors & theme. Did you build this website yourself? Please reply back as I’m wanting to create my very own blog and want to find out where you got this from or exactly what the theme is called.
Thank you!| Howdy! This blog post could not be written much better! Going through this post reminds me of my previous roommate!
He always kept talking about this. I most certainly will forward this post to him. Fairly certain he will have a very good read.
Thanks for sharing!|
Whoa! This blog looks just like my old one! It’s on a completely different topic but it has pretty much the same layout and design. Wonderful choice of colors!|
There is certainly a great deal to know about this subject. I like all the points you’ve made.
|
You’ve made some really good points there. I looked on the web for additional information about the issue and found most individuals will go along with your views on this site.|
Hi there, I read your blog on a regular basis. Your story-telling style is awesome, keep it up!|
I just could not depart your site before suggesting that I extremely loved the standard information an individual supply for your guests? Is gonna be again continuously in order to investigate cross-check new posts|
I want to to thank you for this wonderful read!! I absolutely loved every little bit of it. I have got you saved as a favorite to check out new things you post…|
Hello, just wanted to tell you, I liked this post. It was funny. Keep on posting!|
I create a leave a response when I appreciate a post on a site or I have something to valuable to contribute to the discussion. It’s a result of the passion communicated in the article I browsed.
And on this post Using Amazon S3 to backup Media Temple’s Grid (gs). I was actually moved enough to drop a comment
I actually do have a couple of questions for you if it’s allright.
Is it just me or does it look like a few of the comments appear like left
by brain dead people?
And, if you are writing on additional social sites, I’d like to keep up with you. Could you make a list the complete urls of your community pages like your twitter feed, Facebook page or linkedin profile?|
Hi there, I enjoy reading all of your article post. I wanted to write a little comment to support you.|
I constantly spent my half an hour to read this webpage’s posts all the
time along with a mug of coffee.|
I constantly emailed this weblog post page to all my associates,
for the reason that if like to read it next my contacts will too.
|
My programmer is trying to convince me to move to
.net from PHP. I have always disliked the idea because of
the costs. But he’s tryiong none the less. I’ve been using WordPress on various websites for about a year and am
anxious about switching to another platform. I have heard very good things about blogengine.
net. Is there a way I can transfer all my wordpress posts into it?
Any help would be really appreciated!|
Hello there! I could have sworn I’ve been to this blog before but after going through many of the posts I realized it’s new to me.
Regardless, I’m definitely pleased I came across it and I’ll be bookmarking it and checking back often!
|
Wonderful article! That is the kind of information that are
supposed to be shared around the net. Disgrace on the seek engines
for not positioning this put up higher! Come
on over and seek advice from my website .
Thank you =)| Heya i am for the first time here. I found this board and I find It really useful & it helped me out a lot. I hope to give something back and aid others like you helped me. | Howdy, I think your web site may be having internet browser compatibility issues. When I take a look at your website in Safari, it looks fine however, when opening in I. E., it has some overlapping issues. I just wanted to give you a quick heads up! Apart from that, great blog!| A person essentially assist to make severely articles I would state. This is the very first time I frequented your web page and up to now? I amazed with the research you made to make this particular submit extraordinary. Wonderful process! | Heya i’m for the primary time here. I found this board and I find It really helpful & it helped me out a lot. I hope to provide one thing back and aid others such as you aided me.| Hello! I simply want to offer you a big thumbs up for your excellent information you have right here on this post. I am coming back to your web site for more soon.| I all the time used to read article in news papers but now as I am a user of internet therefore from now I am using net for posts, thanks to web.| Your means of telling the whole thing in this piece of writing is genuinely good, every one can without difficulty know it, Thanks a lot.| Hello there, I found your site by way of Google whilst looking for a similar subject, your website got here up, it seems to be great. I have bookmarked it in my google bookmarks. Hello there, simply became aware of your weblog through Google, and located that it’s really informative.
I’m gonna watch out for brussels. I’ll appreciate when you proceed this in future. Numerous other people can be benefited from your writing. Cheers!| I am curious to find out what blog system you happen to be utilizing? I’m experiencing some minor security problems with my latest blog and I would like to find something more secure. Do you have any solutions?| I’m extremely impressed with your writing skills and also with the layout on your blog. Is this a paid theme or did you customize it yourself? Anyway keep up the excellent quality writing, it’s rare to see a nice blog like this one today.| I am extremely inspired together with your writing skills as smartly as with the layout for your blog. Is that this a paid subject or did you modify it yourself? Anyway stay up the excellent quality writing, it’s rare to look a nice weblog like this one these days. .| Hello, Neat post. There is a problem with your web site in internet explorer, would check this? IE nonetheless is the market leader and a good component to other people will leave out your wonderful writing due to this problem.| I’m not sure where you are getting your info, but good topic. I needs to spend some time learning more or understanding more. Thanks for excellent information I was looking for this info for my mission.| Hello, i think that i saw you visited my weblog thus i came to “return the favor”.I’m attempting to find things to improve my site!I suppose its ok to use a few of your ideas!
Commentors on this Post-
Paul Stamatiou
Christina
George Ornbo
Mike Marley
Ross
Michael
Christina
Christina
duivesteyn
Christina- GN">
GN - Gravatar" class="gravatar" />Thejesh GN
Karl Hardisty
Josh Price
Host Disciple » Blog Archive » Inside the hosting mind of a blogger
Patrick Sikorski
Christina
Patrick Sikorski
Christina
Patrick Sikorski
Christina
Patrick Sikorski
Karl Hardisty- S3 | www.ChristinaWarren.com">
S3 | www.ChristinaWarren.com - Gravatar" class="gravatar" />Video Tutorial: Automate Media Temple (gs) backups with Amazon S3 | www.ChristinaWarren.com
Matt
Matt
Christina
Cedric
Maxwell Scott-Slade
Ced
Christina
Christina
Ced
Christina
Maxwell Scott-Slade- S3 | 64k">
S3 | 64k - Gravatar" class="gravatar" />Faire un backup de son blog sur Amazon S3 | 64k - S3 | HighEdWebTech">
S3 | HighEdWebTech - Gravatar" class="gravatar" />Easily Backup Your Entire Website to S3 | HighEdWebTech
Philip
Links of Interest — CSS-Tricks
Christina
Matt
Christina
Matthew Barker
Peter
Marcus McCurdy
Christina- S3 | QuickPipe">
S3 | QuickPipe - Gravatar" class="gravatar" />Automatically back up your entire web server files and databases to Amazon S3 | QuickPipe
Links of Interest | Proba
Matt- S3 | Randomess of Josh Price">
S3 | Randomess of Josh Price - Gravatar" class="gravatar" />Automatically back up MetiaTemple Grid (gs) via Amazon S3 | Randomess of Josh Price
Michael York
Petter
Christina
Jordan
William B.
Poll Results: How do you back up your websites? — CSS-Tricks
Tim Peacock
Ced
Matt
Christina
Matt
Week in Review (October 20 through October 26) | GrandmasterB dot com
creede- S3 for Backups — Effective Programming">
S3 for Backups — Effective Programming - Gravatar" class="gravatar" />Amazon S3 for Backups — Effective Programming
Mikkel
Samm
Michael
trs21219
trs21219
Adam
Adam
A
Adam
Johnny
jota
Matt
Pietro
Karl Gechlik
Christina
Karl Gechlik
MattO
MattO
Christina
Coalesce
Andrew
zxr
Mikkel Hansen
Andrew
Brett Wilcox
Anthony Abraira
Brett Wilcox
Brett Wilcox
Hugh Esco
irms
Clayton
Clayton
Christina Warren
Karl L. Gechlik | AskTheAdmin.com
Jesse- S3 met S3Sync">
S3 met S3Sync - Gravatar" class="gravatar" />Media Temple backups naar Amazon S3 met S3Sync
Andre Kreft
the Blog Butler
Tanner Hobin
Brett
Brett
Barton
Barton
nosaukums
nosaukums
humbert
Rosamunda
금주의 연예가 소식 — [3월 2일 NZtimes] 이효리 채식 효과로 “주량이 줄었다”
Seveners Free Board — Scientists prove Jabulani ball is ‘too perfect’
her comment is here
http://fog5rain.livejournal.com
www.elagat.com
jeux gratuit enligne
Dave F
Dave F
cheap christian louboutin shoes
hunter wellington boots
Leave a Comment-
- Copyright 2013 www.ChristinaWarren.com. All Rights Reserved.
- Back To Top
- Home




Recent Comments-