Säkerhetskopiera Home Assistant filer till Dropbox

I den här guiden visar jag hur du sätter upp regelbunden säkerhetskopiering eller 'backup' av dina Home Assistant konfigurationsfiler och databas till Dropbox.
Publicerad: juni 29, 2017
Senast uppdaterad: oktober 8, 2017
multiline_chart Svårighetsgrad
Nybörjare
timer Tidsåtgång
15-20 minuter
format_list_bulleted Antal steg
10
trending_up Visningar
1602
chat_bubble_outline Kommentarer
17
star_outline Betyg
5 / 1

Konfigurera säkerhetskopieringen från Raspberry Pi till Dropbox

Steg 1. Vad handlar den här guiden om link

zoom_in
  • Den här guiden visar dig hur du kan sätta upp automatisk säkerhetskopiering av dina konfigurationsfiler samt Home Assistant databaser till Dropbox.
  • För att spara på resurserna på Raspberry Pi har jag valt att använda en lösning som synkroniserar filerna till din Dropbox en gång varje dag.
  • Dropbox sparar och låter dig återställa tidigare versioner av dina filer i 30 dagar i gratis-versionen och alla tidigare versioner om du har ett betalt konto.
  • Du kan även starta synkronisering manuellt i Home Assistant innan du kör igång med större ändringar i dina konfigurationsfiler.
  • Guiden förutser att du har installerat Home Assistant enligt vår tidigare guide och har åtkomst till din Raspberry Pi med PuTTY (läs guiden här) och WinSCP (läs guiden här).
favorite_border Om du gillar Snillevilla och vill stötta bloggen och se fler och bättre guides, använd gärna länkarna ovan för att göra köp på m.nu. Då får vi en liten ersättning för varje köp du gör. Det medför ingen extra kostnad för dig. Pengarna går oavkortat till vidareutveckling av Snillevilla. Tack!

Verktyg och tillbehör

1 Dropbox konto

används för säkerhetskopiering av filerna. Du behöver dock inte ha ett Premium konto på Dropbox för att genomföra den här guiden, det räcker med gratisversionen.

Lite om säkerhetskopiering link

zoom_in
  • Huvudprincipen för alla system du har är att det måste finnas säkerhetskopior av dem så ifall att något händer, kommer din information inte gå förlorad. Att något ska hända är bara en tidsfråga. Detta gäller såklart även Home Assistant. En till basprincip för säkerhetskopiering är att du ska testa att återställa dina filer och systemet från en säkerhetskopia innan du faktiskt behöver göra det, helst regelbundet (t.ex. varje månad) för att vara säker att dina säkerhetskopior faktiskt funkar som de ska och innehåller data som du tror att de innehåller. Det finns två huvudsakliga typer av säkerhetskopior för ett Home Assistant system:
  • Säkerhetskopior av konfigurationsfiler och databas som går att återställa till en tidigare, fungerande version ifall du har ändrat något i filerna och systemet plötsligt slutar funka.
  • En helhetssäkerhetskopia av hela systemet (t.ex. SD-kortet) som gör att, ifall t.ex. SD-kortet som driver din Raspberry Pi går sönder, kan du bara byta ut den mot ett nytt kort och fortsätta som vanligt, istället för att lägga flera timmar på att installera Raspbian, Homeassistant mm. på nytt. Den här guiden handlar om första typen av säkerhetskopior – säkerhetskopiering av konfigurationsfiler och databas. En guide om hur du skapar en säkerhetskopia av hela SD kortet hittar du här.

Steg 2. Ladda ner programmet Dropbox Uploader link

  • Logga in på din Raspberry Pi via PuTTY eller annan terminalklient.
  • Skriv följande kod i terminalfönstret:
    sudo su homeassistant
    Detta gör att du byter användare som utför alla följande kommandon från ‘pi’ till ‘homeassistant’.
  • Observera att alla kommandon i den här guiden ska utföras utan sudo och med användaren homeassistant.

  • Skriv nu kommando cd ~ . Detta gör att du byter arbetsmappen till homeassistant-användarens hemmamapp.
  • Skriv nästa kommando:
    git clone https://github.com/andreafabrizi/Dropbox-Uploader
    Detta kommer ladda ner ett litet program som kommer sköta uppladdning av dina filer till ditt Dropbox konto. 
  • Vänta tills nedladdningen är färdig, det bör inte ta längre än några sekunder.

Steg 3. Skapa en Dropbox app link

  • För att programmet du laddade ner i förra steget ska kunna kommunicera med din Dropbox, behöver du skapa en Dropbox app.
  • Besök adressen https://dropbox.com/developers i din webbläsare. Logga in med samma uppgifter som du har för ditt Dropbox konto om du är inte inloggad. Tryck sedan på ‘My Apps’ i menyn till vänster.
  • På nästa sida, tryck på knappen ‘Create App’.
  • Du kommer se ett enkelt formulär för att skapa en Dropbox app.
  • I formuläret, välj ‘Dropbox API’ i punkt 1, ‘App folder’ i punkt 2 och ange ett valfritt namn för din app i punkt 3.
  • Tryck sedan på knappen ‘Create App’.
  • Nu har du skapat en Dropbox app och kommer se en sida med inställningar för den.
  • Scrolla ner en bit till du ser en rubrik som heter ‘Generated Access Token’. Tryck på knappen ‘Generate’ precis under den.
  • Efter några sekunder kommer det visas en lång sträng av siffror och bokstäver. Spara den någonstans då du kommer behöva ange den i nästa steg.

Steg 4. Konfigurera programmet Dropbox Uploader link

  • Gå tillbaka till terminalfönstret och skriv kommando cd Dropbox-Uploader. Detta gör att du byter arbetsmapp till Dropbox Uploader mappen som du nyss laddade ner. Skriv kommando ./dropbox_uploader.sh (punkt innan snedstrecken ska med!). 
  • Du kommer se information om programmet du har laddat ned. Programmet kommer be dig att ange appnyckeln eller ‘access token’ som du skapade i förra steget. 
  • Klistra in den i terminalfönstret (på min dator funkar det att markera text i t.ex. webbläsare, trycka Ctrl+C och sen högerklicka i terminalfönstret. Högerklick klistrar in texten jag har kopierat i terminalfönstret.) 
  • Programmet kommer be dig att verifiera om du har angett rätt appnyckel. 
  • Tryck y och sen Enter. Programmet kommer visa att din konfiguration är nu sparat.
  • Nu kan din Pi kommunicera med ditt Dropbox konto.

Steg 5. Lägg till och konfigurera programmet Dropbox Sync link

  • För att kunna automatisera uppladdningen av filerna till Dropbox, behöver vi lägga till ett till litet program.
  • Ladda ned den här textfilen och öppna den på din dator.
  • Skriv kommandot nano dropbox_sync.py i terminalfönstret.
  • Textredigeraren nano kommer öppna en ny fil i terminalfönstret. Kopiera allt innehåll från textfilen du laddade ner nyss och klistra in det i terminalfönstret.
  • Tryck på Ctrl+Y några gånger för att gå till filens topp i terminalfönstret. Där hittar du inställningarna för programmet som vi kommer ändra.
  • Ändra texten i citationstecken i raden som börjar med syncdir till mappen som innehåller dina homeassistant konfigurationsfiler och databas. För en vanlig Homeassistant installation är det /home/homeassistant/.homeassistant
  • Ändra texten i citationstecken i raden som börjar med uploader till /home/homeassistant/Dropbox-Uploader/dropbox_uploader.sh
  • Ändra siffran i raden som börjar med overwrite från 0 till 1. Detta gör att programmet kommer alltid ladda upp senaste versioner av alla filer. 
  • Tryck på Ctrl+X för att stänga den här filen. Programmet kommer fråga om du vill spara ändringarna. Tryck på y och Enter
  • Originalkoden för det här programmet hittar du här: Automating Dropbox Uploader

Steg 6. Testa om det funkar link

  • Nu är det dags att kolla om uppladdning av filerna från Raspberry Pi till Dropbox faktiskt funkar.
  • Skriv följande kommando i terminalfönstret:
    python ~/Dropbox-Uploader/dropbox_sync.py
  • Om allt är som det ska, kommer du se att dina Home Assistant filer börjar laddas upp till Dropbox.
  • Det kan ta ett tag.

Automatisera säkerhetskopieringen

Steg 7. Automatisk säkerhetskopiering varje dag link

  • För att få din Raspberry Pi att säkerhetskopiera filerna till Dropbox regelbundet, behöver du skapa ett s.k. cron-job på Raspberry Pi.
  • Cron är ett program på Linux-baserade datorer som genomför uppgifter du har sagt till för den att genomföra i intervaller eller vid tillfällen du har angett, t.ex. varje timma, varje dag eller vid omstart. Mer om Cron kan du läsa här och en annan guide om hur du skapar cron-jobb på Raspberry Pi hittar du här.

  • Skriv följande kommando i terminalfönstret: crontab -e.
  • Om det är första gången du skapar ett cron-jobb, kommer programmet fråga vilken textredigerare du vill använda. Tryck 2 och Enter.
  • En fil kommer öppnas i terminalfönstret. Tryck på Ctrl+V för att komma till sista raden i filen.
  • I slutet av filen, skriv in följande text:
    0 2 * * * python ~/Dropbox-Uploader/dropbox_sync.py
    Det betyder att Raspberry Pi kommer själv köra kommandot python ~/Dropbox-Uploader/dropbox_sync.py kl. 2 på morgonen varje dag.
  • Tryck på Ctrl+X för att stänga filen. Programmet kommer fråga om du vill spara ändringarna. Tryck på y och Enter
  • Starta om Raspberry Pi för att vara säker på att alla nya inställningar kommer i drift.

Steg 8. Lägg till möjlighet för manuell säkerhetskopiering i Home Assistant link

  • Om du vill, kan du även skapa ett kort i Home Assistant webbgränssnittet för att köra igång uppladdningen av dina filer till Dropbox manuellt innan du t.ex. gör några större ändringar.
  • För att göra detta, öppna filen ‘configuration.yaml’ och skriv in följande text:
    # Shell scripts
    shell_command:
     dropbox_backup: python /home/homeassistant/Dropbox-Uploader/dropbox_sync.py
    Första raden i texten är ett kommentar.
    Andra raden definierar en ny komponent för Home Assistant, shell_command.
    Tredje raden ange ett namn för funktionen vi vill utföra, dropbox_backup samt anger exakt vilket kommando ska genomföras .
  • Efteråt, skriv följande text:
    script:
     backup:
       alias: Backup HA Configuration To Dropbox
       sequence:
         - service: shell_command.dropbox_backup
    
    Första raden definierar att här är delen av konfigurationen som definierar olika små program eller s.k. skripter du kan köra från Home Assistant webbgränssnittet. Du kan lägga fler Home Assistant skripter här i framtiden.
    Andra raden anger namnet för det här specifika skriptet, backup.
    Raden som börjar med alias definierar vilken rubrik ska visas på kortet för den här komponenten i Home Assistants webbgränssnittet.
    Raden sequence markerar början på kommandon som ska utföras när skriptet körs igång.
    Raden service markerar anrop till funktionen dropbox_backup i komponenten shell_command.
  • Spara och stäng konfigurationsfilen och starta om Home Assistant. Om allt är rätt, så efter omstart kommer du se ett nytt kort, Scripts, i Home Assistants webbgränssnittet. När du trycker på knappen ‘Activate’, kommer Pi ladda upp filerna till Dropbox.
  • Att trycka på knappen ‘Activate’ har med andra ord exakt samma effekt som om du skrev in kommandot du angav i konfigurationsfilen, python /home/homeassistant/Dropbox-Uploader/dropbox_sync.py i terminalfönstret.
  • Information i det här steget är adapterad från Automatic Backup of Configuration Files.

Steg 9. Så återställer du tidigare versioner link

  • Som sagt, det är en bra idé att ta reda på hur du kan återställa tidigare versioner av dina filer innan du faktiskt behöver göra det.
  • Logga in på ditt Dropbox konto i din webbläsare. Home Assistant filer bör finnas i mappen ‘Apps’, i en undermapp med samma namn som namnet för din Dropbox app du skapade tidigare.
  • För att återställa en tidigare version av en fil, tryck på lilla menyikonen till höger från filnamnet och välj Version history i menyn.
  • Du kommer se en lista av alla filens tidigare versioner som du har laddat upp till Dropbox. Välj version du vill återställa och tryck på knappen Restore.
  • Dropbox kommer fråga om du verkligen vill återställa den här versionen av filen. Tryck på Restore.
  • Dropbox kommer återställa filen till den tidigare versionen du har valt.
  • Observera att alla versioner av filen, både nyare och äldre fortfarande finns i Dropbox och du kan alltid välja att återställa en annan version.

Diskussion

  • Vid första manuella säkerhetskopieringen så kopierade den alla filer i homeassistant-mappen. Vid den första automatiska säkerhetskopieringen så kopierade den endast ett fåtal filer, t.ex. configuration.yaml. Är den så smart att den bara kopierar de filer som har ändrats? Bara undrar så allt är rätt för mig.

    • Ja, efter att den har kopierat över alla filer för första gången, uppdaterar den bara filerna som har ändrats. Så allt är rätt för dig. 🙂

  • Jättebra guide! Blev lite skräckslagen när jag inte längre kunde boota min Rpi så efter jag fick igång den var detta det första jag såg till att ordna för framtida haverier… :S

    En fråga; hur lägger jag till kortet ”Scripts” i andra views än default? Jag har tagit bort min default view och skapat en egen, men jag vet inte vad jag ska inkludera i den gruppen för att script-kortet ska synas? script.dropbox_backup fungerade ej.

    • Hej! För mig funkade det att skapa en sådan här grupp:

      server:
        name: Pi
        view: yes
        entities:
          - script.backup 

      Säker att du använde rätt ID?

    • Hej! Tyvärr har jag inte tillgång till en Mac för att kolla hur allt funkar där, och som regel jag skriver inte något som jag själv personligt har inte verifierat typ 3 gånger. Det jag vet från tidigare erfarenhet med Mac är att istället för PuTTY kan du använda Terminal på Mac direkt och för filredigering på distans har jag använt Cyberduck. Allt som rör själva Pi samt tjänster som funkar på +/- samma sätt oavsett platform (t.ex. Dropbox) borde inte skilja sig alls.
      Om du nu mot förmodan har en Mac + iPhone (behöver inte vara nya men som kan köra senaste operativsystem) liggandes någonstans som du skulle kunna låna till mig under ungefär ett år då skulle alla guider få instruktioner för Mac direkt.

  • Jag har nu följt guiden till punkt och pricka, verkar inte få scriptet att fungera. Trycker men inga av dom nya filerna läses upp till dropbox. Kan man på något sätt få en notis när backupen är klar?

    • Hej! Ska kolla om jag kan modifiera scriptet imorgon kväll, har fullt upp tills dess. :/
      Får du något felmeddelande eller så när du kör skriptet från terminalen?

    • Ja, det tar lång tid när du gör det första gången. Efteråt borde den uppdatera bara de filerna som har ändrats. Men i alla fall, något slags notifikation vore bra att ha. Ska kolla på det. 🙂

  • Jag har problem med att Dropbox-Uploader bara fungerar att köra från HA, cron-jobbet fungerar inte för mig.

    Så jag testade att exekvera skriptet från terminalfönstret:
    pi@raspberrypi:~ $ python /home/homeassistant/Dropbox-Uploader/dropbox_sync.py

    Skriptet loopar igenom alla mappar och filer men för varje fil blir det ”Error Uploading File”:

    Found File: configuration.yaml
    Uploading File: configuration.yaml
    Error Uploading File: configuration.yaml

    Några idéer om vad som kan vara fel?

    • Den frågar troligtvis efter lösenordet för användaren pi, inte användaren homeassistant, så ange pi lösenordet.

  • Hej, jag får problem i steg 2, jag verkar inte kunna komma till användaren homeassistant – jag har följt dina andra guider. Efter att jag har skrivit sudo su homeassistant så kommer nästa rad bara med ett ”dollartecken”. Vad gör jag för fel?

    • Hej! Ha, förut visste även min Raspbian automatiskt att den ska använda ‘bash’ som shell vid användarbyte, men inte längre.
      Skriv ‘sudo su -s /bin/bash homeassistant’ istället.

  • Hej igen – tack för feedbacken, det funkade…nu har jag kommit så långt att jag gjort allt men får inte upp något kort i home assistant – det finns inget gnäll på configen men ändå inget kort…vad kan jag ha gjort fel? Tack för grymt bra guider!

    • Jag löste mitt eget problem genom att lägga första delen i steg 8 i configuration.yaml och den andra delen i script.yaml – då dök allt upp som det skulle. Om någon annan nu skulle stöta på samma problem.

  • Vad tyckte du om guiden? Funkade allt så som du förväntade dig? Stötte du på några problem? Lämna en kommentar!

    keyboard_arrow_up