117 lines
5.6 KiB
Org Mode
117 lines
5.6 KiB
Org Mode
#+BEGIN_COMMENT
|
|
.. 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
|
|
#+END_COMMENT
|
|
|
|
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
|
|
[[https://www.borgbackup.org/][Borg]] is defined as a
|
|
|
|
#+BEGIN_QUOTE
|
|
Deduplicating archiver with compression and encryption
|
|
#+END_QUOTE
|
|
|
|
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.
|
|
|
|
#+BEGIN_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>
|
|
#+END_HTML
|
|
|
|
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 [[https://borgbackup.readthedocs.io/en/stable/usage/init.html#encryption-modes][docs]].
|
|
|
|
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.
|
|
|
|
#+BEGIN_EXAMPLE
|
|
-----------------------------------------------------------------------------
|
|
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
|
|
#+END_EXAMPLE
|
|
|
|
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.
|
|
|
|
#+BEGIN_EXPORT html
|
|
<div class="admonition warning">
|
|
<p class="admonition-title">warning</p>
|
|
#+END_EXPORT
|
|
Mounting a *Borg* backup is done using /fuse/
|
|
#+BEGIN_EXPORT html
|
|
</div>
|
|
#+END_EXPORT
|
|
|
|
* 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.
|