Gå till innehållet

Backup

Säkerhetskopiering

Säkerhetskopiering av hemdisk

Hemdisk säkerhetskopieras regelbundet (4 gånger per dygn). Servern som säkerhetskopieringen sker mot en server som är betydligt mindre än hemdisk (Hermaeus) så om en större datamängd ska lagras som inte kräver säkerhetskopiering (till exempel om hemdisk används för just säkerhetskopiering) så behöver den exkluderas från säkerhetskopieringen.

Exkludera data från att säkerhetskopieras genom att skapa filen .nobackup i mappen som ska exkluderas.

Använda cpu-servar för att säkerhetskopiera data

Detta går självklart att tillämpa för säkerhetskopiering mot andra system
Det enklaste sättet att säkerhetskopiera egen data till hemdisk är att använda rsync. Däremot har det ett antal nackdelar: 1. Nya versioner av filer skriver över de gamla så om en fil modifieras (felaktigt) och sedan säkerhetskopieras så går det inte att återställa den tidigare versionen. 2. Filerna ligger okrypterade på servern.

Båda problemen kan lösas genom att använda för ändamålet skapade program. Två välanvända program med gott anseende är restic och borg. Nedan beskrivs hur man kan sätta upp restic.

  1. Skapa en SSH-nyckel för det (kontot som ska genomföra säkerhetskopieringen) utan lösenord och lägg till den i din authorized_keys (om lösenord behöver skrivas in går det inte att automatisera). Skydda nyckeln väl.
  2. Skapa ett avsnitt i ~/.ssh/config för kontot som ska genomföra säkerhetskopieringen
    Host lysator-backup
        HostName [VÄRDNAMN HÄR]
        IdentityFile [SÖKVÄG TILL SSH-NYCKEL]
        User [LYSATOR ANVÄNDARNAMN]
    
  3. Skapa en mapp i din hemkatalog där säkerhetskopian ska ligga.
  4. Skapa filen .nobackup i den mappen (se ovan)
  5. Generera en lösenord (nyckeln som säkerhetskopian krypteras med)
  6. Skapa en mapp som kommer innehålla skripten för säkerhetskopieringen och i den skapa en filen repo.sh med följande innehåll.
    export RESTIC_PASSWORD=[LÖSENORD HÄR]
    export RESTIC_REPOSITORY=sftp:lysator-backup:[SÖKVÄG TILL MAPP FÖR SÄKERHETSKOPIA]
    
  7. Läs in miljövariablerna genom att köra source repo.sh
  8. Initiera förrådet genom att köra restic init
  9. Skapa ett skript som gör själva säkerhetskopieringen backup.sh med följande innehåll:
    #!/bin/sh
    export RESTIC_CACHE_DIR=~/.cache/restic/
    source repo.sh
    restic backup [SÖKVÄG 1] [SÖKVÄG 2] [SÖKVÄG 3]
    
    Ge användaren som ska genomföra säkerhetskopieringen rätt att köra skriptet samt läsa repo.sh
  10. Testa att göra en första backup. (Tips: Kör i en screen/tmux om du har "mycket" data). Gå till mappen med scripten och kör ./backup.sh

Schemalägg säkerhetskopiering med systemd

Nedan så skapas en systemd-tjänst som kör säkerhetskopieringen varje natt. Säkerhetskopieringen sker vid ett slumpat tillfälle mellan 00:00 och 05:00.

  1. Skapa filen /etc/systemd/system/backup.service
    [Unit]
    Description=Backup
    After=network.target
    
    [Service]
    Type=exec
    ExecStart=[SÖKVÄG TILL backup.sh]
    WorkingDirectory=[SÖKVÄG TILL MAPP MED BACKUP SKRIPT]
    User=[ANVÄNDARE SOM KÖR BACKUP] # Denna rad kan tas bort om backup körs som root
    
    [Install]
    WantedBy=default.target
    
  2. Skapa filen /etc/systemd/system/backup.timer
    [Unit]
    Description=Nightly backup
    
    [Timer]
    Unit=backup.service
    OnCalendar=*-*-* 00:00:00
    RandomizedDelaySec=5h
    
    [Install]
    WantedBy=timers.target
    
  3. Aktivera skriptet: systemctl enable --now backup.timer