Backup

Restic vs Borg til en Linux-server i en lille virksomhed

Du vil have krypteret backup af en eller nogle få Linux-servere til et andet sted, og mange af de sammenligninger, du finder, er flere år gamle eller citerer benchmarks, der modsiger hinanden. Versioner og status nedenfor er fra september 2026.

Det korte svar

Vælg efter destination. Brug restic, hvis backuppen skal til S3-kompatibelt objektlager, Backblaze B2, Azure eller Google Cloud Storage, eller hvis Windows-maskiner skal bruge samme værktøj. Brug Borg 1.4, hvis du tager backup over SSH til en vært, der kører Borg, fx BorgBase eller en Hetzner Storage Box, og vil have append-only håndhævet pr. SSH-nøgle. Begge deduplikerer, komprimerer og krypterer på klienten. Hold Borg 2 ude af produktion. I september 2026 er den stadig en beta, og udviklerne siger det selv.

Status for begge projekter i september 2026

restic 0.19.1 udkom 5. juli 2026. Repositoryformat 2, som har været standard siden 0.14.0, komprimerer med zstd, så enhver sammenligning, der siger, at restic ikke kan komprimere, er forældet. Borgs stabile linje er 1.4, i øjeblikket 1.4.5 fra juli 2026.

Borg 2 har været i beta siden august 2022. Den nyeste, 2.0.0b24, kom 2. september 2026, og projektets README siger, at den ikke skal bruges til backup i produktion, fordi en ny beta kan betyde, at du skal oprette repositories forfra. Når den udkommer, skal du planlægge efter disse ændringer:

Restic vs Borg i overblik

FunktionresticBorg 1.4
Stabil, september 20260.19.1 (5. juli 2026)1.4.5 (juli 2026); Borg 2 er stadig i beta
Skriver tilLokalt, SFTP, REST-server, S3-kompatibelt lager, B2, Azure, Google Cloud Storage, Swift, rcloneLokal sti, eller SSH til en vært, der kører Borg
KrypteringAltid slået til: AES-256-CTR med Poly1305-AESVælges ved init og ligger fast bagefter: AES-256-CTR med HMAC-SHA256 eller BLAKE2b; der findes ukrypterede tilstande
Komprimeringzstd, repositoryformat 2 (0.14.0 og senere)lz4 som standard; zstd, zlib, lzma
Append-onlyrest-server eller rclone med --append-only; på objektlager en nøgle, der kun kan slette låsefilerborg serve --append-only pr. SSH-nøgle
Frigørelse af pladsforget, derefter prune (pakker om; 5 procent ubrugt er tilladt)prune, derefter compact (tærskel på 10 procent)
CPUAlle kerner som standardEnkelttrådet
WindowsNative, med VSS-snapshotsWSL eller Cygwin, eksperimentelt
Wrapperresticprofileborgmatic

Destinationen afgør det meste

Borg 1.4 skriver til en lokal sti eller over SSH til en maskine, der kører borg serve. Den har ingen backend til objektlager; uden Borg i den anden ende falder dokumentationen tilbage på at montere et fjernt filsystem som sshfs. Det er fint, hvis du har et SSH-mål. BorgBase hoster Borg-repositories, og nu også restic-repositories, med en append-only-tilstand. En Hetzner Storage Box tilbyder Borg 1.1, 1.2 og 1.4 med 1.2 som standard, så angiv --remote-path=borg-1.4 for at få 1.4 i serverens ende.

restic kræver intet installeret på destinationen: objektlager, en hvilken som helst SFTP-server, sin egen REST-server eller hvad rclone nu kan nå. Efter vores mening er det den enkleste måde for en lille virksomhed at have en kopi hos en anden udbyder, i et andet fejldomæne, uden at drive en ekstra maskine.

Append-only: så en hacket server ikke kan slette sin historik

Borg håndhæver det pr. SSH-nøgle med en tvungen kommando (forced command). Nøglen på den server, der tages backup af, kører borg serve --append-only; en separat administrationsmaskine har en nøgle med fuld adgang.

# ~/.ssh/authorized_keys on the Borg server
# Key held by the backed-up server: can add archives, cannot compact them away
command="borg serve --append-only --restrict-to-repository /srv/borg/web1",restrict ssh-ed25519 AAAA... web1
# Key held by a separate admin machine: full access for prune and compact
command="borg serve --restrict-to-repository /srv/borg/web1",restrict ssh-ed25519 AAAA... admin

Faren er, at append-only i 1.x kun forbyder kompaktering. Nøglen med append-only kan stadig køre borg prune eller borg delete. Arkiverne forsvinder fra listen, men dataene bliver liggende, og du kan rulle repositoryet tilbage, så længe borg compact ikke har kørt siden. I append-only-tilstand gør compact ingenting og melder ingen fejl. Så tjek arkivlisten, før du kører compact med admin-nøglen, ellers bliver angriberens sletninger permanente.

restic er afhængig af backenden. rest-server og rclone serve restic tager begge --append-only, og restics dokumentation bemærker, at få andre backends tilbyder sådan en tilstand. På objektlager er det tilsvarende en adgangsnøgle, der kan skrive, men kun må slette restics låsefiler, med versionering på bucketen, så du kan hente overskrevne objekter tilbage. restics dokumentation anbefaler at køre forget og prune fra en separat, velbeskyttet klient.

En nøgle helt uden ret til at slette er ikke nok. I vores MinIO-test kunne restic ikke fjerne sin egen lås, så hver backup efterlod en, og admin-værtens forget, prune og check stoppede derefter med "repository is already locked" og exitkode 11. Da vi tillod s3:DeleteObject kun under locks/, var det løst, mens forget med serverens nøgle stadig fik Access Denied:

{
  "Version": "2012-10-17",
  "Statement": [
    { "Effect": "Allow", "Action": ["s3:ListBucket", "s3:GetBucketLocation"],
      "Resource": ["arn:aws:s3:::web1-backups"] },
    { "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject"],
      "Resource": ["arn:aws:s3:::web1-backups/*"] },
    { "Effect": "Allow", "Action": ["s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::web1-backups/locks/*"] }
  ]
}

Den anden udbredte opskrift, s3:DeleteObject overalt uden s3:DeleteObjectVersion på en versioneret bucket, gør sletninger til slettemarkører. På MinIO var det ikke nok at udelade retten til versioner. Nøglen fjernede stadig en version for altid, indtil vi tilføjede en eksplicit Deny for s3:DeleteObjectVersion. Test din udbyder, før du stoler på det. For Backblaze B2, se hvad B2 Object Lock beskytter med restic. Opdelingen styrer adgang og gør ingen data uforanderlige. Ulemperne, og hvordan Veeams uforanderlige repositories klarer sig til sammenligning, står i guiden om resticprofile.

En angriber, der kan tilføje snapshots, kan også tilføje falske, som fortrænger dine rigtige under en politik i stil med --keep-weekly, og den næste rutinemæssige forget sletter de gode snapshots. restics dokumentation anbefaler --keep-within til append-only-repositories.

# On the admin host only. The backed-up server's key cannot delete.
export RESTIC_REPOSITORY=s3:https://s3.example.com/web1-backups
restic forget --keep-within 90d --prune
restic check --read-data-subset=5%

Ingen af tilstandene beskytter fortroligheden. restics trusselsmodel siger, at en angriber på en append-only-vært kan opsnappe adgangskoden og dekryptere tidligere og fremtidige backups, og Borgs append-only-tilstand tillader stadig læsning.

Nøgler og adgangskoder

restic krypterer altid og gemmer hovednøglen i repositoryet, pakket ind én gang pr. adgangskode. restic key add opretter en ekstra adgangskode, som du kan opbevare offline. Mister du alle adgangskoder, er dataene væk.

Borg låser tilstanden fast ved borg init: repokey gemmer den krypterede nøgle i repositoryet, keyfile gemmer den i klientens hjemmemappe. Du skal altid bruge nøgle og adgangsfrase sammen, så eksportér nøglen med borg key export og opbevar den adskilt fra både repository og server. Bruger du keyfile-tilstand, og serveren dør, overlever backupperne, men nøglen gør ikke.

Prune, og hvad det koster

restics forget fjerner snapshots, og prune frigør plads ved at slette ubrugte pakkefiler og pakke delvist brugte om. Ompakning betyder, at restic henter pakkefilerne ned og uploader dem igen. Som standard tolererer prune 5 procent ubrugte data for at begrænse det arbejde. En backup, der starter, mens prune holder sin eksklusive lås, fejler med det samme med exitkode 11, medmindre du giver den --retry-lock, og på en versioneret bucket efterlader hver ompakning gamle versioner. Det er grunden til, at et restic-repository på Backblaze B2 bliver ved at vokse.

Siden Borg 1.2 markerer borg prune kun data som slettet, og borg compact frigør dem, som standard i segmenter, hvor der ville blive sparet mindst 10 procent. Compact kræver ingen nøgle i 1.x, så den kan køre på backupserveren.

Ydelse, uden lånte benchmarks

Ingen af projekterne udgiver en direkte sammenlignende benchmark, og tal fra tredjeparter er uenige, fordi de tester forskellige data, destinationer og indstillinger. restics dokumentation siger, at restic som standard bruger alle tilgængelige CPU-kerner. Borg 1.x udfører sit arbejde i en enkelt tråd; dokumentationen til 1.4 skriver det ikke direkte, men i vores testmiljø brugte en Borg-backup aldrig mere end én kernes CPU-tid. Borg dokumenterer til gengæld, at chunks- og files-indekserne ligger i RAM og vokser med repositoryet; restic udgiver ingen tilsvarende vejledning i dimensionering. Betyder hastigheden noget, så tag tid på en første backup og en fuld gendannelse af dine egne data med hvert værktøj.

Wrappere: borgmatic og resticprofile

Uanset værktøj, så kør det gennem en wrapper frem for en håndskrevet cron-linje. borgmatic 2.1.8 fra september 2026 har indbyggede hooks til at dumpe PostgreSQL, MySQL, MariaDB, MongoDB og SQLite, tage snapshots af ZFS, Btrfs og LVM og rapportere til Healthchecks, ntfy og andre. På en databaseserver er det det stærkeste praktiske argument for Borg.

resticprofile 0.33.1 fra april 2026 tilføjer profiler, tidsplaner med systemd eller cron, kørsler af opbevaringsregler og check, HTTP-hooks og output til Prometheus. Til databaser kører du dumpet som en kommando før backuppen eller bruger restics backup --stdin-from-command, som ikke opretter et snapshot, hvis dumpet fejler. Guiden om resticprofile i produktion gennemgår opsætningen.

Kopia og rustic, kort

Kopia 0.23.1 fra juni 2026 ligger nærmere restic. Det skriver til S3-kompatibelt lager, B2, Azure, Google Cloud Storage, SFTP og WebDAV, dokumenterer S3 Object Lock som beskyttelse mod ransomware og leveres med en officiel GUI. rustic 0.11.4 fra august 2026 er en genimplementering i Rust, der læser og skriver restics repositoryformat; dens egen README kalder restic det mere modne projekt.

Valget efter din situation

Din situationVælgBegrundelse
Backuppen skal til S3-kompatibelt lager, B2, Azure eller Google Cloud StorageresticBorg 1.4 har ingen backend til objektlager
Du har et SSH-mål til backup: BorgBase, en Hetzner Storage Box, en anden serverBorg 1.4Append-only håndhæves pr. SSH-nøgle på serveren
Windows-maskiner skal bruge samme værktøjresticBorg på Windows er eksperimentelt
En databaseserver, hvor wrapperen skal tage sig af dumpsBorg med borgmaticIndbyggede dump-hooks
Serveren må ikke kunne slette sin egen historik, og der er ingen backupserver at driverestic med en nøgle til objektlageret, der kun kan slette låsefilerUdbyderen håndhæver det; prune kører et andet sted
Du er fristet af Borg 2Borg 1.4 til produktionDet siger Borg-projektet selv
Brugere på desktopmaskiner vil have en grafisk brugerfladeKopiaOfficiel GUI

Wardios eget valg

Vi bruger restic, styret af resticprofile, på alle servere, vi driver. Backuppen går til S3-kompatibelt objektlager i et andet fejldomæne end serveren. Borg 1.4 har ingen backend til objektlager, så destinationen afgjorde valget frem for hastigheden. Med et SSH-mål ville Borg og en append-only-nøgle være et fornuftigt valg. Uanset hvad, så test en gendannelse, før du stoler på den.

Faldgruber

Sådan blev det testet. Den 23. september 2026 kørte vi restic 0.19.1 i containere med Debian 13.7 (trixie) under Docker på en Ubuntu 24.04-vært, mod et lokalt repository, SFTP på OpenSSH 10.0p2, rest-server 0.14.0 med og uden --append-only, rclone v1.75.1 med serve restic og rclone-backenden, og MinIO RELEASE.2025-09-07T16-13-09Z som S3-kompatibelt lager med begrænsede nøgler. Borg 1.4.5 og 2.0.0b24, installeret med pip på Python 3.13.5, skrev til lokale repositories og over SSH gennem de tvungne kommandoer ovenfor, og Borg 2 desuden til SFTP, MinIO og rclone. Vi installerede kun borgmatic 2.1.8 for at liste dens hooks. Ikke testet: rigtige konti hos Backblaze B2, Azure, Google Cloud Storage, Swift eller AWS S3, en Hetzner Storage Box, BorgBase, Windows, sshfs, og Kopia, rustic eller resticprofile ud over deres udgivelsesoplysninger og kildekode. AWS IAM kan behandle s3:DeleteObjectVersion anderledes end MinIO. Vi offentliggør ingen hastighedstal.

Kilder

  1. restic releases, restic-projektet på GitHub, 0.19.1 fra 5. juli 2026
  2. restic changelog, restic-projektet, posterne for 0.19.0 og 0.19.1
  3. Preparing a new repository, dokumentation til restic 0.19.1
  4. Backing up, dokumentation til restic 0.19.1
  5. Working with repositories, dokumentation til restic 0.19.1
  6. Tuning parameters, dokumentation til restic 0.19.1
  7. Removing backup snapshots, dokumentation til restic 0.19.1
  8. Encryption og References (design and threat model), dokumentation til restic 0.19.1
  9. rest-server README, restic-projektet på GitHub
  10. rclone serve restic, dokumentation til rclone
  11. Borg releases, BorgBackup-projektet på GitHub, 1.4.5 og 2.0.0b24
  12. Borg 2 README og Borg 2 upgrade notes and change log, BorgBackup-projektet
  13. borg serve (Borg 2 development documentation), BorgBackup-projektet
  14. Borg documentation, BorgBackup 1.4.5, herunder Quick start, General og Miscellaneous help (compression)
  15. borg init, borg compact og borg serve, dokumentation til BorgBackup 1.4.5
  16. Additional notes: append-only mode and rollback, dokumentation til BorgBackup 1.4.5
  17. Storage Box: SSH, rsync and BorgBackup, dokumentation fra Hetzner
  18. BorgBase, BorgBase
  19. borgmatic documentation og borgmatic on PyPI, 2.1.8 fra september 2026
  20. resticprofile, creativeprojects på GitHub, 0.33.1 fra 15. april 2026
  21. Kopia features, Ransomware protection, Repository Server og releases, Kopia-projektet
  22. rustic README, rustic-rs på GitHub, og rustic-rs on crates.io, 0.11.4 fra 18. august 2026

Spørgsmål

Er restic eller Borg bedst til en Linux-server?

Ingen af dem er bedre generelt. Destinationen afgør det. restic skriver direkte til S3-kompatibelt objektlager, Backblaze B2, Azure, Google Cloud Storage, SFTP eller sin egen REST-server og kører native på Windows. Borg 1.4 skriver til en lokal sti eller over SSH til en vært, der kører Borg, fx BorgBase eller en Hetzner Storage Box, hvor append-only kan håndhæves pr. SSH-nøgle. Begge deduplikerer, komprimerer og krypterer på klienten.

Er Borg 2.0 stabil endnu?

Nej. I september 2026 er den nyeste Borg 2-udgivelse 2.0.0b24, en beta udgivet 2. september 2026, og projektets README siger, at Borg 2 ikke skal bruges til backup i produktion. Betaversionerne kan ændre repositoryformatet, uden at der er nogen opgraderingsvej mellem dem. Borg 2 kan ikke bruge Borg 1.x-repositories direkte, så du kopierer arkiverne over med borg transfer. Den aktuelle stabile udgivelse er Borg 1.4.5.

Understøtter restic komprimering?

Ja, siden restic 0.14.0, der indførte repositoryformat version 2. Det format er standard for nye repositories og komprimerer med zstd. Flaget --compression tager off, fastest, auto, better eller max, med auto som standard; fastest og better kom med 0.19.0. Ældre repositories kan opgraderes med restic migrate upgrade_repo_v2. Derefter komprimerer restic nye data, mens eksisterende filindhold bliver liggende, som det er, indtil restic prune --repack-uncompressed skriver det om.

Er restic hurtigere end Borg?

Ingen af projekterne udgiver en benchmark mod det andet, og resultater fra tredjeparter er uenige, fordi de tester forskellige data, destinationer og indstillinger. Den klare forskel er tråde. restics dokumentation siger, at restic som standard bruger alle tilgængelige CPU-kerner, mens Borg 1.x udfører sit arbejde i en enkelt tråd, og i vores testmiljø brugte en Borg-backup aldrig mere end én kernes CPU-tid. Tag tid på en første backup og en fuld gendannelse af dine egne data med hvert værktøj, før du beslutter dig.

Hvor passer Kopia ind i restic vs Borg vs Kopia?

Kopia ligger tættere på restic end på Borg. Det skriver direkte til S3-kompatibelt lager, Backblaze B2, Azure, Google Cloud Storage, SFTP og WebDAV, og dokumentationen dækker begrænsede adgangsnøgler og S3 Object Lock som beskyttelse mod ransomware. Det leveres også med en officiel grafisk brugerflade. Maskiner, der forbinder direkte til lageret, deler én adgangskode til repositoryet, så hver af dem kan læse det hele. Kopias Repository Server giver i stedet hver bruger sit eget login og viser kun brugerens egne snapshots. Den seneste udgivelse i september 2026 er 0.23.1.

Er du i tvivl om, hvorvidt din nuværende backup kan gendannes?

Den gratis gennemgang ender med en skriftlig vurdering, der blandt andet fortæller, om din backup kan gendannes, uanset hvilket værktøj der skriver den. Se priserne.

Gratis servergennemgang