summaryrefslogtreecommitdiff
path: root/docs/backup/methods.md
blob: 456e3721a932fc8f411054b82ec899e6610e5e37 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# Métodos para backup remoto

Esta página contém um estudo dos métodos de produção, transferência e
armazenamento de backups, divididos nas partes:

* Métodos de tranferência
* Métodos de armazenamento 

A discussão aqui não tem caráter prático mas meramente teórico, sem menção às
implementações dos métodos. Para isso, veja a página
[Convencoes](../conventions).

## Métodos de transferência

### Método 1: rsync + hardlinks 

Vantagens:

* Economiza espaço
* Simples de configurar 

Desvantagens:

* Precisa rodar como root nas duas máquinas/vservers para preservar permissões
* Workarround: criar um `FILELIST.TXT` para cada vserver indicando as
  permissões e os proprietários dos arquivos, juntamente com um script que
  corrija todas essas permissões no caso de um restauro de backup.

### Método 2: tar + ssh

Esse método consiste em criar um `.tar.bz2` num pipe direto para o servidor
remoto, sem escrita local em disco, isto é,

    nice -n 19 tar c /mnt/backup/servidor/vservers/vservers.0/ | bzip2 | \
      ssh servidor-remoto "cat - > servidor-vservers-0.tar.bz2"

Vantagens:

* o arquivo transferido preserva todas as permissões do seu conteúdo
* no servidor remoto o arquivo fica compactado
* rodar com um nice alto garante que esse comando não atrapalhará o
  funcionamento normal do sistema.

Para economizar espaço na máquina remota, podemos operar com backups
incrementais:

    nice -n 19 tar cv /mnt/backup/servidor/vservers/vservers.0/ \
      --listed-incremental=/var/log/backup/vservers.snar \ | bzip2 | ssh \
      servidor-remoto "cat - > servidor-vservers-`date +%w`.tar.bz2" >> \
      /var/log/backup/servidor-remoto.log

Nesse caso, uma vez por semana as seguintes operações devem ser feitas:

* Mover todos os arquivos para uma pasta da "semana passada".
* Iniciar um novo full-dump.

Desvantagem: full-dump semanal.

### Método 3: GNU backup

O script backup que acompanha o GNU tar pode ser usado para fazer dumps
incrementais locais que depois são enviados aos servidores remotos.

Desvantagem: arquivos não podem ser modificados durante a confecção do backup.

### Método 4: duplicity

* <http://www.nongnu.org/duplicity>
* backups criptografados

### Método 5: rdiff-backup

* <http://www.nongnu.org/rdiff-backup>

## Métodos de armazenamento

### Método 1: vserver dedicado a backups

Cada servidor possui um único vserver dedicado a puxar os backups dos outros
servidores. Esse vserver não terá acesso externo e por isso é a abordagem mais
segura de armazenamento.

Veja uma discussão sobre isso em
<https://docs.indymedia.org/view/Sysadmin/PullBackupsForParanoiacs>.

### Método 2: vservers dedicados a cada servidor

Cada servidor possui seu próprio vserver em cada máquina remota onde ele fizer
backup. Nesse vserver os backups remotos poderão ser feitos como root sem
acarretar perda de segurança para a máquina remota, o que faz essa ser a
abordagem mais flexível para puxar ou receber backups remotos.  Backups
criptografados.

Veja uma discussão sobre isso em
<https://wiki.boum.org/TechStdOut/EncryptedBackupsForParanoiacs>.