Easy Automated Snapshot-Style Backups with Rsync

Have rsync, have RAID volume, have ssh connection to server. What’s the best way to back it up? Here’s one way. Use hard links to make “duplicate” archives of remote content with the minimum of wasted space.
I’ve adapted the idea with the following:

for t in `ls remote/`
do
    for i in `ls remote/$t/`
    do
        export older=7
        rm -fr remote/$t/$i/7
        for n in `seq 6 1`
        do
            if [ ! -d remote/$t/$i/$n ]; then
                mkdir -vp remote/$t/$i/$n
            fi
            mv remote/$t/$i/$n remote/$t/$i/$older
            export older=$n
        done
        cp -al remote/$t/$i/0/. remote/$t/$i/1
    done
done

rsync -v -v --progress -az --delete --exclude-from=exclude.txt -e 'ssh' www.example.com:/home/ remote/www/home/0/
rsync -v -v --progress -az --delete --exclude '*logs/*' -e 'ssh' www.example.com:/usr/local/apache/ remote/www/apache/0/
rsync -v -v --progress -az --delete --exclude-from=exclude.txt -e 'ssh' mail.example.com:/home/ remote/mail/home/0/

Using this script you can have multiple hosts (here we have www.example.com and mail.example.com) and multiple directories(/home and /usr/local/apache) on each host backed up.
This script and post will be updated as I refine the backup procedure.
Later… After reading through the linked article above, I see that the author uses a slightly different way of rotating the archive snapshots. Instead of re-using the oldest one, he creates a hard link copy of the latest snapshot, “0”, in the “1” snapshot. When rsync downloads changed files it “deletes before copying” so that the old file is preserved in “1”, but the new file is now in “0”. Read the “hard links” section of the above for more on how that works!
Here’s a diff of what I changed:

7,12c7,8
<         if [ ! -d remote/$t/$i/7 ]; then
<             mkdir -vp remote/$t/$i/7
<         fi
<     
<         mv remote/$t/$i/7 remote/$t/$i/7.tmp
<         for n in `seq 6 0`
---
>         rm -fr remote/$t/$i/7
>         for n in `seq 6 1`
20,21c16
<         mv remote/$t/$i/7.tmp remote/$t/$i/0
<         cp -al remote/$t/$i/1/. remote/$t/$i/0
---
>         cp -al remote/$t/$i/0/. remote/$t/$i/1

Later Still… I found and installed Backuppc via delicious this morning and I’ve got it working. It uses the same idea of space saving hard links but also provides a web based interface to the backup and restore procedures. I think it can be automated and there are loads of other features I couldn’t possibly hope or wish to duplicate in a timely manner!
Installation is relatively well explained, even down to installing the required Perl modules from CPAN, but configuration is slightly harder. Just make sure to override the defaults in config.pl with config.pl in the $backupdir/pc/$host/config.pl file. That took som figuring out where that file was.
It’s already backed up two Windows machines and it’s working on a Linux box. Backup contents can be examined over the web and because it uses a “pool” mechanism, it can find duplicate files, even among different backups! That should save a lot of disk space and network bandwidth as time goes by!

Accelerating PHP Applications

This set of slides from a presentation earlier this month is well worth a read-over. I knew a lot of it, but there were a few surprises too. Hopefully I can report back in a few days time if it made much of an impact on the server!
Later… I’m impressed, but here’s a short summary of what I did first:

  • Stripped the Apache modules (libphp4 went from 5.6MB down to 1.5MB!)
  • Increased the default kernel buffer size as mentioned in the docs. I had already set the max higher, but didn’t know about the default value.
  • Moved php accelerator object files into seperate virtual host directories. I did the same with PHP4 session files.
  • Increased the StartServers, MinSpareServers and MaxSpareServers settings.

The result? Double the network traffic to our web server! I haven’t examined the logfiles yet but hopefully they’ll show an increase in page views!
Much Later… You’ll be happy to hear there was a corresponding increase in page view. If you run a Apache/PHP based website take heed of the tips above and in this presentation!

First Post From Fedora Core 2

No, I don’t know yet if I’ve been hit by the WinXP/Kernel 2.6 bug but I do have the recovery commands written out in good old dead tree format just in case things go sideways when I reboot later.
First impressions? It’s buggy, a little. Nautilaus just crashed there and it’s not responding correctly yet (I’ll probably need to restart X), I had to enter the Oceanfree dns settings in /etc/resolv.conf as kppp didn’t pick them up from pppd for some reason (they appeared in /var/log/messages however), and when I first went online Mozilla and Moz FF both crashed when they received keyboard input. That seems to be solved now by restarting X (obviously, if you’re reading this!)
Later… Booting into XP seems to be OK!

Apart from that, it looks nice, the usual arial-type fonts are installed although they look bigger than FC1 but maybe that’s down to some tweaking I did previously in FC1.
The first thing to do of course is install apt, do an “update”, and install “xmms-mp3” as well as a few updates that are available.
Open Office works as well as can be expected, Gnucash is slightly updated but nothing new. I briefly played with the new spatial features of Nautilaus but it’s crashed now so that experimentation was short lived!
Is it worth upgrading from FC1? Probably not, especially if you have a Kernel 2.6 update for FC1 then you get all the speed improvements without the bugs. 🙂
Later Still… I’ve burned CDs, copied photos from my camera (it’s handy that a “camera” icon appears automagically now), and Nautilus seems to have settled down somewhat. It generates thumbnails of image folders really quickly, almost as quickly as WinXP, and certainly much faster than Gthumb (and Gthumb can use the same thumbnails AFAICS).
This is a handy tip for using the Gnome 2.6 GUI. Not obvious and terrible usability wise however:

You can type a file name into the new file selector.

Ctrl + L will open the filename box, with autocomplete and all.

C64 Game Fans?

Damn, when someone visited by searching for Godian Tomb on Google I just had to go look for it myself.. and I found lots more too, even Mr Robot although something tells me it won’t hold quite the same attraction as it did over 10 years ago.
If only I could play it on a decent portable device! The keyboard on my 7650 is fairly knackered from playing Stunt Car Racer, oops! Can anyone suggest a pda with a good C64 emulator? Not as if I have the money for it, mind, but one can always dream eh?
Much Later… I’m just after trying out Gordian Tomb and the version on that site is one I know very well… I coded the “crack” intro on it! Wow, that must have been some 14 or more years ago! I wonder how they got that copy?

Edit on 09/12/2008. Bah. c64unlimited.net is gone. All links removed.