Skrivbordsapp + kommandorad · snapshot-backup
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.
Moraine 0.2.2 · skrivbordsapp + CLI · eller bygg från källkod med cargo build --release
Så fungerar det
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.
Klienten kör rsync -aAX --delete över SSH in i en ny <timestamp>/-mapp. Rättigheter, ACL:er och xattr följer med.
--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.
latest flyttas till den nya snapshoten. Automatisk gallring behåller de N senaste plus dagliga/veckovisa/månatliga enligt din policy.
Funktioner
En gemensam motor driver både CLI:t och skrivbordsappen. Samma konfiguration, samma snapshots, samma logg.
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-destBehå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 · monthlyBlä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ällSkapa flera scheman — varje timme, dagligen eller veckovis — och installera dem direkt i din crontab med ett klick.
→ crontabVarje backup, återställning och gallring skrivs till history.jsonl och visas i fliken History — med tid, mål och resultat.
Testa SSH-nyckeln, anslutningen, att alla källor finns och att destinationen går att skriva till — innan du litar på en backup.
moraine verifySe exakt vad som skulle överföras eller raderas innan något faktiskt händer. Gäller backup, återställning och gallring.
--dry-runrsync över SSH till din NAS, eller rclone för moln- och objektlagring. Samma snapshot-modell, samma flöde.
ssh · rcloneSkrivbordsappen (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 4Skrivbordsappen
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.
Redigera ett mål och kör det direkt — med en direktsänd rsync-logg längst ner.
Bygg upp flera scheman och skriv dem till din crontab — appen visar cron-uttrycket allteftersom du ställer in det.
Lista snapshots, bläddra i trädet och välj exakt vad du vill ha tillbaka. Filerna kopieras — ingenting raderas.
Varje körning blir en rad i loggen — så att du i efterhand kan se vad som hände, och när.
Kommandoraden
Föredrar du terminalen? Binären moraine gör exakt samma jobb — perfekt för cron och fjärrservrar.
Skriver en kommenterad exempelkonfiguration att utgå från.
Testar SSH-nyckeln, anslutningen, att källorna finns och att destinationen går att skriva till.
Kör backup för alla mål (eller ett valt). Automatisk gallring efter en lyckad körning.
Listar alla snapshots på målet, nyaste först.
Visar vilka snapshots gallringspolicyn skulle ta bort — innan något raderas.
Versionssträng med inbäddad git-hash och byggdatum från build.rs.
Ladda ner
Skrivbordsappen + CLI:t på Linux; CLI:t på macOS och Windows (skrivbordsappen kommer dit härnäst). Samma motor och samma konfiguration överallt.
Nu i officiella Debian. apt install moraine fungerar på unstable / testing (migrerar uppåt från sid; buildds täcker även arm64/armhf), 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:
thern.io pacman-repot — pacman -S moraine. Eller paketet / PKGBUILD.
thern.io DNF-repot — dnf install moraine, GPG-signerat (Fedora/RHEL/openSUSE).
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 · muslSkrivbordsappen 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.
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. Ett native aarch64-bygge (för arm64-skrivbord) kommer med nästa release.
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.
Kommandoradsklienten — enklast via Homebrew, som också drar in ett modernt rsync (macOS levereras med en gammal version). Eller tarballen för Apple Silicon. En universell .pkg-installer (Apple Silicon + Intel, till /usr/local) kommer med nästa release. GTK-skrivbordsappen är på väg till macOS.
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).
Bygg den själv med cargo build --release. Ren Rust, MIT-licens — allt ligger öppet på GitHub.
Rust · MITByggda och redan i repot — de tänds här så snart de är live i sina butiker.
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 en egen overlay; recept för macOS .pkg, FreeBSD, OpenBSD och NetBSD finns i packaging/.
Kom igång
Kör moraine init, fyll i värd, källor och gallring — och gör en --dry-run innan din första riktiga backup.
# 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
Snapshots som knappt tar någon diskplats, återställning på filnivå och en logg över allt som hänt.