Anunţ

Caută printre mesajele de pe forum înainte de a scrie unul nou!
Formulează corect întrebarea sau problema pe care o ai.
Respectă regulile forumului și Codul de Conduită!

#1 02 Jun 2016 18:29:31

guletz2002
Membru
Locaţie: Brasov
Înregistrat: 09 Sep 2009
Mesaje: 1512

Backup cu Restic - smart backup

Restic - Smart Backup


  Cazul pe care l-am avut de rezolvat a fost urmatorul:

Test-Case:

Un prieten cu laptop, doreste o solutie de backup ... mai smart, adica:
- datele sa fie criptate pe un HDD mobil, pe care sa-l conecteze pe USB cand are el chef
- sa poata restura datele din backup total sau partial
- sa aiba ceva gen de-duplicare
- sa poata verifica relativ simplu ca datele de pe HDD-ul mobil sun OK sau nu
- omul are Linux-Mint 17.3 LTS/KDE, dar cred ca si pe Ubuntu lucrurile sunt asemanatoare

Dupa ceva cautari pe net, am gasit o scula f. interesanta RESTIC - https://restic.github.io/

restic is a program that does backups right. The design goals are:

Easy: Doing backups should be a frictionless process, otherwise you are tempted to skip it. Restic should be easy to configure and use, so that in the unlikely event of a data loss you can just restore it. Likewise, restoring data should not be complicated.

Fast: Backing up your data with restic should only be limited by your network or hard disk bandwidth so that you can backup your files every day. Nobody does backups if it takes too much time. Restoring backups should only transfer data that is needed for the files that are to be restored, so that this process is also fast.

Verifiable: Much more important than backup is restore, so restic enables you to easily verify that all data can be restored.

Secure: Restic uses cryptography to guarantee confidentiality and integrity of your data. The location the backup data is stored is assumed not to be a trusted environment (e.g. a shared space where others like system administrators are able to access your backups). Restic is built to secure your data against such attackers.

Efficient: With the growth of data, additional snapshots should only take the storage of the actual increment. Even more, duplicate data should be de-duplicated before it is actually written to the storage backend to save precious backup space.

Free: restic is free software and licensed under the BSD 2-Clause License and actively developed on GitHub.

Despre partea de criptare, cred ca intelege oricine despre ce e vorba. O sa detailez partea de deduplicare, pt cei care nu au idee despre ce e vorba. Restic face cam asa deduplicarea(grosso-modo)
- ai un fisier si il spare in mai bulte bucati(chunk-ri), pt care calculeaza niste sume/chunk
- daca voi copia sa zicem fiserul GiGi.iso cu un nou nume, GiGi2.iso, pe un file system normal, voi avea ocupat 4 GB x 2 fisiere=8GB
- datorita de-duplicarii, Restic depisteaza ca cunk-le care compun cele 2 fisiere sunt identice, si prin urmare nu va stoca acelasi fisier de 2 ori

  Mai mentionez ca locatia de backup poate fi montata via fuse pe un sistem local.


Detalii gasiti aici: https://restic.readthedocs.io/en/latest/Design/

Terminologie:

repository: locatia unde se salveaza backup-le
backup:     ei ii zic snapshot


Sa trecem la treaba. Deci am conectat HDD-ul extern, si ii dam sa-l monteze, in cazul meu apare montat in calea:

Cod:

/media/guletz2002/MyPassport

- la voi poste aparea sub alt nume, dar va fi tot undeva in /media

1. Instalam cu git codul sursa al aplicatiei Restic, eu folosesc /root/surse

Cod:

sudo su
cd /root/surse
git clone https://github.com/restic/restic

2. Compilare din surse:
- aplicatia este scrisa in limbajul GO, deci trebuie sa instal compilatorul de Go, cu o versiune > 1.3
- pt asta voi folosi un ppa, de la Ubuntu

Cod:

add-apt-repository ppa:ubuntu-lxc/lxd-stable
apt-get update
apt-get install golang

- acum verificam ca avem versiunea care trebuie de GO

Cod:

go version
go version go1.6 linux/amd64

- compilam

Cod:

go run build.go

- daca nu am avut erori, in acelasi director cu sursele, vom gasi binarul restic, acu hai sa vedem:

./restic --help
Usage:
  restic [OPTIONS] <command>

Application Options:
  -r, --repo=      Repository directory to backup to/restore from
      --cache-dir= Directory to use as a local cache
  -q, --quiet      Do not output comprehensive progress report (false)
      --no-lock    Do not lock the repo, this allows some operations on read-only repos. (false)
  -o, --option=    Specify options in the form 'foo.key=value'

Help Options:
  -h, --help       Show this help message

Available commands:
  backup         save file/directory
  cache          manage cache
  cat            dump something
  check          check the repository
  find           find a file/directory
  init           create repository
  key            manage keys
  list           lists data
  ls             list files
  mount          mount a repository
  rebuild-index  rebuild the index
  restore        restore a snapshot
  snapshots      show snapshots
  unlock         remove locks
  version        display version

3. Facem locatia de backup, cu numele date-importante, adica creum un director pe HDD-ul USB, monatat anterior in  /media/guletz2002/MyPassport

Cod:

mkdir /media/guletz2002/MyPassport/date-importante

4. Se initializeaza repositori-ul necesr lui Restic, practi o structura de foldere, si ni se cere o parola.
NOTA: parloa respectiva este important sa nu o uitati, si sa fie de caliate - daca ati uitat parola, adio backup ....

Cod:

/root/surse/restic/restic init --repo /media/guletz2002/MyPassport/date-importante
enter password for new backend: 
enter password again: 
created restic backend ff5d2ab2ef at /media/guletz2002/MyPassport/date-importante

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.

5. Acum, facem primul nostru backup, adica in terminologia Restic, facem un snapshot, sa zicem la folderul Documents si Video din directorul /home/$userul-folosit-de-voi, ica asa:
- atentie, se cere parola de pct 4!!!

Cod:

/root/surse/restic/restic -r /media/guletz2002/MyPassport/date-importante backup /home/guletz2002/Documents /home/guletz2002/Videos/
enter password for repository: 
scan [/home/guletz2002/Documents /home/guletz2002/Videos]
scanned 31 directories, 256 files in 0:00
[0:15] 100.00%  21.346 MiB/s  327.355 MiB / 327.355 MiB  285 / 287 items  0 errors  ETA 0:00 
duration: 0:15, 21.13MiB/s
snapshot 97841cdc saved

Daca dorim se pot folosi clauze de tip exclude, de genul --exclude=*.iso, caz in care avem cam asa:

Cod:

/root/surse/restic/restic -r /media/guletz2002/MyPassport/date-importante backup /home/guletz2002/Documents /home/guletz2002/Videos/  --exclude=*.iso --exclude=*.avi

6. Sa vedem ce avem .... adica snapshots(... si din nou acceasi parola):

Cod:

/root/surse/restic/restic -r /media/guletz2002/MyPassport/date-importante snapshots
enter password for repository: 
ID        Date                 Host        Directory
----------------------------------------------------------------------
97841cdc  2016-06-02 17:43:11  IulianM     /home/guletz2002/Documents
                                           /home/guletz2002/Videos

Incercati sa va utati ce avem in locatia de backup:

Cod:

IulianM date-importante # ls -l
total 1
-rw------- 1 guletz2002 guletz2002 155 Jun  2 17:38 config
drwx------ 1 guletz2002 guletz2002 152 Jun  2 17:43 data
drwx------ 1 guletz2002 guletz2002 264 Jun  2 17:43 index
drwx------ 1 guletz2002 guletz2002   0 Jun  2 17:38 keys
drwx------ 1 guletz2002 guletz2002  48 Jun  2 17:45 locks
drwx------ 1 guletz2002 guletz2002 264 Jun  2 17:43 snapshots
drwx------ 1 guletz2002 guletz2002  48 Jun  2 17:45 tmp

Daca o sa va uitai intr-un fisier din acea structura, o sa vedeti ca cam toate sun criptate .... bun nu-i asa?



7. Restaurare - aici sunt mai multe variante, dar sa o luam pe cea mai simpla, adica
o sa montam repositori-ul nostru si apoi vom pute sa accesam toate snapshot-le create anterior,
iar de acolo sa ne copiem ce dorim cu medoda preferata(linie de comanda, un file-manager gen Dolphin sau de ce nu chiar mc-ul)
- voi crea un folder in care voi monta datele din snapshot-ri:

Cod:

mkdir /home/for-restic

- montam ....

Cod:

/root/surse/restic/restic -r /media/guletz2002/MyPassport/date-importante mount /home/for-restic/
enter password for repository: 
Now serving /media/guletz2002/MyPassport/date-importante at /home/for-restic/
Don't forget to umount after quitting!

- din motive oarecare la mine comanda de montare nu-mi intoarce promterul de root, asa
ca voi deschide alta consola ca si root si voi putea accesa/copia ce am nevoie

Cod:

ls -l /home/for-restic/snapshots/
total 0
dr-xr-xr-x 1 root root 0 Jun  2 17:43 2016-06-02T17:43:11+03:00

- cand am terminat, ne intoarcem la consola initial si dam CTRL-C, si astfel demontam
repositoriul

Cod:

  Interrupt received, cleaning up
exiting

Restic are multe lucruri interesante care merita citite: crearea de key noi pt acelasi repository, verificarea integritatii, etc. Va recomand sa cititi cu atentie
toata documentatia, are multe exemple utile:

https://restic.readthedocs.io/en/latest/Manual/


PS - nu uitati sa scoate-ti HDD-ul USB, respectiv sa-l montati cand aveti nevoie de restic wink



   Tocmai cand i-am aratat prietenului meu cum se lucreaza cu restic, m-a intrebat ..... dar daca vreau sa fac backup  prin ssh pe un server din Germania, pot? Eu am zambit
putin "amarui", dar amicul meu a sesizat "tristetea" din vovea mea(ne stim de mult timp), si a adus o bere .... si am inceput sa-i zic: DA
- ideal este sa poti face autentificare cu key, sigur ca mere si cu parola
- vei folosi sshfs, care va monta prin ssh repository-ul de pe serverul remote ....
- restul este la fel ca si la HDD pe usb, aceasi pasi
- ideal ar fi din cand in cand sa faci si un check sa vezi ca nu ti-a umblat nimeni la date, cam asa:

Cod:

/root/surse/restic/restic -r /media/guletz2002/MyPassport/date-importante check
enter password for repository: 
Create exclusive lock for repository
Load indexes
Check all packs
Check snapshots, trees and blobs

Daca cineva a umblat la date, sau avem niste bad-ri pe HDD, vom vedea ceva de genul:

Cod:

Load indexes
ciphertext verification failed

Acum sa recapitulam punctele forte:
- criptare bunicica
- deduplicare=economie de spatiu
- detectie de erori/sau de modificare intentionata a datelor
- viteza f. buna daca avem un sistem decent
- facilitati destule, sintaxa decenta

Editat ultima oară de guletz2002 (02 Jun 2016 18:38:01)


Daca retea Nu e, atunci nimic nu e !!!
LiCo : Proud GNU/Linux User since 2003.

Offline

 

#2 18 Jul 2016 21:15:05

big_bum
Membru
Locaţie: $HOME
Înregistrat: 30 Nov 2010
Mesaje: 2432
Site web

Re: Backup cu Restic - smart backup

Pot sa sterg cumva un snapshot? N-am gasit optiunea asta.


Linuxul e ca femeile. Odata ce te-ai prins cum sa lucrezi cu el, vrei sa incerci mai multe distributii.
Inregistreaza-te pe Dropbox si primim amandoi 500MB in plus.
Nexus 5 kernel
Bumberry Pi - a blog running on a Raspberry Pi about Raspberry Pi running a blog.

Offline

 

#3 18 Jul 2016 21:53:14

guletz2002
Membru
Locaţie: Brasov
Înregistrat: 09 Sep 2009
Mesaje: 1512

Re: Backup cu Restic - smart backup

Nici eu. Dar am vorbit cu un dezvoltator, și zicea ca va apare în curând.


Daca retea Nu e, atunci nimic nu e !!!
LiCo : Proud GNU/Linux User since 2003.

Offline

 
Feed

Antet forum

Powered by FluxBB