Skrivbordsapp + kommandorad · snapshot-backup

Ett backupverktyg — en skrivbordsapp och en kommandorad.

En liten, snabb backupklient i Rust med en integrerad GTK-skrivbordsapp och ett skriptbart CLI — samma motor, samma konfiguration. Hårdlänkade snapshots (ögonblicksbilder) över SSH gör att varje körning ser ut som ett komplett filträd, men bara det som ändrats tar ny plats. Återställ vad som helst, från vilken som helst av dem.

GTK-skrivbordsapp moraine CLI rsync --link-dest rclone-backend

Moraine 0.3.1 · skrivbordsapp + CLI · eller bygg från källkod med cargo build --release

Moraine — Quick Backup
Moraine-skrivbordsappen, fliken Quick Backup: ett mål är valt, rclone-backenden används och en snapshot-backup körs i den direktsända loggen.

Så fungerar det

Kompletta filträd. En bråkdel av disken.

Varje körning skapar en ny mapp med namnet <timestamp>/. Filer som inte ändrats sedan förra gången blir hårdlänkar — samma data på disken, men synliga i varje snapshot. En symlänk vid namn latest pekar alltid på den senaste.

äldre nyare → hårdlänkar — oförändrade filer delar disk 06-19 ↑ gallrad 06-22 06-24 06-25 06-26 latest →
/volume1/backups/nas/ — fem snapshots, en latest-symlänk 2026-06-19T… · 06-22 · 06-24 · 06-25 · 06-26
01 — körning

rsync speglar källan

Klienten kör rsync -aAX --delete över SSH in i en ny <timestamp>/-mapp. Rättigheter, ACL:er och xattr följer med.

02 — länkning

Oförändrade filer hårdlänkas

--link-dest=../latest låter filer som inte ändrats peka på föregående snapshot. Ny diskplats används bara för det som faktiskt skiljer sig.

03 — gallring

latest pekas om, gammalt gallras

latest flyttas till den nya snapshoten. Automatisk gallring behåller de N senaste plus dagliga/veckovisa/månatliga enligt din policy.

Funktioner

Allt en hemmaserver behöver — inget mer.

En gemensam motor driver både CLI:t och skrivbordsappen. Samma konfiguration, samma snapshots, samma logg.

Hårdlänkade snapshots

Varje backup är ett komplett filträd som går att bläddra i. Oförändrade filer delar diskutrymme via hårdlänkar — historiken kostar alltså nästan ingenting.

rsync --link-dest

GFS-gallring & autogallring

Behåll de N senaste plus den nyaste per dag, vecka och månad. Gallringen körs automatiskt efter varje lyckad backup.

keep_last · daily · weekly · monthly

Selektiv återställning

Bläddra i en snapshots filträd och välj exakt vad du vill ha tillbaka — eller hela trädet. Ingenting i destinationsmappen raderas någonsin.

bläddra · välj · återställ

Schemaläggning

Skapa flera scheman — varje timme, dagligen eller veckovis — och installera dem direkt i din crontab med ett klick.

→ crontab

Körhistorik

Varje backup, återställning och gallring skrivs till history.jsonl och visas i fliken History — med tid, mål och resultat.

history.jsonl

Verifiering

Testa SSH-nyckeln, anslutningen, att alla källor finns och att destinationen går att skriva till — innan du litar på en backup.

moraine verify

Testkörning överallt

Se exakt vad som skulle överföras eller raderas innan något faktiskt händer. Gäller backup, återställning och gallring.

--dry-run

Två backends

rsync över SSH till din NAS, eller rclone för moln- och objektlagring. Samma snapshot-modell, samma flöde.

ssh · rclone

Ett genomarbetat skrivbordsgränssnitt

Skrivbordsappen (byggd med GTK 4) har ett rent, mörkt designsystem — kort, en turkos accentfärg och mjuka skuggor — med systemets egna filväljare och dialoger.

GTK 4

Skrivbordsappen

Fyra flikar. Hela arbetsflödet.

Samma motor som CLI:t, med ett grafiskt gränssnitt för att redigera mål, schemalägga, återställa och följa upp körningar. Klicka runt nedan.

Moraine
Moraine
Snapshot backups over SSH · v0.3.1
Quick BackupScheduleRestoreHistorySettingsHelp
# snapshot 2026-06-26T08-30-12
sending incremental file list ...
✓ 24,910 files · 312.4M sent · snapshot done

Quick Backup

Redigera ett mål och kör det direkt — med en direktsänd rsync-logg längst ner.

  • Värd, användare, port, SSH-nyckel och destination i ett och samma formulär
  • Källor och exkluderingsmönster som redigerbara listor
  • Gallring per mål + Prune now
  • Test connection, Dry run och Run backup
Moraine
Moraine
Snapshot backups over SSH · v0.3.1
Quick BackupScheduleRestoreHistorySettingsHelp
Installed 2 schedule(s) to crontab

Schedule

Bygg upp flera scheman och skriv dem till din crontab — appen visar cron-uttrycket allteftersom du ställer in det.

  • Varje timme, dagligen eller veckovis per mål
  • Direktförhandsvisning av cron-uttrycket
  • Aktivera/inaktivera utan att radera schemat
  • Install to crontab aktiverar allt på en gång
Moraine
Moraine
Snapshot backups over SSH · v0.3.1
Quick BackupScheduleRestoreHistorySettingsHelp
2 item(s) selected in documents/

Restore

Lista snapshots, bläddra i trädet och välj exakt vad du vill ha tillbaka. Filerna kopieras — ingenting raderas.

  • Snapshots med den nyaste först, den senaste märkt newest
  • Bläddra mapp för mapp med brödsmulor
  • Kryssa i enskilda filer, eller lämna tomt för hela snapshoten
  • En föreslagen återställningsmapp så att levande data aldrig skrivs över
Moraine
Moraine
Snapshot backups over SSH · v0.3.1
Quick BackupScheduleRestoreHistorySettingsHelp
Run history
Refresh
backupnassnapshot 2026-06-26T08-30-1208:30:14✓
prunenasdeleted 1, kept 1308:30:15✓
restorenas2026-06-25T02-00 → ~/restoreYesterday 21:12✓
backupoffsitessh: connection timed outYesterday 03:00✗
backupnassnapshot 2026-06-25T02-00-032 days ago✓
5 log entries

History

Varje körning blir en rad i loggen — så att du i efterhand kan se vad som hände, och när.

  • Backup, återställning och gallring med färgkodade märken
  • Tid, mål och en kort detalj (snapshot-id, antal eller felmeddelande)
  • Ett tydligt ✓ / ✗ för resultatet
  • Sparas som history.jsonl bredvid din konfiguration

Kommandoraden

Fem kommandon, alla skriptbara.

Föredrar du terminalen? Binären moraine gör exakt samma jobb — perfekt för cron och fjärrservrar.

moraine init

Skriver en kommenterad exempelkonfiguration att utgå från.

moraine verify --target nas

Testar SSH-nyckeln, anslutningen, att källorna finns och att destinationen går att skriva till.

moraine run --dry-run

Kör backup för alla mål (eller ett valt). Automatisk gallring efter en lyckad körning.

moraine list --target nas

Listar alla snapshots på målet, nyaste först.

moraine prune --dry-run

Visar vilka snapshots gallringspolicyn skulle ta bort — innan något raderas.

moraine --version

Versionssträng med inbäddad git-hash och byggdatum från build.rs.

Ladda ner

Ladda ner Moraine 0.3.1

Skrivbordsappen + CLI:t på Linux och Windows; CLI:t på macOS (skrivbordsappen kommer dit härnäst). Samma motor och samma konfiguration överallt.

Debian / Ubuntu i Debian

Nu i officiella Debian. apt install moraine fungerar på testing och unstable — paketet har migrerat till testing på alla arkitekturer Debian bygger för (amd64, arm64, armhf, i386, ppc64el, riscv64, s390x, loong64) — och når Ubuntu/Mint när de synkar. För stable — eller auto-uppdatering överallt redan idag — lägg till thern.io-APT-repot:

curl -fsSL https://cdn.thern.io/keys/thern-cdn-keyring.gpg | sudo tee /usr/share/keyrings/thern-cdn-keyring.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/thern-cdn-keyring.gpg] https://cdn.thern.io/deb stable main" | sudo tee /etc/apt/sources.list.d/thern-cdn.list sudo apt update && sudo apt install moraine
officiella Debian · thern.io APT-repo · GTK-app · rsync · ssh

Arch Linux app + CLI

Finns på AUR — paru -S moraine (eller yay) bygger det från källkod som vilket AUR-paket som helst, och nya versioner kommer med den vanliga uppgraderingen.

paru -S moraine

Vill du ha en färdigbyggd binär i stället — utan kompilering — lägg till thern.io pacman-repot en gång:

curl -fsSL https://cdn.thern.io/keys/thern-cdn-pacman.conf | sudo tee -a /etc/pacman.conf sudo pacman -Sy moraine
AUR · pacman-repo · GTK-app · rsync · ssh · rclone

Fedora / RPM app + CLI

thern.io DNF-repot — dnf install moraine, GPG-signerat, för Fedora och RHEL. På Fedora finns dessutom ett Copr som byggs om från det här repot vid varje release:

sudo curl -fsSL -o /etc/yum.repos.d/thern-cdn.repo https://cdn.thern.io/keys/thern-cdn.repo sudo dnf install moraine
sudo dnf copr enable jonaz/moraine && sudo dnf install moraine
DNF-repo · Copr · GTK-app · rsync · ssh · rclone

openSUSE app + CLI

Byggt för Tumbleweed på openSUSE Build Service. Lägg till förrådet en gång så håller zypper Moraine uppdaterat tillsammans med resten av systemet.

sudo zypper ar https://download.opensuse.org/repositories/home:/TheJonaz/openSUSE_Tumbleweed/home:TheJonaz.repo sudo zypper in moraine
Build Service · Tumbleweed · GTK-app · rsync · ssh · rclone

Gentoo app + CLI

Från vår egen overlay — lägg till den en gång så bygger emerge Moraine från källkod som allt annat på systemet. USE="-gui" ger dig CLI:t utan att dra in GTK.

sudo eselect repository add moraine git https://github.com/TheJonaz/moraine-overlay.git sudo emaint sync -r moraine sudo emerge -av app-backup/moraine
overlay · USE=gui · rsync · ssh · rclone

Alpine Linux app + CLI

Bygg paketet från APKBUILD med abuild, och installera det sedan med apk. Både skrivbordsappen och CLI:t, på musl.

GTK-app · rsync · ssh · rclone · musl

Flatpak App + CLI

Skrivbordsappen på vilken distribution som helst, i sandlåda, med rsync, ssh och rclone inbyggda — inget som behöver matcha ditt system. Serveras från vårt eget arkiv på thern.io-CDN:en, signerat med samma GPG-nyckel som APT- och DNF-arkiven.

flatpak remote-add --if-not-exists moraine https://cdn.thern.io/moraine.flatpakrepo
flatpak install moraine io.thern.moraine
x86-64 & arm64 · GTK-app · signerat arkiv · sandlåda

AppImage alla distributioner

En enda fil, ingen installation, ingen pakethanterare — ladda ner, gör den körbar, kör. GTK följer med i paketet, så skrivbordsappen fungerar likadant på vilken distribution som helst. Den kräver glibc 2.39 eller nyare (Ubuntu 24.04+, Debian 13+, Fedora 40+, Arch och de rullande distributionerna). Har du något äldre — ta Flatpaken eller .deb-paketet istället. Sedan 0.3.0 finns även ett native aarch64-bygge, för arm64-skrivbord och enkortsdatorer som kör ett fullt GTK-skrivbord.

chmod +x moraine-x86_64.AppImage && ./moraine-x86_64.AppImage
GTK-app · portabel · x86-64 & arm64

Snap CLI

Kommandoradsklienten på valfri distribution med snapd, med rsync, ssh och rclone inbyggda. Strikt sandlådad: din hemmapp, externa diskar och alla fjärrbackender fungerar direkt. Att säkerhetskopiera dolda filer i hemmappen (~/.ssh, ~/.config, ~/.gnupg) kräver en behörighet som ännu väntar på godkännande i butiken — använd .deb, Flatpak eller AppImage så länge om du behöver dem.

sudo snap install moraine
sudo snap connect moraine:ssh-keys
CLI · strikt sandlåda · rsync · ssh · rclone

Raspberry Pi CLI

En perfekt alltid-på-burk för backuper. De här byggena är statiskt länkade, så en och samma fil kör på vilken Raspberry Pi OS som helst — inga beroenden att matcha, inget att kompilera. Välj arm64 för en Pi 3/4/5 med 64-bitarssystem, armv7 för ett 32-bitars.

uname -m  # aarch64 → arm64 · armv7l → armv7
CLI · rsync · ssh · rclone · statisk

macOS CLI

Kommandoradsklienten — enklast via Homebrew, som också drar in ett modernt rsync (macOS levereras med en gammal version). Eller den universella .pkg-installeraren — Apple Silicon och Intel i samma fil, installeras i /usr/local. Den är osignerad, så macOS stoppar första körningen: Ctrl-klicka på .pkg-filen och välj Öppna, eller släpp fram den under Systeminställningar → Integritet och säkerhet. GTK-skrivbordsappen är på väg till macOS.

brew install TheJonaz/moraine/moraine
universell .pkg · Homebrew · arm64-tarball · rclone

Windows App + CLI

Skrivbordsappen för x64 — ett installationsprogram som med ett klick ger dig hela GTK-appen, systemets egna fönsterkontroller och Moraine-ikonen. Eller kommandoradsklienten (ett installationsprogram som lägger till moraine i din PATH, winget / Scoop, eller den vanliga zip-filen). Schemaläggning via Task Scheduler; för rsync/SSH använder du WSL, eller rclone-backenden (SFTP/FTP/SMB/moln).

winget install TheJonaz.Moraine
scoop install moraine
choco install moraine
Skrivbordsapp · Task Scheduler · winget · Scoop · rclone

Källkod

Bygg den själv med cargo build --release. Ren Rust, MIT-licens — allt ligger öppet på GitHub.

Rust · MIT

Kommer snart paketeringen klar · väntar på granskning i butikerna

Byggda och redan i repot — de tänds här så snart de är live i sina butiker.

FreeBSD port · CLI OpenBSD ports · CLI NetBSD pkgsrc · CLI Nix / NixOS app + CLI Docker container · CLI

Paketen serveras från thern.io-CDN:en (GPG-signerade APT/DNF/pacman/Flatpak-repon) · varje bygge finns också på GitHub Releases, verifierat i CI. Gentoo levereras från vår egen overlay och openSUSE från openSUSE Build Service; recept för FreeBSD, OpenBSD och NetBSD finns i packaging/.

Kom igång

En TOML-fil. Ett block per mål.

Kör moraine init, fyll i värd, källor och gallring — och gör en --dry-run innan din första riktiga backup.

moraine.toml
# Ett eller flera [[target]]-block.
[[target]]
name   = "nas"
host   = "192.168.1.50"
user   = "backup"
port   = 22
key    = "~/.ssh/backup_ed25519"
dest   = "/volume1/backups"
sources = [
  "/home/jonaz/dokument",
  "/home/jonaz/bilder",
]
exclude = [ "*.tmp", "node_modules" ]

# Behåll de 5 senaste + GFS
[target.retention]
keep_last    = 5
keep_daily   = 7
keep_weekly  = 4
keep_monthly = 6

FAQ

Vanliga frågor

Svar på det folk brukar vilja veta innan de anförtror sina filer åt ett backupverktyg.

Är Moraine gratis?

Ja. Moraine är gratis och öppen källkod under MIT-licensen — ingen betalversion, inget konto som krävs och inga funktioner undanhållna. Hela källkoden finns på GitHub.

Hur sparar hårdlänkade snapshots diskutrymme?

Varje körning skapar en ny tidsstämplad mapp som ser ut som en komplett kopia av dina filer. Filer som inte ändrats sedan förra körningen lagras som hårdlänkar till den (rsyncs --link-dest) och tar därför inget extra utrymme. Bara det som faktiskt ändrats kostar något.

Kan jag återställa en enskild fil i stället för allt?

Ja. I skrivbordsappens Restore-flik bläddrar du i valfri snapshots filträd och bockar för enskilda filer eller mappar. Från kommandoraden är en snapshot en helt vanlig katalog, så rsync eller cp fungerar. En återställning raderar aldrig något på målet — den lägger bara till och skriver över.

Vilka operativsystem fungerar Moraine på?

Både skrivbordsappen och kommandoradsklienten körs på Linux och Windows. På macOS finns CLI:t idag, och skrivbordsappen är på gång. Det finns även native-byggen för Raspberry Pi i arm64 och armv7.

Behöver jag en NAS, eller fungerar det mot molnlagring?

Båda fungerar. SSH/rsync-backenden säkerhetskopierar till allt du kan SSH:a till — en NAS, en VPS eller en annan dator. rclone-backenden täcker moln- och objektlagring, bland annat S3, Backblaze B2, Google Drive, WebDAV, SMB och FTP.

Hur skiljer sig Moraine från Borg eller restic?

Moraine lagrar vanliga katalogträd i stället för ett eget arkivformat. Du kan öppna en snapshot i vilken filhanterare som helst, kopiera ut filer med vanliga verktyg och läsa den på en dator som aldrig haft Moraine installerat. Borg och restic deduplicerar och krypterar in i sitt eget arkiv, vilket är mer utrymmeseffektivt och krypterat i vila, men bara läsbart via deras egna verktyg.

Vad händer om en säkerhetskopiering avbryts?

Inget halvfärdigt blir någonsin en snapshot. Varje körning byggs i ett dolt arbetsområde och görs synlig först när varenda fil överförts, så listning, verifiering, återställning och gallring ignorerar alla ofullständiga körningar. En avbruten körning kan inte bli ”den senaste snapshoten” och kan inte lura gallringen att radera en hel.

Är min säkerhetskopia krypterad?

Under överföring, ja — SSH-backenden går över SSH. I vila beror det på målet: rclone- och FTP-backenderna kan kryptera med rclones crypt, med ett lösenord och valfritt salt per mål. SSH-backenden skriver vanliga filer, så kryptera målvolymen om det är viktigt för dig.

Hur kör jag säkerhetskopiering automatiskt?

Appens Schedule-flik skriver crontab-rader på Linux och macOS, och Task Scheduler-jobb på Windows. Från kommandoraden pekar du cron eller en systemd-timer på moraine run. En lyckad körning gallrar målet efteråt, så en enda schemalagd rad både säkerhetskopierar och städar.

Redo att skydda din hemmaserver?

Snapshots som knappt tar någon diskplats, återställning på filnivå och en logg över allt som hänt.

↓ Ladda ner Moraine

Varför Windows varnar för den här nedladdningen

Moraines Windows-installerare är inte kodsignerad ännu, så Microsoft Defender SmartScreen — och Edge — flaggar den precis som de flaggar alla nya appar från en fristående utvecklare. Varningen handlar om den saknade signaturen, inte om något som hittats i filen. Ett kodsigneringscertifikat (via SignPath Foundations program för öppen källkod) är på väg.

Den är säker att installera: Moraine är öppen källkod (MIT). Varje bygge kompileras öppet i GitHub Actions CI direkt från källkoden, och exakt samma fil finns också på GitHub Releases — så du kan verifiera den byte för byte.