Säkerhetskopiering med restic
Efter att använt rsync
för säkerhetskopiering i många år började jag se mig
om efter nya alternativ. Det är inget fel på rsync
– det har fungerat
perfekt för mina ändamål under lång tid. Men det finns en del nackdelar.
Den första är att det finns ingen historik inbyggt. Detta måste man lösa själv, antingen med ett filsystem som stöder snapshots, eller genom att rotera målkatalogen. Den andra nackdelen är att säkerhetskopian tar lika mycket plats – eller mer – som originalet.
Den tredje nackdelen är att man måste kryptera säkerhetskopian själv. Detta är
inget som finns inbyggt i rsync
.
Alla dessa nackdelar löser restic
(https://restic.net/). Restic arbetar med snapshots
(tänk git commit
). Varje ny säkerhetskopia blir en ny snapshot. Det blir
därför enkelt att gå tillbaks till tidigare versioner av filer.
Dessutom använder restic
något som kallas data deduplication. Det innebär
att endast unik data sparas. Om tre filer är identiska sparas bara datan i den
ena filer. Om tio filer har snarlik data, låt oss säga att sjuttio procent är
identiskt innehåll, sparas endast de trettio procenten som är unikt innehåll.
Åtminstone är det tänkt att fungera så i teorin. I verkligen beror mycket
på typen av innehåll, hur stora filerna är och så vidare.
Men utifrån egna erfarenheter fungerar det utmärkt. Jag tar säkerhetskopior en gång i veckan av fyra virtuella maskiner. Säkerhetskopian tas utav de virtuella diskarna. Sammanlagd storlek på dessa är runt 190 gigabyte. Första snapshoten blev på runt 30 gigabyte. Här sparade jag således 160 gigabyte. Det är mer än vad jag sparade när jag testade att komprimera samma innehåll. Men sådana bra siffror får jag dock inte på alla typer av filer. Säkerhetskopior utav fotografier ger bara lite besparingar – här är graden av unikt innehåll högt. Men även här kan det skilja mellan olika typer av bildformat etcetera.
När det kommer till den tredje nackdelen med rsync
löser även restic
detta. Restic krypterar alla säkerhetskopior som standard med AES-256.
Det finns även andra fördelar med restic
. Exempelvis går att det använda
Amazon S3, BackBlaze B2, Azure Blob storage och Google Cloud storage som mål
för säkerhetskopian. Det finns även stöd för SFTP och vanlig lokal
säkerhetskopia.
En annan stor fördel med restic
är att det är enkelt att skripta och
automatisera.
Användning med BackBlaze B2
Som exempel använder jag här BackBlaze B2 för att lagra säkerhetskopian. Förfarandet är dock likadant oavsett var du lagrar säkerhetskopian. För att istället använda exempelvis Amazon S3, byter du bara ut b2 mot s3, och lägger till korrekt region. För att använda en lokal sökväg skriver du bara sökvägen, utan något specifikt prefix, exempelvis /opt/backups.
Det finns utmärkt dokumentation om hur du använder olika backends. Du hittar dokumentationen på https://restic.readthedocs.io/en/stable/index.html.
Initiera ett förråd
Innan vi kan göra en säkerhetskopia behöver vi skapa och initiera ett förråd, eller repository på engelska. Även detta är ett koncept likt Git.
Jag förutsätter här att du redan har skapat en B2-bucket (eller katalog eller annat mål). I detta exempel använder jag en B2-bucket med namnet jackbenny-viktiga-filer.
Alla inställningar kan göras med miljövariabler, vilket underlättar när vi sedan ska skapa ett skript för säkerhetskopieringen. Det underlättar också när vi arbetar med ett förråd. Vi slipper att skriva in nycklarna för B2 gång på gång.
Jag börjar därför med att sätta två miljövariabler för att komma åt min B2-bucket.
$> export B2_ACCOUNT_ID="003a83..."
$> export B2_ACCOUNT_KEY="K003H..."
Därefter kan jag initiera förrådet.
$> restic init -r b2:jackbenny-viktiga-filer
enter password for new repository:
enter password again:
created restic repository f013f06a41 at b2:jackbenny-viktiga-filer
Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.
Här valde jag lösenordet hemligt-losenord. Lösenordet används för att
kryptera säkerhetskopian. Glömmer man bort lösenordet är också säkerhetskopian
borta för alltid. Flaggan -r
anger förrådet (repository).
Göra en första säkerhetskopia
Nu kan vi göra en första säkerhetskopia till förrådet vi skapade nyss.
$> restic backup viktiga-filer -r b2:jackbenny-viktiga-filer
enter password for repository:
repository f013f06a opened successfully, password is correct
created new cache in /home/jake/.cache/restic
Files: 14 new, 0 changed, 0 unmodified
Dirs: 0 new, 0 changed, 0 unmodified
Added to the repo: 5.311 MiB
processed 14 files, 5.311 MiB in 0:01
snapshot 8e21757e saved
Innan vi går vidare kan vi lista de snapshots som just nu finns i förrådet. Därefter kan vi lista filerna i snapshoten.
$> restic snapshots -r b2:jackbenny-viktiga-filer
enter password for repository:
repository f013f06a opened successfully, password is correct
ID Time Host Tags Paths
-------------------------------------------------------------------------------
8e21757e 2020-06-21 18:31:20 red-dwarf /home/jake/viktiga-filer
-------------------------------------------------------------------------------
1 snapshots
För att se filerna i den snapshot som listas här gör vi på följande vis.
$> restic ls 8e21757e -r b2:jackbenny-viktiga-filer
enter password for repository:
repository f013f06a opened successfully, password is correct
snapshot 8e21757e of [/home/jake/viktiga-filer] filtered by [] at
2020-06-21 18:31:20.68611058 +0200 CEST):
/viktiga-filer
/viktiga-filer/foto1
/viktiga-filer/foto1/1.jpg
/viktiga-filer/foto1/2.jpg
/viktiga-filer/foto1/3.jpg
/viktiga-filer/foto1/4.jpg
/viktiga-filer/foto1/5.jpg
/viktiga-filer/foto1/6.jpg
/viktiga-filer/foto1/7.jpg
/viktiga-filer/foto1/8.jpg
/viktiga-filer/foto2
/viktiga-filer/foto2/1.jpg
/viktiga-filer/foto2/2.jpg
/viktiga-filer/foto2/3.jpg
/viktiga-filer/foto2/4.jpg
/viktiga-filer/foto2/5.jpg
/viktiga-filer/foto2/Thumbs.db
Nya snapshots
Nu när vår första säkerhetskopia är klar kan vi fortsätta göra fler säkerhetskopior efterhand som nya filer läggs till eller ändras. Varje ny säkerhetskopia blir en ny snapshot.
$> cp IMG_516* ~/viktiga-filer/
$> restic backup viktiga-filer -r b2:jackbenny-viktiga-filer
enter password for repository:
repository f013f06a opened successfully, password is correct
Files: 3 new, 0 changed, 14 unmodified
Dirs: 0 new, 0 changed, 0 unmodified
Added to the repo: 1.526 MiB
processed 17 files, 6.837 MiB in 0:02
snapshot 3d7acbf5 saved
Om vi listar alla snapshots igen kommer vi se att en ny har skapats.
$> restic snapshots -r b2:jackbenny-viktiga-filer
enter password for repository:
wrong password or no key found. Try again
enter password for repository:
repository f013f06a opened successfully, password is correct
ID Time Host Tags Paths
-------------------------------------------------------------------------------
8e21757e 2020-06-21 18:31:20 red-dwarf /home/jake/viktiga-filer
3d7acbf5 2020-06-21 18:41:24 red-dwarf /home/jake/viktiga-filer
-------------------------------------------------------------------------------
2 snapshots
Återställa filer från en snapshot
Här testar jag att återställa filerna från den första snapshoten till /tmp
katalogen. Flaggan -t
nedan står för target.
$> restic restore 8e21757e -r b2:jackbenny-viktiga-filer -t /tmp
enter password for repository:
repository f013f06a opened successfully, password is correct
restoring <Snapshot 8e21757e of [/home/jake/viktiga-filer] at 2020-06-21
18:31:20.68611058 +0200 CEST by jake@red-dwarf> to /tmp
$> ls -l /tmp/viktiga-filer/
total 8
drwxr-xr-x 2 jake jake 4096 jun 21 18:01 foto1
drwxr-xr-x 2 jake jake 4096 jun 21 18:01 foto2
Automatisera säkerhetskopieringen
Eftersom alla inställningar så som lösenord, nycklar, förråd etcetera går att
sätta via miljövariabler, är det också enkelt att automatisera restic
.
Nedanstående Bash-skript gör en säkerhetskopia av katalogen viktiga-filer som vi använt som exempel hittills.
#!/bin/bash
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
cd ~/
export B2_ACCOUNT_ID="003a8..."
export B2_ACCOUNT_KEY="K003Hi..."
export RESTIC_REPOSITORY="b2:jackbenny-viktiga-filer"
export RESTIC_PASSWORD="hemligt-losenord"
restic backup viktiga-filer
Notera att vi här anger förrådets namn och lösenord som miljövariabeler.
Gör skriptet körbart med chmod +x my-restic-backup.sh
.
Därefter kan vi skapa ett cronjob för skriptet. För att exempelvis skapa en
säkerhetskopia varje lördag klockan 04:30 på morgonen lägger vi till följande
rad i crontab -e
.
30 04 * * 6 /home/jake/my-restic-backup.sh
Luta dig tillbaka och låt restic
skapa krypterade snapshots varje lördag,
utan att ta upp onödigt mycket utrymme.
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
PGP-krypterat formulär
Jag blev inspirerad av Tutanotas Secure Connect – ett säkert webbformulär som skickar uppgifterna krypterat direkt till inkorgen. Skulle det inte gå att bygga något liknande med PGP? Det gick, och det var dessutom förvånansvärt enkelt då det redan finns ett GnuPG-bibliotek för PHP.
-
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
GDPR som ett stöd, inte ett hinder
Företag, föreningar och kommuner borde se GDPR som ett stöd och en vägledning, inte ett hinder. Trots det är det många som väntar ut Schrems II-domens efterspel för att inte behöva göra något. Andra försöker komma runt GDPR på olika sätt. Men man får glömma inte bort vem GDPR ska skydda – organisationens viktigaste tillgångar; kunderna, medlemmarna och invånarna.
-
Vidarebefordran av SSH-agenten
SSH agent forwarding, eller vidarebefordran av SSH-agenten, innebär att man kan vidarebefordra SSH-agenten till ett fjärrsystem. På så sätt behöver man inte kopiera sin privata SSH-nyckel till fjärrsystemet, eller skapa flera nycklar för olika system. Men det finns risker med det.
-
Tvåfaktorsautentisering vid SSH-inloggning
Med hjälp av en PAM-modul går det att aktivera tvåfaktorsautentisering i Linux med exempelvis Google Authenticator-appen. Linuxsystemet kräver då både användarens lösenord samt ett engångslösenord. Det går även att kombinera en SSH-nyckel med ett engångslösenord.
Senaste nyheterna och inläggen
-
Författarintervju med Josefin Hansson
År 2022 debuterade hon med boken “Ur askan en drake”. Boken tar upp duktiga flickan-syndromet och psykisk ohälsa. Hon har också varit ambassadör för Hjärnkoll och föreläst på bland annat Medborgarskolan. Idag driver hon eget företag inom samtalscoaching.
-
En chans att vinna Demonerna på internet
Företaget GleSYS lottar ut tre exemplar av vår bok Demonerna på internet i en tävling på LinkedIn. Passa på att tävla du också för en chans att vinna!
-
Störning hos SEBs internetbank
På söndag eftermiddag gick det inte logga in på SEBs internetbank. Webbsidan Downdetector hade vid klockan 14:30 fått in 240 rapporter om den pågående störningar. På SEBs kundtjänst är man medveten om problemet och meddelar att tekniker arbetar med att åtgärda det.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Titta på C64-demos
Med Commodore-emulatorn VICE går det att spela gamla C64-spel och titta på demos från demonpartyn. Men VICE under Debian Linux saknar några nödvändiga filer som vi behöver leta upp själva.
Utvalda artiklar
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
-
Stort deltagande på årets Gubbdata
I helgen var det Gubbdata i Lund – ett av Sveriges största demoparty. På plats fanns cirka ett hundra deltagare, alla med en passion för retrodatorer.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.