
Bescherm uw kostbare bestanden en onvervangbare foto’s met het restic back-upprogramma. Het is snel, gecodeerd en u kunt het rechtstreeks vanaf de Linux-opdrachtregel gebruiken. Hier leest u hoe u het instelt.
De waarde van back-ups
Alle hardware heeft een eindige levensduur. Mechanische harde schijven (HDD’s) en solid-state drives (SSD’s) gaan niet eeuwig mee. Er gebeuren ook ongelukken. Laptops kunnen verloren gaan, gestolen worden of van de trap vallen.
Vroeger werd gezegd dat de waarde van een effectief back-upsysteem pas duidelijk wordt als je gegevens kwijt bent. Als er storingen of verliezen optreden, moet u een snelle en gemakkelijke manier hebben om uw bestanden en informatie terug te krijgen. Als een organisatie gegevens verliest, zijn de gevolgen ernstig. Het kan zelfs de bedrijfscontinuïteit in gevaar brengen. Zelfs in een huiselijke omgeving kan gegevensverlies een pijnlijke ervaring zijn. Back-ups zijn de enige verstandige voorzorgsmaatregelen.
En bovenal wordt het onbedoelde of opzettelijke verlies van persoonlijk identificeerbare gegevens beschouwd als een inbreuk onder bepaalde wetgeving inzake gegevensbescherming, zoals de Algemene Verordening Gegevensbescherming (AVG).
Er zijn een aantal overwegingen waarmee u rekening moet houden wanneer u back-upsoftware kiest. Waar wilt u dat uw back-ups worden bewaard? Op een verwisselbare schijf, op een andere machine in uw lokale netwerk (LAN) of in cloudopslag? Het is duidelijk dat u een back-upprogramma moet gebruiken dat kan schrijven en herstellen vanaf de gegevensopslag die u wilt gebruiken.
Back-ups moeten worden versleuteld, vooral als ze worden opgeslagen op externe locaties of in de cloud. Als ze versleuteld zijn, kunnen ze niet worden gelezen en hersteld door onbevoegde personen.
Het programma moet snel zijn. U wilt niet de hele dag wachten totdat een back-up of herstel is voltooid. Sommige programma’s slaan een basisback-upimage op en slaan vervolgens de verschillen op tussen de basisimage en de bronmachine voor elke volgende back-up. Dit versnelt het back-upproces aanzienlijk. Het gebruikt ook minder ruimte voor uw back-ups.
restic doet dit allemaal. Het is gratis, open-source, gelicentieerd onder de 2-Clause BSD-licentie en in actieve ontwikkeling. De broncode staat op GitHub.
Waarheen een back-up maken
In dit artikel gaan we onze back-ups opslaan op een andere computer in ons netwerk. Dat is geweldig, want dat zorgt voor snelle bestandsoverdrachten en het is gemakkelijk om een back-up te maken en te herstellen. In een realistisch scenario moet u ook echt een back-up maken naar een andere externe locatie. Als uw live systemen en back-ups zich op dezelfde locatie bevinden en er vindt een ramp plaats op die locatie – brand, diefstal of overstroming – dan wordt uw gans gekookt, tenzij u een externe back-up heeft.
Het is niet verwonderlijk dat restic een back-up kan maken op een externe schijf die van de locatie kan worden verwijderd, en – nog beter – het kan rechtstreeks een back-up maken naar cloudopslag.
Out of the box kan restic back-ups maken van:
- Een lokale directory of een lokaal verwisselbaar station.
- Een netwerkcomputer via SSH File Transfer Protocol (SFTP). Dit vereist natuurlijk Secure Shell (SSH).
- HTTP REST-server.
- AWS S3.
- OpenStack Swift.
- BackBlaze B2.
- Microsoft Azure Blob Storage.
- Google Cloud Storage.
Als u een back-up moet maken naar een gegevensbestemming die niet in die lijst staat, kunt u de kracht van rclone combineren met restic en een back-up maken naar een van de ongeveer 40 bestemmingen die rclone ondersteunt.
Voor SFTP-netwerkback-ups moet SSH zijn geïnstalleerd en geconfigureerd op de back-upserver. Dit is de machine waarop de back-ups worden opgeslagen. Als u SSH-sleutels instelt op de back-upserver en de machine waarvan u een back-up gaat maken, wordt u niet elke keer dat u een back-up uitvoert om het SSH-wachtwoord gevraagd.
Een manier om uw back-ups te automatiseren, is door korte scripts of shell-functies te maken en cron te gebruiken om ze op bepaalde tijden uit te voeren. Door SSH-sleutels te gebruiken, voorkomt u het probleem van het opgeven van een wachtwoord voor back-ups zonder toezicht.
VERWANT: SSH-sleutels maken en installeren vanuit de Linux-shell
Restic installeren
De restic-applicatie bevindt zich in de repositories van de belangrijkste Linux-distributies, dus het installeren ervan is een eenvoudige one-liner met behulp van de pakketbeheerder van elke distributie.
Om restic op Ubuntu te installeren, typ je:
sudo apt install restic
Het commando om te gebruiken op Fedora is:
sudo dnf install restic
Op Manjaro gebruiken we pacman
sudo pacman -Sy restic
Restic instellen
Zorg ervoor dat u SSH heeft ingesteld op de back-upservermachine en dat u er op afstand een verbinding mee kunt maken vanaf de computer waarvan u een back-up gaat maken. Dat is de client-machine. In ons testnetwerk heet de client “ubuntu-20-10” en de server heet “backup-box.”
In de terminologie van restic worden back-ups opgeslagen als snapshots in een repository. Elke back-up maakt een nieuwe momentopname. We moeten een plaats maken voor de repository op de server.
We moeten een map op de back-upserver maken om de repository in te bewaren. In het verleden bevonden services die werden bediend door een server zich in de map “/ srv”. Dus we plaatsen onze repository daar.
Geef deze opdracht op de back-upserver. U kunt de repository-map een naam geven die u maar wilt. We gebruiken de naam “restic” voor de eenvoud.
sudo mkdir /srv/restic
We moeten ervoor zorgen dat deze map toegankelijk is voor de persoon die de back-ups zal afhandelen. Als het meerdere mensen waren, zou het logisch zijn om een gebruikersgroep aan te maken en de groep toegang te geven tot de directory.
sudo chown dave:dave /srv/restic
Laten we de instellingen op de directory controleren:
ls -hl /srv
Nu kunnen we naar de clientcomputer gaan en van daaruit de repository op de server maken. Vervang de naam van uw gebruiker, de naam van de back-upserver en de naam van de repository-map zodat ze overeenkomen met uw keuzes. U kunt desgewenst het IP-adres van de back-upserver gebruiken.
We gebruiken de -r
(repository) optie om het pad te specificeren naar de repository die we gaan maken. De restic init
commando initialiseert de repository.
restic -r sftp:dave@backup-box.local:/srv/restic init
U wordt gevraagd om het wachtwoord voor het gebruikersaccount op de back-upserver. Als u SSH-sleutels tussen de server en de client heeft ingesteld, hoeft u deze stap niet uit te voeren.
U wordt ook om het wachtwoord van de opslagplaats gevraagd en vervolgens wordt u gevraagd om het te bevestigen. Dit wachtwoord moet worden gebruikt om in de toekomst met de repository te communiceren. Verlies het niet! U kunt geen back-up maken van de gegevens of deze herstellen als u het wachtwoord kwijtraakt.
Het duurt slechts een moment voordat de repository is gemaakt en geïnitialiseerd.
Een back-up maken
Het maken van een back-up is heel eenvoudig. Wij gebruiken de backup
commando met restic, vertel het waarvan we een back-up willen maken, en naar welke repository de back-up moet worden verzonden.
restic backup Documents/kernel/ -r sftp:dave@backup-box.local:/srv/restic
U moet het wachtwoord van de gebruiker en het wachtwoord voor de repository opgeven. Terwijl de back-up wordt uitgevoerd, worden de namen van de bestanden die worden gekopieerd weergegeven, samen met statistieken die aangeven hoeveel bestanden er in totaal gekopieerd zullen worden, hoeveel er tot dusver zijn gekopieerd en welk percentage van de back-up voltooid is. De snapshots zijn gecodeerd met behulp van de geavanceerde coderingsstandaard AES-256.
Omdat dit de eerste back-up naar deze repository was, waren alle bestanden waarvan een back-up was gemaakt nieuw. We zeiden wel dat restic snel was: er werd in 23 seconden een back-up van meer dan 70.000 bestanden gemaakt. Dat is alle broncode voor de Linux-kernel.
Op een andere testmachine heb ik in anderhalf uur een back-up gemaakt van meer dan 350.000 bestanden, wat neerkomt op meer dan 170 GiB.
Ik heb een nieuw bestand op de client gemaakt in de bronmap en heb nog een back-up gemaakt. Het commando is hetzelfde als voorheen.
restic backup Documents/kernel/ -r sftp:dave@backup-box.local:/srv/restic
De brondirectory-structuur werd gescand op wijzigingen, het nieuwe bestand werd gedetecteerd en er werd een back-up van gemaakt. Die tweede kleine back-up duurde drie seconden, inclusief het scannen van de andere bestanden op wijzigingen.
Laten we eens kijken naar de twee snapshots die we in de repository hebben. Het restische commando hiervoor is snapshots
restic -r sftp:dave@backup-box.local:/srv/restic snapshots
Elke snapshot heeft een hexadecimale identificatie gekregen als een unieke ID. De datum en tijd waarop elke momentopname is gemaakt, worden weergegeven. De naam van de computer waarvan de back-up is gemaakt en het pad naar de gegevens waarvan een back-up is gemaakt, wordt ook weergegeven.
Ik heb toen een tweede nieuw bestand gemaakt en nog een back-up gemaakt. Nogmaals, de opdrachtregel is hetzelfde als voorheen.
Net als bij onze eerdere herlaadback-up, duurde deze kleine update drie seconden om te voltooien.
Inmiddels ben je het waarschijnlijk beu om het repository-wachtwoord in te voeren. We kunnen dat aanpakken voordat we het snapshots
opdracht om onze verzameling van drie snapshots te bekijken. Open een editor en typ het repository-wachtwoord erin, en druk op “Enter” om een nieuwe regel te beginnen. Sla het bestand op als “.rest_pass” in uw homedirectory.
Om ervoor te zorgen dat niemand anders het wachtwoord kan zien, wijzigt u de bits van de toegangsmodus van het bestand met chmod
chmod 600 .rest_pass
Dit betekent dat alleen u toegang heeft tot het bestand.
Nu kunnen we dit doorgeven aan de rest-opdrachtregel met behulp van de -p
(wachtwoordbestand) optie. Als u ook SSH-sleutels tussen de client en de server heeft ingesteld, hoeft u ook het wachtwoord van het gebruikersaccount niet in te voeren. U kunt uw back-ups eenvoudig automatiseren met cron
zodra de menselijke interactie uit het proces is verwijderd.
restic snapshots -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass
Er wordt niet langer om het repository-wachtwoord gevraagd, wat geweldig is. We hoeven het niet te onthouden en we kunnen het niet verkeerd typen.
Werken met momentopnamen
De restic diff
commando laat je de verschillen zien tussen twee snapshots. Gebruik de unieke ID’s van de twee snapshots die u wilt vergelijken. U kunt de snapshot-ID’s zien wanneer u de restic snapshot
opdracht.
restic diff -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass 8f98cd29 8700e4bf
De verschillen tussen de snapshots worden weergegeven als kolommen met statistieken.
De restic check
commando voert een verificatietest uit tegen alle snapshots in de repository.
restic check -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass
Om een snapshot te verwijderen, moet u dit aan restic vertellen forget
het en naar prune
het. U moet de unieke ID van de momentopname gebruiken om te bepalen welke momentopname u wilt verwijderen.
restic forget --prune -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass e506e089
Gegevens herstellen
Wanneer het tijd is om gegevens uit uw back-ups te herstellen, is het net zo eenvoudig als het maken van de back-up. U moet aangeven welke momentopname u wilt herstellen. U kunt de unieke ID van een momentopname gebruiken, of u kunt de latest
label om de nieuwste momentopname in de repository te gebruiken.
U moet ook een directory opgeven waarnaar de herstelde gegevens moeten worden gekopieerd met de target
optie.
restic restore latest --target ~/restored-data -r sftp:dave@backup-box.local:/srv/restic -p .rest_pass
Herstellen gaat net zo snel als een back-up maken. Als we de doelmap inchecken, kunnen we zien dat de mappenboom en bestanden voor ons zijn hersteld.
ls
Maak back-ups, slaap rustig
Gegevensverlies is een ernstig probleem. Een robuuste back-upoplossing betekent dat u zich over één ding zorgen hoeft te maken. Met restic kunt u uw back-ups naar lokale en cloudopslagplaatsen automatiseren en gemakkelijk slapen.