Author's here. A bit of a background on the project if I may.
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!
Consider adding a Corporate tier to your pricing plan
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.
Ive been using bvckup2 since its release and also its predecessor, personally I backup to a Synology NAS then that pushes everything up to S3. This app has never let me down, it is also very lightweight and wont suck system resources.
Question: if I select my Google Drive or MS Cloud Drive as a backup folder, will that work? (too lazy to test) I suspect it would since both of these have hooks into the default filesystem, but I am unsure.
What would the advantages over a tool like FreeFileSync be if I don't care about real-time backups?
(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.)
not sure why you claim it has an excellent UI, it's a very simple UI with the usual toolbar (who has those anymore? I guess that's a Windows thing.) To me, it looks like one of the basic autogenerated MFC apps with a toolbar and list view that I made dozens of in the 90s. I guess I'm spoiled on a Mac and don't need additional tools (or UIs) on Linux.
This IMO has a much better UI than TimeMachine's. It lets you see all your backup tasks in one spot, rather than having to "Select Disk", and it has 100% less space gimmick.
"very simple" is one of the best compliments an UI can get!
It's deceptively simple--looks like there's a lot of information and functionality packed in, and attention to details is apparent.
Contrast this with the too common designed-by-programmer UIs of Windows utilities, and I'd say this looks great.
UI isn't just what's on the page. It's also what isn't. If you look at the authors WIP you'll actually see how much it's been refined over time :) Very simple but powerful is the intention
This is probably the nicest looking Windows application I have seen in a while. The website is pretty slick too. This is the kind of detail that you usually get to see for Mac applications. Great Job. Seriously.
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.
It's in C++, but closer to the C than to ++. The UI is done in a thin wrapper framework that runs directly over Win32 API. Custom controls, animations, etc. - all's from scratch. It's all much easier than it looks, just need to let MFC/ATL/XYZ go :)
I always thought that of all the Microsoft "frameworks" ATL and WTL were the best thought-out and most useful, and reasonably lightweight. I never really got the hang of MFC, but WTL clicked very quickly for me.
This may sound strange, but I don't understand how I'd use this for backups. It seems like all it does is sync one folder to another, potentially in realtime. That's essentially RAID1 at the filesytem level, but RAID isn't a backup! What if I accidentally overwrite the contents of a file; how would I recover the previous version?
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.
Actually, I was thinking of rolling hourly/daily/weekly backups and I didn't understand how I would set that up with your program. Would I have to sync the same source to multiple destinations on different schedules? That seems inefficient compared to e.g. http://www.mikerubel.org/computers/rsync_snapshots/
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).
We occasionally get questions from clients about using some file sync tool or another for their backups, and we are very firm with them: file sync is not a backup.
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?)
This reminds me how every time someone posts a salad recipe to /r/cooking the whole discussion inevitably converges to the topic of a salad without a mayo not being a real salad ... just as it is not a salad with the mayo :)
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.
> "Backup" is not an exact term, but rather a range of data protection techniques.
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.
To be fair, if someone casually links to a HowTo for rsync-based snapshots, saying that he can't understand how a mirroring app can be used for setting up rolling backups is a pretense modesty.
What I meant was I don't understand how I could set up an efficient rolling backup scheme using this tool. I included the link to Mike Rubel's page because it demonstrates using hard links to share unchanged files between backups.
I had a lot of trouble with Git packfiles when I tried using git-annex - Windows just can't handle directories with hundreds of thousands of tiny files in them.
I'd use it to backup my folder on a ZFS volume through the network (which btw syncs itself to a remote computer) instead of doing this manually. So I'd say this is a tool, which helps a lot with your backups. Only if it supported the rsync protocol...
Anyone know of a good rsync implementation for Windows?
Sure, filesystems with snapshotting and deduplication capabilities let you use much simpler tools to implement backups. I don't think they're common in consumer-level storage devices, though.
From what I've read persistent volume snapshots has been removed from W8 and replaced with File History. You can still use VSS to make temporary snapshots though (and that's what allows backup apps to process locked files).
The filesystem and API support is still there, and System Restore still uses them. vssadmin doesn't offer to let you create shadows, but you can still make them via PowerShell:
I'm most interested in the delta copying. After a little bit of research in the forums I'm guessing you save block hashes of full copies and then compare the source blocks to the block hashes and copy only if they differ.
Or does the app install a driver to get the changed blocks in files without rereading the whole file?
It's former. It splits files into blocks (defaulting to 32KB, but that's configurable), computes hashes (two separate hashes per block) and stores them in a file in the backup config directory. These are used to detect modified blocks. It also computes a hash of an entire file and stores it in the same hash file. This is used to hedge against false negatives with modified block detection. The original version (from '09) didn't use the full-file hash, so it resorted to re-copying files in full after several incremental updates.
Is the full-file hash actually faster than re-copying the whole file?
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?
VSS Writers may include this information for their files. So it is probably available for e.g. a Exchange database. The examples on the page are VMWare and TrueCrypt and I don't think they register VSS Writers.
It's been too long since I've actually worked with it, but it is how Win8 does file history and wbackup uses it to make its differential backups, of all files, not just log like files.
I have been thinking about my own backups for some time. Do you guys prefer rolling your own setup for full system backup or use services like CrashPlan? Do you guys trust services like S3/Glacier? When backing up your system do you bar specific files from being backed up like GPG/SSH keys, etc.?
I'm in the same situation. I use CrashPlan but I've heard CrashPlan has failed in the past so I just wanted another layer of security. I was thinking of finding some app like Tarsnap (and it should work with Glacier) that handles de-duplication really well.
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.
Do you do byte-by-byte comparisons between the original and backups to makes sure nothing was copied over incorrectly? This is my biggest worry is that I back something up and the backup has bit errors and it's essentially ruined but I won't know until I try to recover it.
How does it compare to http://freefilesync.sourceforge.net/ ? Apart from the delta copying the feature list sounds similar. I find the FreeFileSync UI quite usable.
Faster bulk copying, lighter build, lighter on resource usage, removable device tracking, much better UI (it's subjective, of course, but just try it out and see for yourself). Formal backup planner, dry runs, native support for running as a service with separate engine and UI processes.
-- 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.
> It could very well pass for a modest PhD thesis in a smaller university :)
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.
A common standard for a Ph.D. dissertation is "an original contribution to knowledge worthy of publication", and the usual standard for publication is "new, correct, and significant". The length of time devoted is not part of the criteria. Maybe can do the work in a weekend; maybe take years.
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.
Yes, I know how doctorate degrees work and what they mean. It was a joke (as indicated by a smiley) and as with every joke there's a grain of joke in it. Not all PhDs are created equal.
Why would I want to delve into my backup run's log files? Seems pretty counter-intuitive as it's something you expect to work out of the box, not something that you'd have to debug and have issues with.
I'd love to hear more, if you're comfortable sharing, about the data structure you use for the log viewer. Either way, this looks like an excellent product; thanks for sharing.
freefilesync does do dry runs.
Can bvckup2 copy the changed portion of files only? Does it compare file contents, or just size/modified time? (Or is that an option?)
Agreed that trying to parse the giant logfile dumps of most sync programs is a pain, so kudos for that.
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.
I, too, have found freefilesync to be the best option so far for windows. Changed everything over from Synctoy recently. (I mirror everything I want to backup to a home server, then do cloud backups from there using crashplan.)
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.
I compiled a few notes on some cloud backup solutions a while ago (2012), http://alicious.com/cloud-backup-solutions/. In the end I use duplicati (with cloud storage, was live drive but that doesn't work and it's actually a current todo to move-over to Google storage [backups are encrypted]) and crashplan with buddy storage.
Great application ! It's functional and beautiful.
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 ?
Lovely looking application. The animations are super smooth. Would you mind sharing what technologies and tools you use? Also, and this is a strange request but this is HN! but what editor theme and font are you using in this screenshot? http://bvckup2.com/wip/tree-db.png
It's C++ on top of raw Win32 API with very light use of actual ++ features and no external dependencies except for Windows SDK. About 75KLoC in libraries (UI, RPC, event loop, tasklets, etc) and 90KLoC in the app itself. The IDE font is one and only Dina - https://www.donationcoder.com/Software/Jibz/Dina/.
Ahh yes Dina! I tried it out long ago but have been using Consolas since its release. Just installed Dina and I have to say it looks rather lovely at 8pt on a dark theme! Is that a custom theme you have in VS or something from vsstyles?
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?
It's not a theme, just some basic color palette with green for preprocessor, yellow for keywords, cyan for string and numbers and white for the rest. Dark gray for the comments.
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({ ... }); :)
Yeah I can imagine. Win32 was never designed for animations like that :) You appear to have done a pretty remarkable job though as they are some of the best I have seen in Windows outside of things such as WPF. Well done!
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!
I know this isn't the main purpose of the software, but has there been experiments with a bvckup being restored on a different piece of hardware? I'm not talking completely, changed the CPU and architecture, but more like different drive sizes and such.
It's a file-level replicator, it is just not meant for system/image backups, because those need to be aware of MBRs, partition tables and other non-FS elements.
Yes, that's what I feared.
I might start using it at work, in association with CloneZilla, the latter for deployment, and yours for user's data safety.
If you have a better name, maybe rename it? You've just done a 2 year rewrite, I'm sure you'll survive a new name.
- 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.
Does anyone know what the "v" means? Svbtle, Bvckup, Backvp... Is it supposed to be pronnounced like a "u", and just why use it in the first place? No disrespect.
It was an exercise in quirky branding on my part - http://bvckup.tumblr.com/post/3283335299/how-bvckup-got-its-.... To my excuse it was almost 5 years ago, long before using "V" in place of a vowel became mainstream. And, in retrospect, I should've picked something a bit more pronounceable.
In Svpply and Svbtle it simply stands for "u", which is a deferral to how Romans would've written it.
It's a happy accident, but I'd assumed it was because b,v, and c are right next to each other on the keyboard, making the first 3 characters before it autocompletes easy to type.
If you are referring to the "last beta", then it's just what it says on the tin - it's the last of beta releases, meaning that it's unsupported and it's the end of the line, feature-frozen since mid May, no updates. The exact list of differences is over at [1]. The reason the last beta exists is that the beta period was quite long and there were people who got used to using the app for free, so that version is for them (though all beta users got 50% the production version).
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/wip