더북(TheBook)

복원 테스트

이번에는 백업해둔 파일을 복원해봅시다. 복원 명령은 restore입니다. 백업 대상에 대한 정보를 저장해둔 카탈로그인 MyCatalog를 자동으로 선택하고 어떤 작업을 어떻게 복원할지 결정합니다. 사용 가능한 하위 명령을 좀 길지만 위에서부터 소개합니다.

1번은 마지막에 실시한 작업 20개를, 2번은 백업 파일 경로를 기준으로 작업을 나열합니다. 3번은 JobId를 선택해서(쉼표로 복수 작업을 선택할 수 있음), 4번은 SQL 질의를 이용해서 복원할 작업을 입력할 수 있습니다. 5번은 가장 최근에 백업한 작업을, 6번은 특정 날짜/시간 이전의 백업 작업을 선택합니다. 7번은 복원할 파일 목록을, 8번은 특정 날짜/시간 이전의 파일 목록을 입력합니다. 9번은 가장 최근 백업 작업에 대한 JobId를, 10번은 특정 날짜/시간 이전의 가장 최근 백업 작업에 대한 JobId를 찾습니다. 11번은 JobId 백업 작업으로 백업한 디렉터리 목록을 입력하고 12번은 특정 날짜로 전체 복원하며 13번은 복원을 취소합니다.

*restore
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"

First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.

To select the JobIds, you have the following choices:
     1: List last 20 Jobs run
     2: List Jobs where a given File is saved
     3: Enter list of comma separated JobIds to select
     4: Enter SQL list command
     5: Select the most recent backup for a client
     6: Select backup for a client before a specified time
     7: Enter a list of files to restore
     8: Enter a list of files to restore before a specified time
     9: Find the JobIds of the most recent backup for a client
     10: Find the JobIds for a backup for a client before a specified time
     11: Enter a list of directories to restore for found JobIds
     12: Select full restore to a specified Job date
     13: Cancel
Select item: (1-13):

가장 많이 사용하는 복원 명령은 가장 최근에 백업한 작업을 선택하는 5번입니다. 최근에 백업한 대상과 백업한 파일 목록이 자동으로 선택되면 백업 테스트에 사용한 작업 JobId 1을 확인할 수 있습니다.

Select item: (1-13): 5
Automatically selected Client: losttemple-fd
Automatically selected FileSet: Full Set
+-------+-------+----------+------------+---------------------+------------+
| JobId | Level | JobFiles | JobBytes   | StartTime           | VolumeName |
+-------+-------+----------+------------+---------------------+------------+
|     1 | F     |      326 | 39,311,437 | 2014-08-29 21:26:49 | TestBackup |
+-------+-------+----------+------------+---------------------+------------+
You have selected the following JobId: 1

Building directory tree for JobId(s) 1 ... ++++++++++++++++++++++++++++++++++++++++++++++
325 files inserted into the tree.

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: /
$

뜬금없이 리눅스 명령 프롬프트가 나타나서 당황스럽지만 생각해보면 당연합니다. TestBackup 볼륨에 저장되어 있는 파일 목록에 접근하는 과정으로 여기에서 복원할 대상을 선택합니다. lscd 명령으로 저장해둔 파일 목록을 확인할 수도 있습니다.

$ ls
usr/
$ cd usr
cwd is: /usr/

mark 명령으로 복원할 대상을 선택합니다. mark sbin 명령으로 sbin 디렉터리를 통째로 복원하겠습니다. /usr/sbin 디렉터리 내 326 스크립트 파일이 모두 선택될 것입니다.

$ ls
sbin/
$ mark sbin
326 files marked.

done을 입력하면 복원 대상 선택을 종료합니다. 복원 작업에 대한 개요를 확인하고 yes를 입력하면 복원을 시작합니다. JobId가 3인 복원 작업이 큐에 할당되었습니다.

$ done
Bootstrap records written to /var/lib/bacula/losttemple-dir.restore.1.bsr


The job will require the following
   Volume(s)                Storage(s)                 SD Device(s)
===========================================================================

   TestBacku                 File                       FileStorage

Volumes marked with "*" are online.

326 files selected to be restored.

Run Restore job
JobName:          RestoreFiles
Bootstrap:        /var/lib/bacula/losttemple-dir.restore.1.bsr
Where:            /tmp/bacula-restores
Replace:          always
FileSet:          Full Set
Backup Client:    losttemple-fd
Restore Client:   losttemple-fd
Storage:          File
When:             2014-08-29 21:38:14
Catalog:          MyCatalog
Priority:         10
Plugin Options:   *None*
OK to run? (yes/mod/no): yes
Job queued. JobId=3
Tip

백업과 마찬가지로 해당 작업 내용 중에 수정할 내용이 있으면 mod를 입력하고 Level, Storage, Job, FileSet, Client, Pool 등 정보를 선택해서 일일이 변경할 수 있습니다. 변경한 내용을 반영해서 다시 복원 가능합니다.

디렉터 상태를 확인하면 복원 작업이 진행 중이라는 사실을 알 수 있습니다.

*status dir
...
Running Jobs:
Console connected at 29- 8-2014 21:37
 JobId Level   Name                         Status
======================================================================
     3         RestoreFiles.2014-08-29_21.38.19_03 is running
...

메시지가 도착했습니다. messages 명령으로 확인하면 복원 작업 상태를 확인할 수 있습니다.

You have messages.
*messages

복원이 끝나면 터미널을 하나 더 열어서 확인합니다. 디렉터 설정 파일 ‘bacula-dir.conf’의 RestoreFiles 작업에 대한 Job 세션에는 파일을 복원할 장소를 지정하는 Where이 /tmp/bacula-restores로 되어 있습니다. 접근 권한 때문에 /tmp/bacula-restores 디렉터리를 열람할 수는 없습니다. /usr/sbin 디렉터리를 복원했기 때문에 /tmp/bacula-restores/usr/sbin에 접근해서 ls 명령으로 파일 목록을 확인할 수 있습니다.

shinjaehun@losttemple:~$ cd /tmp/bacula-restores/
shinjaehun@losttemple:/tmp/bacula-restores$ ls
ls: . 디렉터리를 열 수 없음: 허가 거부
shinjaehun@losttemple:/tmp/bacula-restores$ cd usr/sbin
shinjaehun@losttemple:/tmp/bacula-restores/usr/sbin$ ls
a2dismod                             lpinfo
a2dissite                            lpmove
...
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.