Project

General

Profile

BaculaBackup » History » Version 30

Simone Piccardi, 12/22/2010 03:01 PM

1 28 Amministratore Truelite
h1. Backup con Bacula
2 1 Amministratore Truelite
3 28 Amministratore Truelite
4
"Bacula":http://www.bacula.org/ è un potente sistema che consente la centralizzazione dei backup di varie macchine all'interno di una rete, e la gestione automatica degli stessi.
5
6 1 Amministratore Truelite
L'architettura di bacula è composta da tre componenti principali:
7
8 28 Amministratore Truelite
* il _File Daemon_, che va installato sulle macchine di cui si vuole effettuare il backup ed ha il compito di gestire i file di cui deve essere eseguito il backup.
9
* lo _Storage Daemon_ che va installato sulla macchina su cui è presente il dispositivo di registrazione dei dati (nastro, disco o quant'altro).
10
* il _Director_ che va installato su una macchina qualsiasi (ma in genere si usa quella dove sta il dispositivo di backup) e che è il servizio che controlla tutti gli altri e gestisce i backup.
11 14 Amministratore Truelite
12 1 Amministratore Truelite
Ciascuno di questi tre servizi ha un suo script di avvio ed un suo file di configurazione, come illustrato nella seguente tabella:
13
14 30 Simone Piccardi
|Servizio|File di configurazione|Script di avvio|
15 29 Simone Piccardi
|File Daemon|@bacula-fd.conf@|bacula-fd|
16
|Storage Daemon|@bacula-sd.conf@||bacula-sd|
17 30 Simone Piccardi
|Director|@bacula-dir.conf@|bacula-director|
18 1 Amministratore Truelite
19 29 Simone Piccardi
a questi si aggiuinge poi la console di comando, @bconsole@. 
20 22 Amministratore Truelite
21
22 28 Amministratore Truelite
h2. Installazione e configurazione
23 1 Amministratore Truelite
24 28 Amministratore Truelite
25
Tratteremo dell'installazione e della configurazione di base con Debian Lenny. Una delle caratteristiche di "Bacula":http://www.bacula.org/ è quella di salvare su un database il suo stato, mantenendo quello che viene chiamato dal programma stesso il _catalogo_. Il programma supporta tre tipi di database, [[MySQL]], [[PostgreSQL]] e SQLite. Dato che la versione ufficiale di Debian Lenny non aveva abilitato (per questioni di licenza con [[OpenSSL]]) il supporto per le connessioni cifrate, useremo la versione ottenuta da backports (la 5.0.2 al momento della ultima revisione di queste note) che usa [[GnuTLS]]. 
26
27
<pre>
28
<pre>
29 1 Amministratore Truelite
deb http://www.backports.org/debian lenny-backports main contrib
30 28 Amministratore Truelite
</pre>
31 22 Amministratore Truelite
e poi installare la versione per il database scelto con:
32 28 Amministratore Truelite
<pre>
33 22 Amministratore Truelite
apt-get install bacula-director-sqlite3 bacula-sd bacula-fd
34 28 Amministratore Truelite
</pre>
35 23 Amministratore Truelite
36 22 Amministratore Truelite
37
38
39 28 Amministratore Truelite
h2. Configurazione con SSL
40 22 Amministratore Truelite
41 1 Amministratore Truelite
42 28 Amministratore Truelite
<pre>
43
44
<pre>
45
46
<pre>
47 22 Amministratore Truelite
Director {                            # define myself
48
  Name = backup1-dir
49
  DIRport = 9101                # where we listen for UA connections
50 28 Amministratore Truelite
  [[QueryFile]] = "/etc/bacula/scripts/query.sql"
51
  [[WorkingDirectory]] = "/var/lib/bacula"
52
  [[PidDirectory]] = "/var/run/bacula"
53 22 Amministratore Truelite
  Maximum Concurrent Jobs = 1
54 1 Amministratore Truelite
  Password = "xxx"         # Console password (lunga e complicata)
55
  Messages = Daemon
56 23 Amministratore Truelite
  TLS Enable = yes
57 1 Amministratore Truelite
  TLS Require = yes
58 23 Amministratore Truelite
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
59 1 Amministratore Truelite
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
60
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
61
  TLS Verify Peer = yes
62
  TLS DH File = /etc/bacula/dh1024.pem
63
}
64 28 Amministratore Truelite
</pre>
65 23 Amministratore Truelite
66 28 Amministratore Truelite
in questo caso le varie direttive servono a dichiarare chiave e certificato SSL usato dal _Director_, ed indicare la CA con cui vengono verificati le connessioni dai client verso il _Director_. Devono poi essere configurate le modalità di accesso SSL client del  _Director_ verso gli altri servizi indicando con quali certificato e chiave ci si vuole collegare ad essi (nel caso useremo sempre gli stessi). In particolare per le varie voci rispetto alla configurazione installata di default si dovranno inserire delle configurazioni del tipo:
67 23 Amministratore Truelite
68 28 Amministratore Truelite
<pre>
69 1 Amministratore Truelite
Client {
70
...
71 23 Amministratore Truelite
  TLS Enable = yes
72
  TLS Require = yes
73
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
74
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
75
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
76
}
77
...
78
...
79 1 Amministratore Truelite
Storage {
80
...
81 23 Amministratore Truelite
  TLS Enable = yes
82 1 Amministratore Truelite
  TLS Require = yes
83
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
84
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
85
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
86
}
87 28 Amministratore Truelite
</pre>
88
<pre>
89 1 Amministratore Truelite
90 28 Amministratore Truelite
<pre>
91
<pre>
92 1 Amministratore Truelite
Storage {
93
...
94
  TLS Enable = yes
95 23 Amministratore Truelite
  TLS Require = yes
96
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
97
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
98
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
99
}
100 28 Amministratore Truelite
</pre>
101
per definire il certificato usato per le connessioni allo _Storage Daemon_, mentre per le connessioni effettuate verso l'esterno (in questo caso solo il _Director_ per rispondere ad interrogazioni dalla console) si dovrà mettere qualcosa del tipo:
102
<pre>
103 1 Amministratore Truelite
Director {
104
...
105 23 Amministratore Truelite
  TLS Enable = yes
106
  TLS Require = yes
107
  TLS CA Certificate File = /etc/ssl/certs/Truelite-cacert.pem
108
  TLS Certificate = /etc/ssl/certs/bacula.fi.trl-cert.pem
109
  TLS Key = /etc/ssl/private/bacula.fi.trl-key.pem
110
  TLS Verify Peer = yes
111
  TLS Allowed CN = "bacula.fi.trl"
112
}
113 28 Amministratore Truelite
</pre>
114
<pre>
115 11 Amministratore Truelite
116 1 Amministratore Truelite
117
118 28 Amministratore Truelite
h2. Uso dell'autochanger
119 1 Amministratore Truelite
120
121 28 Amministratore Truelite
<pre>
122
123
<pre>
124
125
<pre>
126
<pre>
127 1 Amministratore Truelite
Device {
128
  Name = DDS-4                        #
129
  Media Type = DDS-4
130
  Archive Device = /dev/nst0
131 28 Amministratore Truelite
  [[AutomaticMount]] = yes;               # when device opened, read it
132
  [[AlwaysOpen]] = yes;
133
  [[RemovableMedia]] = yes;
134
  [[RandomAccess]] = no;
135 1 Amministratore Truelite
  Changer Command = "/etc/bacula/scripts/mtx-changer %c %o %S %a %d"
136
  Changer Device = /dev/sg1
137 28 Amministratore Truelite
  [[AutoChanger]] = yes
138
  Alert Command = "sh -c 'tapeinfo -f %c |grep [[TapeAlert]]|cat'"
139 1 Amministratore Truelite
}
140 28 Amministratore Truelite
</pre>
141
<pre>
142
<pre>
143 10 Amministratore Truelite
Storage {
144 1 Amministratore Truelite
  Name = File
145 14 Amministratore Truelite
  Address = bacula.truelite.it   # N.B. Use a fully qualified name here
146 1 Amministratore Truelite
  SDPort = 9103
147
  Password = "xxxxxxx"
148
  Device = DDS-4
149
  Media Type = DDS-4
150
  Autochanger = yes
151
}
152 28 Amministratore Truelite
</pre>
153 1 Amministratore Truelite
154 28 Amministratore Truelite
<pre>
155
<pre>
156 1 Amministratore Truelite
*label slot=5
157
Using default Catalog name=MyCatalog DB=bacula
158
Automatically selected Storage: File
159
Enter new Volume name: Volume005
160
Automatically selected Pool: Default
161
Connecting to Storage daemon File at bacula.truelite.it:9103 ...
162
Sending label command for Volume "Volume005" Slot 5 ...
163
3301 Issuing autochanger "loaded drive 0" command.
164
3302 Autochanger "loaded drive 0", result is Slot 4.
165
3303 Issuing autochanger "unload slot 4, drive 0" command.
166
3304 Issuing autochanger "load slot 5, drive 0" command.
167
3305 Autochanger "load slot 5, drive 0", status is OK.
168
block.c:264 Volume data error at 0:0! Wanted ID: "BB02", got "". Buffer discarded.
169
3000 OK label. Volume=Volume005 Device=/dev/nst0
170 11 Amministratore Truelite
Catalog record for Volume "Volume005", Slot 5  successfully created.
171
Requesting to mount DDS-4 ...
172 15 Amministratore Truelite
3001 Device /dev/nst0 is mounted with Volume "Volume005"
173 28 Amministratore Truelite
</pre>
174 15 Amministratore Truelite
da ripetere per tutti i nastri disponibili. 
175
176 28 Amministratore Truelite
Una volta inizializzati i vari nastri si può rendere noto al _Director_ la presenza dei vari nastri con il comando:
177
<pre>
178 1 Amministratore Truelite
update slots scan
179 28 Amministratore Truelite
</pre>
180 1 Amministratore Truelite
181
182
183 28 Amministratore Truelite
h2. Come gestire manualmente i nastri
184
185
186 13 Amministratore Truelite
Per la rimozione dei dati presenti sui nastri si devono seguire i seguenti passi:
187 11 Amministratore Truelite
188 28 Amministratore Truelite
<pre>
189
* inserire il nastro nel dispositivo, se si dispone dell'autochanger si può fare con:
190
<pre>
191 16 Amministratore Truelite
/etc/bacula/scripts/mtx-changer /dev/sg1 load N
192 28 Amministratore Truelite
</pre>
193 17 Amministratore Truelite
   dove N è il numero dello slot.
194 28 Amministratore Truelite
<pre>
195
<pre>
196 1 Amministratore Truelite
197 28 Amministratore Truelite
Se invece si è configurato correttamente il periodo di ritenzione dei dati, sarà _Bacula_ che provvederà a cercare il primo nastro libero, posto che il periodo non sia eccessivo e lo spazio disponibile esaurito, 
198 1 Amministratore Truelite
199
Nel qual caso si potrà ridurre il periodo di ritenzione con il comando:
200 28 Amministratore Truelite
<pre>
201
update volume=VolumeXXX [[VolRetention]]=ddd
202
</pre>
203
<pre>
204 1 Amministratore Truelite
205
206
207 28 Amministratore Truelite
h2. Cosa fare quando si esaurisce lo spazio disponibile
208 17 Amministratore Truelite
209 28 Amministratore Truelite
210
La maggiore forza di "Bacula":http://www.bacula.org/ è quella, una volta configurato correttamente, di essere in grado di gestire tutta la procedura di backup in maniera automatica. In genere questo funziona correttamente senza nessun intervento manuale. L'incidente più comune che può capitare è che si esaurisca lo spazio (disco o nastro) disponibile per i backup, nel qual caso il comportamento di "Bacula":http://www.bacula.org/ è quello di bloccare i backup rispettando i termini del periodo di ritenzione dei dati impostato. 
211
212
<pre>
213
<pre>
214 18 Amministratore Truelite
*list volumes
215 16 Amministratore Truelite
Using default Catalog name=MyCatalog DB=bacula
216 1 Amministratore Truelite
Pool: Default
217 16 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
218 28 Amministratore Truelite
| [[MediaId]] | [[VolumeName]] | [[VolStatus]] | [[VolBytes]]    | [[VolFiles]] | [[VolRetention]] | Recycle | Slot | [[InChanger]] | [[MediaType]] | [[LastWritten]]         |
219 19 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
220 1 Amministratore Truelite
| 1       | Volume0013 | Full      | 13156318147 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 02:53:16 |
221 20 Amministratore Truelite
| 2       | Volume0014 | Full      | 15260956061 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-15 01:12:48 |
222
| 3       | Volume0015 | Full      | 10288088510 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-30 02:03:26 |
223 21 Amministratore Truelite
| 4       | Volume0016 | Full      | 28805889791 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 01:26:31 |
224 1 Amministratore Truelite
| 5       | Volume0017 | Full      | 14412428094 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-29 01:27:50 |
225 21 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
226 28 Amministratore Truelite
</pre>
227 21 Amministratore Truelite
dopo di che, considerato che i dati più vecchi si trovano sul Volume0017, se potrà cancellare il contenuto con:
228 28 Amministratore Truelite
<pre>
229 21 Amministratore Truelite
* purge volume=Volume0017
230
231
This command is can be DANGEROUS!!!
232
233
It purges (deletes) all Files from a Job,
234 28 Amministratore Truelite
[[JobId]], Client or Volume; or it purges (deletes)
235 21 Amministratore Truelite
all Jobs from a Client or Volume without regard
236
for retention periods. Normally you should use the
237
PRUNE command, which respects retention periods.
238
239 28 Amministratore Truelite
</pre>
240 1 Amministratore Truelite
(il comando impiegherà un certo tempo per eseguire l'operazione), a questo punto si potrà verificare che il volume è diventato disponibile con:
241 28 Amministratore Truelite
<pre>
242 22 Amministratore Truelite
*list volumes
243 21 Amministratore Truelite
Using default Catalog name=MyCatalog DB=bacula
244 22 Amministratore Truelite
Pool: Default
245 21 Amministratore Truelite
246 1 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
247 28 Amministratore Truelite
| [[MediaId]] | [[VolumeName]] | [[VolStatus]] | [[VolBytes]]    | [[VolFiles]] | [[VolRetention]] | Recycle | Slot | [[InChanger]] | [[MediaType]] | [[LastWritten]]         |
248 24 Amministratore Truelite
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
249 27 Amministratore Truelite
| 1       | Volume0013 | Full      | 13156318147 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 02:53:16 |
250 25 Amministratore Truelite
| 2       | Volume0014 | Full      | 15260956061 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-15 01:12:48 |
251 1 Amministratore Truelite
| 3       | Volume0015 | Full      | 10288088510 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-07-30 02:03:26 |
252 27 Amministratore Truelite
| 4       | Volume0016 | Full      | 28805889791 | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-06 01:26:31 |
253
| 5       | Volume0017 | Purged    | 968063348   | 0        | 1814400      | 1       | 0    | 0         | File      | 2006-08-21 11:59:28 |
254
+---------+------------+-----------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
255 28 Amministratore Truelite
</pre>
256 1 Amministratore Truelite
257 27 Amministratore Truelite
258
259 28 Amministratore Truelite
h2. Configurazione Webacula
260
261
262
"Webacula":http://webacula.sourceforge.net/ è una interfaccia di gestione via Web di Bacula, basata su PHP e Zendframework, pertanto per installarla si sono preventivamente installati i seguenti pacchetti con:
263
<pre>
264 27 Amministratore Truelite
apt-get install zendframework php5-gd
265 28 Amministratore Truelite
</pre>
266 27 Amministratore Truelite
267 28 Amministratore Truelite
<pre>
268 27 Amministratore Truelite
269 28 Amministratore Truelite
<pre>
270
<pre>
271 26 Amministratore Truelite
[general]
272
db.adapter = PDO_SQLITE 
273
db.config.dbname = /var/lib/bacula/bacula.db
274
275 1 Amministratore Truelite
def.timezone = "Europe/Rome"
276
bacula.sudo = ""
277
bacula.bconsole = "/usr/bin/bconsole"
278
279 27 Amministratore Truelite
[webacula]
280
db.adapter = PDO_SQLITE
281
db.config.dbname = /var/www/webacula/webacula.db
282 28 Amministratore Truelite
</pre>
283 27 Amministratore Truelite
284
285 28 Amministratore Truelite
<pre>
286 27 Amministratore Truelite
chown www-data /var/www/webacula/webacula.db
287
usermod -aG bacula www-data
288
usermod -aG ssl-cert www-data
289 28 Amministratore Truelite
</pre>
290 27 Amministratore Truelite
291 28 Amministratore Truelite
<pre>
292
<pre>
293 27 Amministratore Truelite
a2enmod rewrite
294 28 Amministratore Truelite
</pre>
295
<pre>
296
<pre>
297
# [[RewriteLog]] "/var/log/httpd/rewrite.log"
298
# [[RewriteLogLevel]] 3
299
# [[SetEnv]] APPLICATION_ENV development
300
[[SetEnv]] APPLICATION_ENV production
301 27 Amministratore Truelite
302
Alias /webacula  /var/www/webacula/html
303
<Directory /var/www/webacula/html>
304 28 Amministratore Truelite
   [[RewriteEngine]] On
305 27 Amministratore Truelite
306 28 Amministratore Truelite
   [[RewriteBase]]   /webacula
307
   [[RewriteCond]] %{REQUEST_FILENAME} -s [OR]
308
   [[RewriteCond]] %{REQUEST_FILENAME} -l [OR]
309
   [[RewriteCond]] %{REQUEST_FILENAME} -d
310
   [[RewriteRule]] ^.*$ - [NC,L]
311
   [[RewriteRule]] ^.*$ index.php [NC,L]
312 1 Amministratore Truelite
313
   php_flag magic_quotes_gpc off
314
   php_flag register_globals off
315
316 28 Amministratore Truelite
   Options Indexes [[FollowSymLinks]]
317
   [[AllowOverride]] All
318 1 Amministratore Truelite
   Order deny,allow
319
320
321 28 Amministratore Truelite
#   [[AuthType]] Basic
322
#   [[AuthName]] "Webacula"
323
#   [[AuthUserFile]]       /etc/httpd/conf/webacula.users
324 1 Amministratore Truelite
#   Require valid-user
325
</Directory>
326
327 28 Amministratore Truelite
</pre>