Obnovení zálohy v Bacule
Minule jsme si zazálohovali reálný systém, tentokrát je čas na obnovu zálohy.
Záloha vyžaduje vytvoření zálohovacího jobu, který jako obvykle definujeme v konfiguraci Directora. Je potřeba definovat Job resource tentokrát typu Restore.
Job {
Name = "RestoreFiles"
Type = Restore
Client=bsd-fd
Storage = MyBackupStorage
FileSet="Full Set"
Pool = File
Messages = Standard
Where = /var/bacula-restores
}
- Client
- Storage
- FileSet
- Pool
nejsou podstatné, ale musí být v jobu definovány. Konkrétního klienta si vybereme až při spuštění obnovy, storage atd. si director najde sám.
Nejpodstatnější nastavení je potom cesta (Where =
), do které se budou
soubory obnovovat. Defaultní je /tmp
, což není přiliš vhodné, protože
moderní linuxové distribuce temp umísťují do ramdisku, zvolíme tedy cestu, kde
je dostatek místa pro obnovu.
Jako vždy po změně konfigu musíme directora zrestartovat, což se nejmépe udělá
v bconsole
:
* reload
Máme tedy Job nadefinovaný (stačí opravdu jen nastavit cestu v již připraveném Restore Jobu v konfiguraci directora), můžeme tedy přistoupit k obnově souborů.
Obnova
Na obnovu slouží příkaz restore
.
Asi nemá smysl sem vypisovat celou manuálovou stránku. Pro restore jsou podstatné dvě informace a to:
- Co obnovit
- Kam obnovit
Pokud chceme obnovit stav všech souborů k předchozí záloze, stačí znát pouze ID
zálohovacího jobu. ID získáme z mnoha různých zdrojů, status dir
, v emailech
o provedených zálohách apod. Příkaz restore nám také poskytne celou řadu
možností, jak najít ve které záloze je konrétní soubor apod. Dokonce můžeme
soubory vyhledávat v katalogu pomocí SQL příkazů.
Z minulého článku známe jobid 206.
Kam obnovit, v příkazu restore si můžeme zvolit libovolného klienta, soubory ted nemusíme nutně obnovovat na stroj, který jsme zálohovali, ale kamkoliv jinam. Funguje i obnova souborů z Windows na Linux (opačně jsem to netestoval - pro Windows je nutné definovat samostatný Restore Job, protože se liší způsob zápisu cesty k adresáři).
Takže obnovíme jobid 206, v bconsole
:
* restore all jobid=206
bconsole
nám nabídne prostředí pro de/select souborů, pokud chceme obnovit
vše, napíšeme jen done
Building directory tree for JobId(s) 206 ... ++++++++++++++++
1,117 files inserted into the tree and marked for extraction.
You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added, unless
you used the "all" keyword on the command line.
Enter "done" to leave this mode.
cwd is: /
$ done
Dále se nás bconsole
zeptá na klienta, kam to obnovit:
Defined Clients:
1: bsd-fd
2: x-fd
3: gitlab-fd
4: y-fd
5: z-fd
Select the Client (1-5):3
A ještě shrnutí a potvrzení definice obnovy:
Run Restore job
JobName: RestoreFiles
Bootstrap: /var/db/bacula/MyBaculaDirector.restore.2.bsr
Where: /var/bacula-restores
Replace: Always
FileSet: Full Set
Backup Client: gitlab-fd
Restore Client: gitlab-fd
Storage: MyBackupStorage
When: 2017-04-30 18:00:54
Catalog: MyCatalog
Priority: 10
Plugin Options:
OK to run? (yes/mod/no):
Po potvrzení již započne samotná obnovat, můžeme sledovat průběh v status dir
nebo si na obnovu počkat:
Job queued. JobId=214
* wait jobid=214
Wait
je velmi užitečná funkce bconsole
.
A je to, soubory se nám obnovily na stroj gitlab-fd do adresáře
/var/bacula-restores
.