Tagbackup: Easy backups to S3 with tags

May 20262 months ago

Here's a little something I am proud of: Tagbackup.

It is not a profound or game-changing idea, but it does one job really well and fixes a real-world problem I had in a simple, clean and reliable way.

I wanted:

  • A simple way to push files to an S3-compatible bucket via a cron job.
  • Keep the last n days worth of copies, but purge older ones, again via cron.
  • Be able to pull the latest backup down to my local machine when I wanted it, ideally with the same simplicity as the initial push.
  • Be able to install it cleanly on multiple machines, i.e. I didn't want bash scripts all over the place.

I looked around, but nothing quite matched my use case.

This spawned a plan to build this as a micro-SaaS where organisations could sign up, connect S3 buckets to their account, and which machines had access to those buckets, from a central web interface. It was a cool little idea until reality hit: no CISO was ever going to allow handing over security credentials to a third-party service, especially not one from a solo developer. Even if I did cross that first hurdle, if it achieved any success it would attract hackers like moths to a flame. Thankfully, I came to my senses.

But I still wanted the tool.

Around this time, I was also coming to grips with developing with AI. After resisting our robot friends and mocking the vibe coding trend for so long, I decided to embrace it and see what it could do. Like many software engineers, I felt very threatened by AI, fearing that it would replace us all. Now I feel quite the opposite: having the skill to combine years of industry experience with know-how to utilise our new artificial friends, we can hit new heights of productivity while maintaining superior software quality. I digress.

A screenshot of Tagbackup in action

After a lot of planning, reviewing ideas, and discussions with AI, Tagbackup was born. After a few weeks of successful use with personal projects, I realised it lacked some of the convenience and cuteness of the web UI I originally wanted in the SaaS version, leading to the serve functionality being added (see the screenshot above).

I'd love to know how you get on with it. Drop me a message, open an issue on GitHub, or just let me know if it solves your problem — or if it doesn't.