3 ms·
(Full disclosure -- I'm the primary maintainer / author of Snebu) I would like to see how these compare against Snebu (https://www.snebu.com https://www.snebu.
by derekp7 6y ago
(Full disclosure -- I'm the primary maintainer / author of Snebu)
I would like to see how these compare against Snebu (https://www.snebu.com https://www.snebu.com), now that it supports encryption. The project has been around for a number of years, but had a bit of a code refactoring when encryption was added.
The interesting approach that it take is it uses GNU tar to grab the files, optionally passes it through the included Tarcrypt (https://www.snebu.com/tarcrypt.html https://www.snebu.com/tarcrypt.html) filter, (which LZOP compresses then encrypts the file contents while keeping tar-compliant headers within the tar file). The tar file is then ingested by the Snebu backend, each backed up file is written to the data store (vault) and compressed (if it arrived in plain text, instead of processed via tarcrypt). The metadata (filenames, size, owner, permissions... etc, client name, backupdate, retention schedule) is stored in an SQLite DB (the backup catalog).
The encryption (handled exclusively by tarcrypt so the audit footprint is small) uses public key encryption (in the usual manner -- the RSA public key encrypts a randomly generated key, which in turn is used with AES-256). You can specify multiple RSA key files, so you can have a backup key (or keys) if you want. You can also change keys any time. Since backupsets are snapshot/deduplicated, you may (most likely will) have files in a restore set that are encrypted with different RSA keys. Not a problem, you will be prompted for the passphrase for each one at the beginning of the restore (and if you use the same passphrase when changing out keys, you only have to enter it once).
(BTW, tarcrypt can be used outside of Snebu -- it may eventually get spun off as its own project).
Other unique features that others lack:
* Key files are for a backup set, not tied to the repository
* Both push and pull backups are supported -- pull backups (initiated by the server) don't need any agent or client software installed (except tarcrypt if encryption is used)
* Granular user access permissions -- you can grant a user access to backup, but not delete, or access to restore specific hosts, etc.
* Multiple-client support. You can have dozens of clients on the same backend repository (I have about 75 or so in a development lab environment).
* Low dependency count -- doesn't require specific versions of python or other dependencies. Written in C, depends on lzo2, sqlite3, openssl.
Main drawback compared to tools such as Restic is that it is server-based, in that a client can't back up to "dumb storage".
Compared to Borg and Restic, only file-level deduplication is performed. Compression is a bit weaker (but fast), so size is a bit bigger than Borg (but smaller than Restic).
Snebu has a smaller developer base. This should be easier to fix when the internal code structure documentation is finished.
Automated end-to-end tests aren't included in the repository. This is being addressed.
- scottlamb 6y ago> * Both push and pull backups are supported -- pull backups (initiated by the server) don't need any agent or client software installed (except tarcrypt if encryption is used) Nice! Sounds like you can configure it so the client machine can't destroy all the backups? That's a feature I've wanted in backup software for a long time but haven't actually seen.
- derekp7 6y agoYes, that is correct. You can either have the backup server ssh into your clients, or set up an account on the backup server for each client to use. In that case, 'snebu' is installed owned by the user ID snebu, and is set-uid to that ID. When starting up, it checks if your UID is different than your EUID. If so, it looks up your UID in a table to determine what you can do (listbackups, restore, newbackup/submitfiles, expire, purge), affecting which backup sets. Back on the pull backups, the backup server ssh's to a client (optionally using a non-privliged user), then sudo's to root (or if backing up files owned by a specific account, can sudo to that account). And no software is required on the client in that case (except tarcrypt if doing encryption). So it is really easy to set up backups on a fleet of servers. BTW, I see in your profile that you are a C++ programmer -- feel free to drop by the github repository (github.com/derekp7/snebu) if you have any issues or ideas (I have Github discussions enabled also for free form chat).
- andreareina 6y agoborg can do that if you restrict the client's ssh key to only run borg in append-only mode: https://borgbackup.readthedocs.io/en/stable/usage/notes.html#append-only-mode https://borgbackup.readthedocs.io/en/stable/usage/notes.html...
- ratiolat 6y ago> Nice! Sounds like you can configure it so the client machine can't destroy all the backups? That's a feature I've wanted in backup software for a long time but haven't actually seen. Check out IBM Spectrum Protect. It's impressive in very many ways, also not that cheap. https://en.m.wikipedia.org/wiki/IBM_Tivoli_Storage_Manager https://en.m.wikipedia.org/wiki/IBM_Tivoli_Storage_Manager Also this forum is quote goldmine: https://adsm.org/forum/index.php#tsm-ibm-tivoli-storage-manager.1 https://adsm.org/forum/index.php#tsm-ibm-tivoli-storage-mana...