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.
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Relaterade artiklar
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
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.
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
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.
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.