131 lines
5.6 KiB
ReStructuredText
131 lines
5.6 KiB
ReStructuredText
.. title: BorgBackup
|
|
.. date: 2020-01-30
|
|
.. slug: borgbackup
|
|
.. updated: 2020-01-30
|
|
.. status: published
|
|
.. tags: backup, borgbackup, borg
|
|
.. category: backup
|
|
.. authors: Elia el Lazkani
|
|
.. description: It has been called the Holy Grail of backup! BorgBackup is coming to town.
|
|
.. type: text
|
|
|
|
I usually lurk around **Freenode** in a few projects that I use, can learn from and/or help with.
|
|
This is a great opportunity to learn new things *all the time*.
|
|
|
|
This story is familiar in that manner, but that's where similarities diverge.
|
|
Someone asked around ``#Weechat`` a question that caught my attention because it was, sort of, out of topic. The question was around how do you backup your stuff ?
|
|
|
|
.. TEASER_END
|
|
|
|
I mean if I were asked that, I would've mentioned revision controlled off-site repositories for the code that I have.
|
|
For the personal stuff on the other hand, I would've admitted simple rudimentary solutions like ``rsync``, ``tar`` and external drives.
|
|
So I was sort of happy with my backup solution, it has worked. Plain and simple.
|
|
|
|
I have to admit that, by modern standards it might not offer the ability to go back in time to a certain point.
|
|
But I use *file systems* that offer *snapshot* capabilities. I can recover from previous snapshots and send them somewhere safe.
|
|
Archiving and encrypting those is not a simple process, wish it was. That limits storage possibilities if you care to keep your data private.
|
|
|
|
But if you know me, you'd know that I'm always open to new ways of doing things.
|
|
|
|
I can't remember exactly the conversation but the name **BorgBackup** was mentioned (thank you however you are). That's when things changed.
|
|
|
|
|
|
BorgBackup
|
|
==========
|
|
|
|
`Borg <https://www.borgbackup.org/>`_ is defined as a
|
|
|
|
Deduplicating archiver with compression and encryption
|
|
|
|
Although this is a very accurate and encompassing definition, it doesn't really show you how *AWESOME* this thing is.
|
|
|
|
I had to go to the docs first before I stumbled upon this video.
|
|
|
|
.. raw:: html
|
|
|
|
<div class="custom-center" style="
|
|
width: 50%;
|
|
margin: 0 auto;
|
|
">
|
|
<script id="asciicast-133292" src="https://asciinema.org/a/133292.js" async></script>
|
|
</div>
|
|
|
|
It can be a bit difficult to follow the video, I understand.
|
|
|
|
This is why I decided to write this post, to sort of explain to you how **Borg** can backup your stuff.
|
|
|
|
Encryption
|
|
==========
|
|
|
|
Oh yeah, that's the **first** thing I look at when I consider any suggested backup solution.
|
|
**Borg** offers built-in *encryption* and *authentication*.
|
|
You can read about it in details in the `docs <https://borgbackup.readthedocs.io/en/stable/usage/init.html#encryption-modes>`_.
|
|
|
|
So that's a check.
|
|
|
|
Compression
|
|
===========
|
|
|
|
This is another thing I look for in a suggested backup solution. And I'm happy to report that **Borg** has this under the belt as well.
|
|
**Borg** currently supports *LZ4*, *zlib*, *LZMA* and *zstd*. You can also tune the level of compression. Pretty neat !
|
|
|
|
Full Backup
|
|
===========
|
|
|
|
I've watched a few videos and read a bit of their documentation and they talk about **FULL BACKUP**.
|
|
Which means every time you run **Borg**, it will take a full backup of your stuff. A full backup at that point in time, don't forget.
|
|
The implication of this is that you have a versioned list of your backups, and you can go back in time to any of them.
|
|
|
|
Yes, you read that right. **Borg** does a full backup every time you run it. That's a pretty neat feature.
|
|
|
|
If you're a bit ahead of me, you were gonna say woooow there bud ! I have **Gigabytes** of data, what do you mean **FULL BACKUP**, you keep saying **FULL BACKUP**.
|
|
|
|
I mean **FULL BACKUP**, wait until you hear about the next feature.
|
|
|
|
Deduplication
|
|
=============
|
|
|
|
Booyah ! It has deduplication. Ain't that awesome. I've watched a presentation by the project's original maintainer explain this.
|
|
I have one thing to say. It's pretty good. How good, you may ask ?
|
|
|
|
My answer would be, good enough to fool me into thinking that it was taking snapshots of my data.
|
|
|
|
.. code:: text
|
|
|
|
-----------------------------------------------------------------------------
|
|
Original size Compressed size Deduplicated size
|
|
All archives: 34.59 GB 9.63 GB 1.28 GB
|
|
Unique chunks Total chunks
|
|
Chunk index: 47772 469277
|
|
|
|
|
|
It wasn't until I dug in deeper into the matter that I understood that it was a full backup and the deduping taking care of the rest.
|
|
|
|
Check
|
|
=====
|
|
|
|
**Borg** offers a way to vefiry the consistency of the repository and the archives within.
|
|
This way, you can make sure that your backups haven't been corrupted.
|
|
|
|
This is a very good feature, and a must in my opinion from a backup solution. **Borg** has *YOU* covered.
|
|
|
|
Restore
|
|
=======
|
|
|
|
A backup solution is nothing if you can't get your data backup.
|
|
**Borg** has a few ways for you to get your data. You can either create an *archive* file out of a backup.
|
|
You can export a file, a directory or the whole directory tree from a backup.
|
|
You can also, if you like, mount a backup and get stuff out.
|
|
|
|
.. warning::
|
|
|
|
Mounting a **Borg** backup is done using *fuse*
|
|
|
|
Conclusion
|
|
==========
|
|
|
|
**Borg** is a great tool for backup. It comes in an easily installable self-contained binary so you can use it, pretty much,
|
|
anywhere giving you no excuse *whatsoever* not to use it. Their documentation is very good, and **Borg** is easy to use.
|
|
It offers you all the features you need to do off-site and on-site backups of all your important data.
|
|
|
|
I'll be testing **Borg** moving forward for my data. I'll make sure to report back anything I find, in the future, related to the subject.
|