Borg

Allikas: Kuutõrvaja

Info

Borg on deduplikeeriv, pakkiv ja krüpteeriv varundustarkvara mis sisaldab endas kõiki häid omadusi mida omab rsync hardlinkimine ja veel palju muid varundust hõlbustavaid võimalusi.

Paigaldamine

Arch linuxis on olemas pakk borg, FreeBSD all tundub tuleb paigaldada py-borgbackup, debianis apt install borgbackup. Võimalik on tõmmata ka binaarversioon ja seda otse opsüsteemis käivitada https://github.com/borgbackup/borg/releases

Enne kui backupima saab asuda tuleb initsialiseerida varundusserveris repo, kõige lihtsam viis on selleks

borg init /path/to/repo

Uut varukoopiat saab initsialiseerida ka kliendipoolt, mõistlik on seejuures võtta kasutusele võtmefail

borg init --encryption=keyfile user@hostname:backup

Backupime samas serveris srv kausta reposse esmaspäev

borg create /path/to/repo::esmaspaev /srv 

Tekitame teise varukoopia nimega teisipaev

borg create -v --stats /path/to/repo::teisipaev /srv

See varukoopia läks juba palju kiiremalt kuna andmed olid juba enamuses olemas

Vaatame mis varukoopiad olemas

borg list /path/to/repo

Vaatame esmaspaeva arhiivi sisu

borg list /path/to/repo::esmaspaev

Taastame esmaspaeva varukooia

borg extract /path/to/repo::esmaspaev

Kaugel asuvasse varundusserverisse varukoopiate tegemine käib üle ssh

borg init user@hostname:/path/to/repo

Ja siis näiteks

borg create -v --stats borg@varundaja:/srv/borgtest/backup::'{hostname}-{now:%Y-%m-%d}' /srv/
------------------------------------------------------------------------------
Archive name: post.zoo.tartu.ee-2016-09-19
Archive fingerprint: a39758a9e1b8dd894c673c1bfh6e3f0fd113c181a6aeffcc9165b2336c06040b
Time (start): Mon, 2016-09-19 14:11:39
Time (end):   Tue, 2016-09-20 06:11:28
Duration: 15 hours 59 minutes 48.46 seconds
Number of files: 3523368
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
This archive:              240.67 GB            240.83 GB            158.99 GB
All archives:              240.67 GB            240.83 GB            158.99 GB

                       Unique chunks         Total chunks
Chunk index:                 2601470              3590384
------------------------------------------------------------------------------

Teist korda järgmine päev

------------------------------------------------------------------------------
Archive name: postimaja.eenet.ee-2016-09-20
Archive fingerprint: 8086158b4941402184d8ec59f0cc6078f1efa0b8bd303405aae913ed2d1f4a8f
Time (start): Tue, 2016-09-20 13:41:39
Time (end):   Tue, 2016-09-20 17:18:03
Duration: 3 hours 36 minutes 24.22 seconds
Number of files: 3520353
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
This archive:              240.74 GB            240.89 GB            885.74 MB
All archives:              481.41 GB            481.72 GB            159.88 GB

                       Unique chunks         Total chunks
Chunk index:                 2608975              7177674
------------------------------------------------------------------------------

Ühe repositooriumi piires lähevad kõik nn "tükid" v "chunks" deduplikeerimisele.

Vaikimisi kasutab borg krüpteerimist, selle keelamiseks (ei ole ametliku manuaali järgi küll soovitatav)

$ borg init --encryption=none /path/to/repo

Prune käsk kustutab kõik arhiivid mis ei vasta etteantud võtmetele ja mõeldud on üleliigsete backupide automaatseks eemaldamiseks. Näiteks käsk mis hoiab alles viimased 10 päeva ja neli eelmise nädala varukoopiat

$ borg prune -v --list --keep-within=10d --keep-weekly=4 --keep-monthly=-1 /path/to/repo

Varukoopia protsessi automatiseerimiseks tuleb kasutusele võtta ssh võtmed

Skript automaatse varukoopia tegemiseks serveri kaustadest /home ja /var/www

#!/bin/sh
REPOSITORY=username@remoteserver.com:backup

# Backup all of /home and /var/www except a few
# excluded directories
borg create -v --stats                          \
    $REPOSITORY::'{hostname}-{now:%Y-%m-%d}'    \
    /home                                       \
    /var/www                                    \
    --exclude '/home/*/.cache'            \
    --exclude '*.pyc'

borg prune -v $REPOSITORY --prefix '{hostname}-' \
    --keep-daily=7 --keep-weekly=4 --keep-monthly=6

Mõistlik oleks aegajalt (nt kord kuus) lasta borgil ka kogu repositoorium üle kontrollida, selleks serveris

borg check /srv/borgtest/

https://github.com/witten/borgmatic skript backupide lihtsustamiseks