Show HN: Bvckup 2 – Simple Fast Backup for Windows
bvckup2.com
bvckup2.com
I wrote the original version several years ago. It was purely for myself, to automate the way I was doing the backups at the time. I also threw together a website and put it online, just because and with no hope that something this simple would be in demand. Then went on doing other things like having kids and what not. Fast forward to 2012 and there's a couple of thousand people on the mailing list and a trickle of emails asking when an update would come out. So I sat down and did a proper rewrite. I thought it would take 2-3 months, but it took almost a year. And a half. The breadcrumbs of the process are over on the /wip page [1]. You might've seen it as it was on HN some time ago.
The app is notable for three things - (1) it has a single, simple purpose (2) it is light and very fast and (3) it has an excellent UI.
Also of some interest - I ran a 12-month long beta. Started with just 100 people testing private builds for 6 months and then moved on to a public beta for another 6, altogether yielding about 15,000 installs. If there's a single takeaway from the project so far - a beta this long is incredible. It helps shaping the feature set like nothing else and it flushes the most obscure bugs that no formal QA could ever find.
---
By the way of introduction - I come from the system programming background. I spent several years writing firmware for network appliances, I wrote a P2P VPN system from scratch and I generally prefer C to Java if you know what I mean. I also get a major kick from doing visual design for my projects and got 2000 followers on Dribbble to prove it :) ---
In any case, there you have it - my take on simple backup software. Let me know what you think. Thanks! ---
[1] http://bvckup2.com/wipTo the author: great work. I love your UI design.
Contrast this with the too common designed-by-programmer UIs of Windows utilities, and I'd say this looks great.
Corporate
$499 per year
- priority support email address
- early access to new releases
The features don't really matter that much. There are companies that will happily buy the more expensive plan simply because it has the word "corporate" in the title.That's just an initial guess at a price. For a corporate plan it could likely go much higher without you having to provide any real extra service beyond "I will give you the corporate plan email address and promise I always read those emails before the emails of the other plans".
To take that a step further, you could rename the other plans to "Hobbyist", and "Small business".
You could do these things without changing anything else about the app (everyone still gets the same app). You don't even have to worry about the annual fee beyond setting up a little system to track when a company's year is up and auto-emailing the buyer's address asking for more money. If the address no longer works or if they don't respond it doesn't cost you anything and you've already profited from the larger upfront charge.
(Note that I understand that it's designed to be very simple and usable, and there's real value in that, but I'm specifically asking about the features.)
Right after I saw the animated details (you know, the one that pops up when you click "Change") I wanted to see its source code :/
Can you please tell us what language? and/or 3rd party controls are you using? Please?
I'm guessing it might be on the work in progress page but the page looks too detailed, so I have bookmarked it for when I have more time than I currently do.
For some people, like yourself, archiving backup is the one true backup, while others make do with rolling hourly/daily/weekly backups or even something as rudimentary as copy-pasting folders by hand. Ideally, yes, everyone should be doing versioned backups to a zfs storage cluster. In practice, no, lots of people have just enough motivation to get an external drive and start making copies onto it.
That said, I am planning to add versioning and I am looking at adopting git's packfiles for that purpose. The idea basically is to use an open format for storing archived versions, so not to lock in the users. This is in its early stages, so it may or may not work out.
Please don't get me wrong, I'm not trying to denigrate the software you've written! I was just surprised to see it marketed as a backup tool instead of a file synchronization tool.
The git packfile format is neat; I'm sure you can get some inspiration from https://github.com/bup/bup (which uses it) and http://obnam.org (which has it's own format).
> I was just surprised to see it marketed as a backup tool instead of a file synchronization tool
https://www.hackerschool.com/manual, Ctrl-F, "feign surprise"
I know about bup, thanks.
It looks like your software protects to some extent against accidental deletions of files, which puts it far ahead of most file sync tools. But, if it's still possible to accidentally delete the contents of a file or otherwise corrupt it, then it's not a backup.
We usually end up recommending Acronis TrueImage, which is in the same price range as your software. I'd happily recommend your software instead, since TrueImage is clunky and slow, but without archiving it doesn't count as backup software.
(For one real-world example: we had a corporate client get hit by Cryptolocker. It looks like in this case your software would've automatically copied the changed files over to the backup directory; is this the case, or am I missing something?)
Every backup has a set of risks that it mitigates. If the goal is to mitigate human errors, then, yes, versioning/archiving is a must. However if someone just needs to have a daily snapshot of their photos and documents to protect them against fire of theft, then you can certainly call it a file sync, but it still is a backup. To each his own. "Backup" is not an exact term, but rather a range of data protection techniques.
All that said, the archiving is coming up.
We're trying to narrow the range of things that people consider a "backup" so that they don't get wildly disappointed in the future. This isn't a matter of taste.
> All that said, the archiving is coming up.
Fantastic!
Aye, I totally hear you.
(Get-WmiObject -list win32_shadowcopy).Create("C:\","ClientAccessible")Anyone know of a good rsync implementation for Windows?
Sorry I can't be more specific
Re-calculating a full-file hash will require reading the whole file anyway. Which will take around the same amount of time as re-copying the whole file, since the sequential write speeds of most HDDs and non-entry-level SSDs are similar to their sequential read speeds. The only benefit would seem to be that your SSD might last a bit longer... but how many consumers use SSDs to store their backups?
Please let me know if I'm missing something.
I had read that Cyberduck can be used to backup to S3 and in-turn we can make a "rule" in S3 that after "N hrs" data in S3 should be sent to Glacier. But I don't how much price difference does it cause or whether we can directly back up to Glacier at all.
Duplicity is another thing I might want to explore. But absence of even a minimal GUI makes me a little uncomfortable.
-- edit --
Let me give an example of what I mean by "much better UI".Bvckup 2 has a hierarchical log viewer [1] and this thing does an absolute wonder for usability. Essentially you can go from a backup run summary to the specifics of a failure in a matter of 2-3 clicks without being overwhelmed in the process.
The issue however is that it was a total bitch to implement so that it wouldn't require keeping an entire log in memory at all times. See, if the log is flat, it's easy to display its relevant part by looking at the scroll position and then rendering respective chunk from the log file in a window. But once you have a tree, determining which item is visible becomes a hard problem, because random nodes can be opened and closed. Consider the case when you have a million-item log and, say, 15% of the nodes are closed. Moreover, the visibility look-up needs to have a real-time performance, because the window needs to respond in real-time to user dragging scroll button up and down. So, behind the scenes, this hierarchical log viewer is backed by a double-indexed b-tree index file - a construct that that has no prior art and that took me several weeks to converge to and to implement [2]. It could very well pass for a modest PhD thesis in a smaller university :)
So, I mean, there are smaller simple-looking differences between bvckup's UI and other apps, but the thing is that they are sometimes really hard to implement. They do however improve the overall UI experience quite a bit.
Agreed that trying to parse the giant logfile dumps of most sync programs is a pain, so kudos for that.
Re: copying changed portions only - yes, http://bvckup2.com/#delta
Re: compare file contents - not for deciding if the file was modified or not, no. There was just no demand for this. That said, it's easy to add and it can be done more efficiently than doing a raw comparison between the original and the backup copies. That's because the delta copier computes file hash as a part of the process, so the app can simply go through the source file, redo the hash and see if it's changed since the last run. But as I said there were zero demand for this, so the comparison is done based on timestamps and the file size. Depending on the file system support the app automatically selects between comparing just the modified time or both the modified and created. HTH.
This may be a bit far-fetched. Some might even say disrespectful to the bulk of PhDs out there, who typically worked several years (not weeks) to complete their dissertations.
From properly relating to current state of the art, to actually developing multiple (not just a single one) techniques improving it, and finishing by properly presenting all that work in a scientific manner: your nice trick has a long way to passing as a PhD.
EDIT: Ok, I didn't get the playful tone. Sorry.
When I was a grad student, at one point I took a 'reading course'. A paper was required, maybe just expository and not necessarily original. I started with a problem seen but not solved in a course. I hit the library and saw no solution. In an evening I got some rough ideas for a solution and then proposed solving the problem as my 'course'. A prof looked at the problem for a weekend, didn't see a solution, and agreed that the problem was significant enough. We shook hands. Then immediately I outlined my first cut solution.
Then in some pleasant evenings for two weeks, sitting with my wife on our bed as she watched TV, I found a good, clean, solid solution. In addition I discovered a new theorem comparable with the famous Whitney extension theorem and applied it to solve my problem and, also, produce some curious additional, new results. I also found that I'd solved a problem stated but not solved in a famous paper in mathematical economics by Arrow, Hurwicz, and Uzawa. Poor Uzawa -- apparently so far he has yet to get his Prize! I published the paper in JOTA, right away, with no significant revisions. So, about four weeks of pleasant, not very hard, work, and I'd met the formal requirement for a Ph.D. dissertation. I used another piece of work I'd done for my Ph.D. dissertation, but that paper did 'polish my halo' in the department.
Net, length of time is not one of the criteria!
I may have to give this a try, although it would be nice to see some figures on just how much faster it is, to see whether it would be worth it.
As a little experienced developer (still a student), I find you Work in progress page very interesting and full of useful tips and information ! Moreover it shows all the work done on this app (especially concerning the UI).
You have a lot of concerns about the UI design, do you have any books or online resources concerning application UI that you really like you'd want to share ?
Thanks
The animations in Bvackup are very OS X like. They are beautiful. It has been a very long time since I clicked a button in a Windows app and went "ohh that is sexy!" haha. Also your /wip is very interesting. The level of detail is impressive. I ended up spending about half an hour reading every entry.
Are all the animations completely home baked then?
Re: animations - yeah, they are all custom, but there's not really much to them. The hardest part was to do flickerless fade-ins and -outs, the code for that just ain't pretty. Window transformations are just DeferWindowPos with the right combination of flags and a bit of painting cooperation from custom controls. Still though... the amount of work required to get these animations working was ungodly compared to $('div').animate({ ... }); :)
Do you blog at all? I imagine you have some very interesting things you could talk about in regards to Win32 programming. Understandably there are fewer and fewer pure Win32 developers these days and even fewer who take the time to really make a Win32 application look good.
Purely for personal curiosity I have decided to learn C (and most likely C++ as well) as I have no real experience with native development and it is something that has always bugged me. Would it be incredibly rude of me to maybe shoot you an email for a little chat one to one? I totally understand if you are unable too. Thanks!
No, sorry, don't blog and can't mentor you. I just don't have time for either.
PS I realised you are the guy behind Hamachi. I used that a lot a while back so thanks for that also!
Thanks for the reply!
Incidentally, I do own backvp.com.
- says the guy who also thought of a cute but easily-misspelled name for his app. Customers sometimes mis-spell it a few different ways in the same email.
Btw, fantastic design everywhere.
In Svpply and Svbtle it simply stands for "u", which is a deferral to how Romans would've written it.
[1] http://www.donationcoder.com/forum/index.php?topic=36388.msg...
Two-week unrestricted trial
Anytime upgrade to paid status(Edit) Better now?