Så konfigurerar du Borg-pruning och komprimering utan långa säkerhetskopieringsavbrott

Eva Wong är Teknisk skribent och den boende fixaren på ZimaSpace. En livslång nörd med en passion för hemma-labb och öppen källkod, hon specialiserar sig på att översätta komplexa tekniska koncept till tillgängliga, praktiska guider. Eva tror att självhosting ska vara roligt, inte skrämmande. Genom sina handledningar ger hon gemenskapen verktyg att avmystifiera hårdvaruinstallationer, från att bygga sin första NAS till att bemästra Docker-containrar.

För att undvika långa avbrott mellan Borg-säkerhetskopieringar bör du köra gallring av lagrade versioner efter en lyckad säkerhetskopiering, men schemalägga komprimering av arkivet mer sällan och utanför det huvudsakliga säkerhetskopieringsfönstret. Borg 1.4 separerar radering av arkiv från fysisk frigöring av utrymme, så det finns inget krav på att köra borg compact efter varje borg prune.

Den här guiden utgår från den aktuella stabila kommandomodellen i Borg 1.4.x. Borg 2 ändrar semantiken för arkiv och säkerhetskopior på flera områden, så kontrollera den installerade versionen innan du kopierar automatisering från en annan huvudversion.

Bekräfta Borg-versionen och arkivet

borg --version
borg info /mnt/backup/borg-repo
borg list /mnt/backup/borg-repo

I Borgs FAQ står det att Borg använder ett lås för hela arkivet och att endast en process kan ha skrivåtkomst åt gången. Om en långvarig komprimering överlappar nästa schemalagda säkerhetskopiering väntar säkerhetskopieringen på låset eller misslyckas när tidsgränsen för låset löper ut.

Definiera lagringen med en testkörning först

borg prune är destruktivt för arkivhistoriken. Borgs dokumentation om prune rekommenderar starkt att du testar med --dry-run och --list.

borg prune   --dry-run   --list   --keep-daily 7   --keep-weekly 4   --keep-monthly 6   --glob-archives '{hostname}-*'   /mnt/backup/borg-repo

Om ett arkiv innehåller säkerhetskopior från flera maskiner eller datamängder är arkivfiltret nödvändigt. Utan ett begränsande filter betraktar Borg 1.4 alla arkiv i arkivet som kandidater för samma regler för lagring.

Kör endast prune efter en lyckad säkerhetskopiering

#!/bin/sh
set -eu
REPO=/mnt/backup/borg-repo
ARCHIVE='{hostname}-{now:%Y-%m-%d_%H-%M}'

borg create --stats "$REPO::$ARCHIVE" /srv/data

borg prune   --list   --keep-daily 7   --keep-weekly 4   --keep-monthly 6   --glob-archives '{hostname}-*'   "$REPO"

Kör inte prune för att en schemaläggare har startat det; kör prune för att en ny säkerhetskopiering har slutförts utan fel och lagringspolicyn redan har validerats.

-15% OFF
Single board computer zimaboard2

Förstå varför prune inte frigör utrymme omedelbart

Sedan Borg 1.2 är komprimering separerad från normala kommandon som skriver till arkivet. Borgs separata kommentarer om komprimering förklarar att borttagning eller rensning av arkiv inte omedelbart återvinner allt diskutrymme i arkivet.

borg create
    |
nytt arkiv har verkställts
    |
borg prune
    |
gamla arkiv borttagna från lagringsuppsättningen
    |
borg compact
    |
outnyttjat segmentutrymme återvunnet

Detta är användbart vid schemaläggning eftersom dagliga säkerhetskopieringar inte behöver betala hela kostnaden för att skriva om delvis använda arkivsegment.

Schemalägg compact mer sällan än prune

  • backup: varje natt;
  • prune: efter varje lyckad säkerhetskopiering eller några gånger i veckan;
  • compact: en gång i veckan under en lugn period;
  • fullständig kontroll av arkivet: enligt ett separat och mer sällan förekommande schema.
# Daglig säkerhetskopiering + rensning
0 1 * * * /usr/local/sbin/borg-backup

# Komprimering varje vecka
0 4 * * 0 /usr/local/sbin/borg-compact

Om säkerhetskopieringar ofta körs i flera timmar kan du flytta komprimeringen längre bort i tiden eller använda en timer med uttryckliga beroenden.

Använd standardtröskeln för compact innan du tvingar fram maximala omskrivningar

Den aktuella dokumentationen för compact använder som standard en tröskel på 10 %.

borg compact --progress /mnt/backup/borg-repo

Det standardvärdet är en bra utgångspunkt när din prioritet är ett kort underhållsfönster. Undvik att automatiskt använda --threshold 0; den skriver om närhelst utrymme kan sparas och kan vara betydligt långsammare i ett stort arkiv.

Förhindra att underhåll krockar med nästa säkerhetskopiering

Om ett jobb legitimt kan behöva vänta på en annan Borg-process, anger du en begränsad låsetid:

borg --lock-wait 1800 create   /mnt/backup/borg-repo::'{hostname}-{now}'   /srv/data

Använd inte en mycket lång väntetid på låset som ersättning för bra schemaläggning. Övervaka när säkerhetskopieringen faktiskt startar och slutar.

Om flera klienter delar ett arkiv bör deras scheman spridas ut. I Borgs FAQ står det att flera arkiv kan minska konkurrensen om låset när deduplicering mellan klienter inte är viktig.

Använd snabbstatistik när rapporteringen gör prune långsammare

Borg 1.4.5 lade till --quick-stats för att skapa, radera och rensa, och undvik långsammare statistik för hela arkivet när den inte behövs.

borg prune   --quick-stats   --keep-daily 7   --keep-weekly 4   --keep-monthly 6   --glob-archives '{hostname}-*'   /mnt/backup/borg-repo

Håll ledigt utrymme tillgängligt innan du behöver compact

Vänta inte tills arkivets filsystem har noll ledigt utrymme. Borg kan inte tillförlitligt utföra normalt skrivarbete i arkivet på ett helt fullt filsystem.

df -h /mnt/backup
borg info /mnt/backup/borg-repo

För en bredare NAS-säkerhetskopieringsplan är ZimaOS 3-2-1-guiden för säkerhetskopiering en användbar påminnelse om att arkivets kvarhållning bara är ett lager i säkerhetskopieringsdesignen.

Validera schemat innan du litar på det

  • Skapade varje säkerhetskopiering ett nytt arkiv?
  • Kördes prune endast efter lyckade säkerhetskopieringar?
  • Överensstämde kvarhållningsuppsättningen med planen för torrkörningen?
  • Blev veckovis compact klar före nästa säkerhetskopiering?
  • Ökade det lediga utrymmet efter compact?
  • Tillbringade något jobb oväntat lång tid med att vänta på Borg-låset?

Om compact upprepade gånger överlappar nästa säkerhetskopiering, minska komprimeringsfrekvensen, behåll standardtröskeln, flytta compact till ett lugnare tidsfönster eller dela upp orelaterade arbetsbelastningar i separata arkiv.

Ett Borg-underhållsmönster med korta luckor

DAGLIGEN
01:00  borg create
        |
        +-- lyckades --> borg prune
        |
        +-- fel --> behåll gamla arkiv, avisera

VECKOVIS
04:00  borg compact

PERIODISKT
        borg check
        återställningstest av valda filer

Den centrala regeln är enkel: prune skyddar lagringspolicyn; compact återtar lagringsutrymme; de behöver inte köras med samma frekvens.

Support och tips

Mer att läsa

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.