Backup infoarena

Una dintre responsabilităţile administratorilor infoarena este aceea de păstra conţinutul site-ului în siguranţă, astfel încât să poată fi recuperat în urma unor evenimente excepţionale nedorite. Este posibil ca server-ul pe care găzduim site-ul să pice, este posibil să pierdem informaţii importante, fie accidental, fie din cauza unor persoane rău intenţionate. În orice caz, este necesar să ne protejăm de astfel de evenimente cu ajutorul unui backup periodic.

Câţiva administratori infoarena vor face backup periodic folosind calculatoarele lor personale. Scopul este să obţinem un sistem redundant de backup, complet automatizat şi uşor de monitorizat. Pagina aceasta explică acestor administratori ce trebuie să facă pentru a-şi configura staţiile de lucru personale în acest sens.

Atenţie! Discută cu ceilalţi administratori infoarena înainte să te apuci să faci şi tu backup. 3-4 replici sunt suficiente, mai multe de atât consumă inutil bandă pe server.

Cerinţe

  • Sistem de operare Linux
  • rsync, şi client ssh (Cel mai probabil sunt deja instalate.)
  • O copie locală de infoarena, instalată, configurată şi funcţională. Ai grijă să o menţii la o versiune actuală, întrucât scriptul de backup se poate modifica în timp. (Este OK să foloseşti chiar copia pe care în mod normal dezvolţi cod pentru infoarena. Nu e nevoie să configurezi şi evaluatorul. Nu este necesar ca server-ul Apache sau MySQL să ruleze.)
  • Cel puţin 10 GB spaţiu de stocare disponibil.

Basic Setup

Procesul de backup va rula cu permisiunile unui utilizator oarecare de pe sistemul tău. Nu are importanţă ce utilizator e, însă e mai simplu să fie chiar utilizatorul pe care îl foloseşti în mod obişnuit când lucrezi la calculator. În continuare voi presupune că numele tău de utilizator este wickedman şi că eşti logat pe calculator.

  1. Generează o cheie privată fără parolă pentru acces la contul de backup de pe server-ul infoarena.
    $ ssh-keygen -f ~/.ssh/ia-backup
  2. Autorizează cheia ta pentru backup. Acest pas necesită acces root@infoarena.ro. Un mod de a-ţi autoriza cheia este să execuţi comanda următoare de pe calculatorul tău:
    $ ssh -p 21883 root@infoarena.ro echo `cat ~/.ssh/ia-backup.pub` '>> /home/backup/.ssh/authorized_keys'
  3. Testează accesul la backup@infoarena.ro:
    $ ssh -i ~/.ssh/ia-backup -p 21883 backup@infoarena.ro 'echo `whoami`@`hostname`'
    ar trebui să afişeze backup@infoarena.
  4. Crează un director pentru backup şi asigură-te că ai suficient spaţiu liber pe partiţia respectivă. (Vezi cerinţe.) Scriptul de backup e configurat să folosească în mod implicit ~/backup/infoarena. Dacă vrei să foloseşti alt director va trebui să îl modifici corespunzător.
    $ mkdir -p ~/backup/infoarena
  5. Execută scriptul de backup. Mai jos presupun că eşti în directorul în care ai făcut checkout la infoarena, dar nu e obligatoriu.
    $ ./scripts/mirror-backup
    Atenţie! Scriptul va începe să copieze toate ataşamentele de pe infoarena.ro, adică peste 6.7GB! Asigură-te că ai o conexiune cât poţi de bună ca să nu dureze o veşnicie. Desigur, următoarele apelări vor transfera mult mai puţine date.
  6. În final ar trebui să ai o structură de directoare similară cu cea de mai jos:
    $ find ~/backup/infoarena -type d
    /home/wickedman/backup/infoarena
    /home/wickedman/backup/infoarena/attach
    /home/wickedman/backup/infoarena/attach/200910
    /home/wickedman/backup/infoarena/archive
    /home/wickedman/backup/infoarena/archive/db
    /home/wickedman/backup/infoarena/archive/hackers
    /home/wickedman/backup/infoarena/archive/hackers/trac
    /home/wickedman/backup/infoarena/archive/hackers/reviewboard
    /home/wickedman/backup/infoarena/archive/hackers/svn
    /home/wickedman/backup/infoarena/archive/conf

Cu fiecare lansare, ./scripts/mirror-backup sincronizează ultimele versiuni de backup locale cu cele de pe infoarena.ro şi poate fi rulat cu încredere de oricâte ori. Baza de date infoarena este criptată cu parolă pe server folosind GPG.

Backup automat zilnic

În continuare vom configura calculatorul să facă backup automat în fiecare zi folosind utilitarul anacron. Spre deosebire de cron, acesta nu necesită ca staţia de lucru să fie deschisă la o anumită oră din zi. Eşti liber să închizi şi să deschizi calculatorul oricând doreşti.

  1. Instalează anacron. (Pe Ubuntu merge apt-get install anacron.)
  2. Editează /etc/anacrontab
    $ sudo vim /etc/anacrontab
    şi adaugă la sfârşitul fişierului linia următoare. Atenţie! Ajustează corespunzător textul îngroşat!
    1 30 infoarena-backup sudo -H -u wickedman /home/wickedman/d/infoarena/scripts/mirror-backup | mail -s "infoarena backup notice" cristian@infoarena.ro
    (Asta înseamnă că job-ul „infoarena-backup” se execută odată pe zi, la 30 de minute după ce ai pornit calculatorul. Folosesc sudo -u ca să execut job-ul cu permisiuni de utilizator obişnuit. Înlocuieşte cristian@infoarena.ro cu adresa ta de email la care doreşti să primeşti notificări la fiecare backup.)
  3. Testează configuraţia anacron.
    $ sudo anacron -fnd infoarena-backup
    Anacron 2.3 started on 2009-03-03
    Will run job `infoarena-backup'
    Jobs will be executed sequentially
    Job `infoarena-backup' started
    Job `infoarena-backup' terminated (mailing output)
    Normal exit (1 job run)

Notificări prin email

Backup-ul zilnic trimite o notificare prin email la fiecare rulare. Asta ne ajută să monitorizăm sistemul şi să ştim în permanenţă dacă încă mai funcţionează. Pentru ca notificările să fie trimise trebuie să îţi instalezi şi să îţi configurezi un server SMTP. Sunt multe moduri în care poţi să faci asta, mai jos prezint doar unul care pare să meargă la mine.

  1. $ sudo apt-get install postfix mailutils
    postfix este un server SMTP. În timpul instalării este posibil să apară un wizard de configurare, caz în care poţi să alegi opţiunea „Internet site” şi în rest să accepţi orice opţiune default deja completată. (pe sistem „next! next! next!” :P)
  2. Testează notificările prin email.
    $ sudo anacron -fnd infoarena-backup
    Ar trebui să primeşti un email „infoarena backup notice” care însă cel mai probabil se duce în SPAM.
  3. Forward-ează toate email-urile de notificare către backup-notice@infoarena.ro. În felul acesta putem să monitorizăm împreună că toate terminalele de backup funcţionează, deci că avem backup redundant. Dacă foloseşti Gmail poţi să faci asta cu un filtru.