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.3.1 · 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 och Windows; CLI:t på macOS (skrivbordsappen kommer dit härnäst). Samma motor och samma konfiguration överallt.
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:
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.
Vill du ha en färdigbyggd binär i stället — utan kompilering — lägg till thern.io pacman-repot en gång:
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:
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.
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.
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. Sedan 0.3.0 finns även ett native aarch64-bygge, för arm64-skrivbord och enkortsdatorer som kör ett fullt GTK-skrivbord.
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.
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 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.
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 vår egen overlay och openSUSE från openSUSE Build Service; recept för 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
FAQ
Svar på det folk brukar vilja veta innan de anförtror sina filer åt ett backupverktyg.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Snapshots som knappt tar någon diskplats, återställning på filnivå och en logg över allt som hänt.