웹사이트 검색

Ubuntu 14.04에 Bacula 서버를 설치하는 방법


소개

Bacula는 백업을 만들고 컴퓨터 시스템의 데이터 복구를 수행할 수 있는 오픈 소스 네트워크 백업 솔루션입니다. 매우 유연하고 견고하여 구성하기가 약간 번거롭기는 하지만 많은 상황에서 백업에 적합합니다. 데이터 손실 복구는 종종 재해 복구 계획의 중요한 부분이므로 백업 시스템은 대부분의 서버 인프라에서 중요한 구성 요소입니다.

이 자습서에서는 Ubuntu 14.04 서버에서 Bacula의 서버 구성 요소를 설치하고 구성하는 방법을 보여줍니다. 로컬 백업(즉, 자체 호스트의 백업)을 생성하는 주간 작업을 수행하도록 Bacula를 구성합니다. 이것은 그 자체로 Bacula를 특별히 매력적으로 사용하는 것은 아니지만 다른 서버, 즉 백업 클라이언트의 백업을 생성하기 위한 좋은 출발점을 제공할 것입니다. 이 시리즈의 다음 자습서에서는 Bacula 클라이언트를 설치 및 구성하고 Bacula 서버를 구성하여 다른 원격 서버의 백업을 만드는 방법을 다룹니다.

대신 CentOS 7을 사용하려면 CentOS 7에 Bacula 서버를 설치하는 방법 링크를 따르십시오.

전제 조건

Ubuntu 14.04 서버에 대한 수퍼유저(sudo) 액세스 권한이 있어야 합니다. 또한 서버에는 언제든지 보존하려는 모든 백업을 위한 충분한 디스크 공간이 필요합니다.

DigitalOcean을 사용하는 경우 Bacula 서버 및 동일한 데이터 센터 지역에 있는 모든 클라이언트 서버에서 사설 네트워킹을 활성화해야 합니다. 이렇게 하면 백업을 수행할 때 서버가 개인 네트워킹을 사용하여 네트워크 오버헤드를 줄일 수 있습니다.

서버의 개인 FQDN을 사용하도록 Bacula를 구성합니다. bacula.private.example.com. DNS 설정이 없는 경우 적절한 IP 주소를 대신 사용하십시오. 사설 네트워킹을 활성화하지 않은 경우 이 자습서의 모든 네트워크 연결 정보를 해당 서버에서 연결할 수 있는 네트워크 주소(예: 공용 IP 주소 또는 VPN 터널)로 바꾸십시오.

Bacula의 구성 요소에 대한 개요부터 살펴보겠습니다.

Bacula 구성 요소 개요

Bacula는 여러 소프트웨어 구성 요소로 구성되어 있지만 서버-클라이언트 백업 모델을 따릅니다. 논의를 단순화하기 위해 개별 Bacula 구성 요소보다 백업 서버와 백업 클라이언트에 더 중점을 둘 것입니다. 그래도 다양한 Bacula 구성 요소에 대한 대략적인 지식을 갖는 것이 중요하므로 지금부터 살펴보겠습니다.

"백업 서버\라고도 하는 Bacula 서버에는 다음과 같은 구성 요소가 있습니다.

  • Bacula Director(DIR): 파일 및 저장소 데몬이 수행하는 백업 및 복원 작업을 제어하는 소프트웨어
  • Storage Daemon(SD): 백업에 사용되는 저장 장치에서 읽기 및 쓰기를 수행하는 소프트웨어
  • 카탈로그: 백업된 파일의 데이터베이스를 유지 관리하는 서비스입니다. 데이터베이스는 MySQL 또는 PostgreSQL과 같은 SQL 데이터베이스에 저장됩니다.
  • Bacula 콘솔: 백업 관리자가 Bacula Director와 상호 작용하고 제어할 수 있는 명령줄 인터페이스

Note: The Bacula server components don't need to run on the same server, but they all work together to provide the backup server functionality.

Bacula 클라이언트, 즉 백업될 서버는 파일 데몬(FD) 구성 요소를 실행합니다. File Daemon은 Bacula 서버(구체적으로 Director)가 백업할 데이터에 액세스할 수 있도록 해주는 소프트웨어입니다. 또한 이러한 서버를 "백업 클라이언트\ 또는 "클라이언트\라고 합니다.

서론에서 언급했듯이 자체 파일 시스템의 백업을 생성하도록 백업 서버를 구성합니다. 이는 백업 서버가 백업 클라이언트이기도 하며 파일 데몬 구성 요소를 실행함을 의미합니다.

설치를 시작하겠습니다.

MySQL 설치

Bacula는 MySQL 또는 PostreSQL과 같은 SQL 데이터베이스를 사용하여 백업 카탈로그를 관리합니다. 이 자습서에서는 MySQL을 사용합니다.

먼저 apt-get을 업데이트합니다.

  1. sudo apt-get update

이제 apt-get을 사용하여 MySQL 서버를 설치합니다.

  1. sudo apt-get install mysql-server

MySQL 데이터베이스 관리 사용자인 root의 암호를 입력하라는 메시지가 표시됩니다. 암호를 입력한 다음 확인하십시오.

이 암호는 Bacula 설치 과정에서 사용되므로 기억해 두십시오.

바큘라 설치

apt-get을 사용하여 Bacula 서버 및 클라이언트 구성 요소를 설치합니다.

  1. sudo apt-get install bacula-server bacula-client

Bacula가 사용하는 Postfix를 구성하는 데 사용할 몇 가지 정보를 입력하라는 메시지가 표시됩니다.

  • 일반 유형의 메일 구성: "인터넷 사이트\ 선택
  • 시스템 메일 이름: 서버의 FQDN 또는 호스트 이름 입력

다음으로 Bacula 데이터베이스를 설정하는 데 사용할 정보를 입력하라는 메시지가 표시됩니다.

  • dbconfig-common을 사용하여 bacula-director-mysql에 대한 데이터베이스 구성?: "예\를 선택합니다.
  • 데이터베이스 관리 사용자 비밀번호: MySQL 루트 비밀번호 입력(MySQL 설치 시 설정)
  • bacula-director-mysql용 MySQL 애플리케이션 암호: 새 암호를 입력하고 확인하거나 임의의 암호를 생성하려면 프롬프트를 비워두십시오.

설치의 마지막 단계는 카탈로그 백업 작업 중에 Bacula가 사용하는 스크립트의 권한을 업데이트하는 것입니다.

  1. sudo chmod 755 /etc/bacula/scripts/delete_catalog_backup

이제 Bacula 서버(및 클라이언트) 구성 요소가 설치되었습니다. 백업 및 복원 디렉터리를 생성해 보겠습니다.

백업 및 복원 디렉터리 만들기

Bacula는 백업 아카이브를 저장하기 위한 백업 디렉토리와 복원된 파일이 배치될 복원 디렉토리가 필요합니다. 시스템에 여러 파티션이 있는 경우 충분한 공간이 있는 파티션에 디렉토리를 생성해야 합니다.

이 두 가지 목적을 위해 새 디렉터리를 생성해 보겠습니다.

  1. sudo mkdir -p /bacula/backup /bacula/restore

bacula 프로세스(및 수퍼유저)만 이러한 위치에 액세스할 수 있도록 파일 권한을 변경해야 합니다.

  1. sudo chown -R bacula:bacula /bacula
  2. sudo chmod -R 700 /bacula

이제 Bacula Director를 구성할 준비가 되었습니다.

Bacula 디렉터 구성

Bacula에는 올바르게 작동하기 위해 독립적으로 구성해야 하는 여러 구성 요소가 있습니다. 구성 파일은 모두 /etc/bacula 디렉토리에서 찾을 수 있습니다.

Bacula Director부터 시작하겠습니다.

선호하는 텍스트 편집기에서 Bacula Director 구성 파일을 엽니다. 우리는 vi를 사용할 것입니다:

  1. sudo vi /etc/bacula/bacula-dir.conf

로컬 작업 구성

Bacula 작업은 백업 및 복원 작업을 수행하는 데 사용됩니다. 작업 자원은 무엇보다도 클라이언트의 이름, 백업 또는 복원할 FileSet을 포함하여 특정 작업이 수행할 작업에 대한 세부사항을 정의합니다.

여기서는 로컬 파일 시스템의 백업을 수행하는 데 사용할 작업을 구성합니다.

Director 구성에서 이름이 \BackupClient1인 작업 리소스를 찾습니다(\BackupClient1 검색). Name의 값을 "BackupLocalFiles”로 변경하여 다음과 같이 표시합니다.

Job {
  Name = "BackupLocalFiles"
  JobDefs = "DefaultJob"
}

다음으로 이름이 \RestoreFiles인 작업 리소스를 찾습니다(\RestoreFiles 검색). 이 작업에서 두 가지를 변경하려고 합니다. Name 값을 "RestoreLocalFiles”로 업데이트하고 Where 값을 "/bacula/restore”로 업데이트합니다. 다음과 같아야 합니다.

Job {
  Name = "RestoreLocalFiles"
  Type = Restore
  Client=BackupServer-fd
  FileSet="Full Set"
  Storage = File
  Pool = Default
  Messages = Standard
  Where = /bacula/restore
}

이렇게 하면 이전에 생성한 디렉터리인 /bacula/restore에 파일을 복원하도록 RestoreLocalFiles 작업이 구성됩니다.

파일 세트 구성

Bacula FileSet은 백업 선택 항목에서 파일을 포함하거나 제외하고 작업에서 사용하는 파일 또는 디렉터리 집합을 정의합니다.

\Full Set라는 이름의 FileSet 리소스를 찾습니다(\# List of files to be backup이라는 주석 아래에 있음). 여기에서 세 가지를 변경합니다. (1) gzip을 사용하여 백업을 압축하는 옵션 추가, (2) 포함 파일을 /usr/sbin에서 /로 변경, (3) 두 번째 제외 파일을 /bacula로 변경합니다. 주석을 제거하면 다음과 같이 표시됩니다.

FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }    
File = /
}
  Exclude {
    File = /var/lib/bacula
    File = /bacula
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}

"Full Set\ FileSet에 대한 변경 사항을 살펴보겠습니다. 먼저 백업 아카이브를 생성할 때 gzip 압축을 활성화했습니다. 두 번째로 루트 파티션인 /를 포함합니다. 셋째, Bacula 백업 및 복원된 파일을 중복 백업하지 않기 위해 /bacula를 제외합니다.

Note: If you have partitions that are mounted within /, and you want to include those in the FileSet, you will need to include additional File records for each of them.

백업 작업에서 "전체 세트\와 같은 광범위한 파일 세트를 항상 사용하는 경우 백업 선택 항목이 보다 구체적일 때보다 백업에 더 많은 디스크 공간이 필요합니다. 예를 들어 사용자 정의된 구성만 포함하는 파일 세트 필요한 소프트웨어 패키지를 설치하고 복원된 파일을 적절한 위치에 배치하면서 디스크 공간의 일부만 백업 아카이브에 사용하는 명확한 복구 계획이 있는 경우 파일 및 데이터베이스로 충분할 수 있습니다.

스토리지 데몬 연결 구성

Bacula Director 구성 파일에서 Storage 리소스는 Director가 연결해야 하는 Storage Daemon을 정의합니다. 잠시 후 실제 Storage Daemon을 구성합니다.

스토리지 리소스를 찾아 주소 값 localhost를 백업 서버의 프라이빗 FQDN(또는 프라이빗 IP 주소)으로 바꿉니다. 다음과 같아야 합니다(강조 표시된 단어로 대체).

Storage {
  Name = File
# Do not use "localhost" here
  Address = backup_server_private_FQDN                # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "ITXAsuVLi1LZaSfihQ6Q6yUCYMUssdmu_"
  Device = FileStorage
  Media Type = File
}

원격 클라이언트가 연결할 수 있도록 사설 네트워크 인터페이스에서 수신 대기하도록 Storage Daemon을 구성할 것이기 때문에 필요합니다.

풀 구성

풀 리소스는 Bacula가 백업을 쓰기 위해 사용하는 스토리지 세트를 정의합니다. 파일을 스토리지 볼륨으로 사용하고 로컬 백업에 적절한 레이블이 지정되도록 레이블을 업데이트하기만 하면 됩니다.

"File\이라는 풀 리소스를 찾고("# File Pool definition\이라는 주석 아래에 있음) 레이블 형식을 지정하는 줄을 추가합니다. 완료되면 다음과 같이 표시됩니다.

# File Pool definition
Pool {
  Name = File
  Pool Type = Backup
  Label Format = Local-
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
}

저장 및 종료. 드디어 Bacula Director 구성이 완료되었습니다.

디렉터 구성 확인:

Director 구성 파일에 구문 오류가 없는지 확인하십시오.

  1. sudo bacula-dir -tc /etc/bacula/bacula-dir.conf

오류 메시지가 없으면 bacula-dir.conf 파일에 구문 오류가 없는 것입니다.

다음으로 Storage Daemon을 구성합니다.

스토리지 데몬 구성

Bacula 서버가 거의 설정되었지만 Bacula가 백업을 저장할 위치를 알 수 있도록 Storage Daemon을 구성해야 합니다.

즐겨 사용하는 텍스트 편집기에서 SD 구성을 엽니다. 우리는 vi를 사용할 것입니다:

  1. sudo vi /etc/bacula/bacula-sd.conf

스토리지 리소스 구성

저장소 리소스를 찾습니다. 이는 SD 프로세스가 연결을 수신하는 위치를 정의합니다. SDAddress 매개변수를 추가하고 백업 서버의 사설 FQDN(또는 사설 IP 주소)에 할당합니다.

Storage {                             # definition of myself
  Name = BackupServer-sd
  SDPort = 9103                  # Director's port
  WorkingDirectory = "/var/lib/bacula"
  Pid Directory = "/var/run/bacula"
  Maximum Concurrent Jobs = 20
  SDAddress = backup_server_private_FQDN
}

저장 장치 구성

다음으로 "FileStorage\라는 장치 리소스를 찾고("FileStorage\ 검색) 백업 디렉터리와 일치하도록 아카이브 장치의 값을 업데이트합니다.

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /bacula/backup 
  LabelMedia = yes;                   # lets Bacula label unlabeled media
  Random Access = Yes;
  AutomaticMount = yes;               # when device opened, read it
  RemovableMedia = no;
  AlwaysOpen = no;
}

저장 및 종료.

스토리지 데몬 구성 확인

Storage Daemon 구성 파일에 구문 오류가 없는지 확인하겠습니다.

  1. sudo bacula-sd -tc /etc/bacula/bacula-sd.conf

오류 메시지가 없으면 bacula-sd.conf 파일에 구문 오류가 없는 것입니다.

Bacula 구성을 완료했습니다. Bacula 서버 구성 요소를 다시 시작할 준비가 되었습니다.

Bacula Director 및 Storage Daemon 재시작

구성 변경 사항을 적용하려면 다음 명령을 사용하여 Bacula Director 및 Storage Daemon을 다시 시작하십시오.

  1. sudo service bacula-director restart
  2. sudo service bacula-sd restart

이제 두 서비스가 모두 다시 시작되었으므로 백업 작업을 실행하여 작동하는지 테스트해 보겠습니다.

테스트 백업 작업

Bacula 콘솔을 사용하여 첫 번째 백업 작업을 실행합니다. 아무 문제 없이 실행되면 Bacula가 올바르게 구성되었음을 알 수 있습니다.

이제 다음 명령으로 콘솔에 들어갑니다.

  1. sudo bconsole

이렇게 하면 * 프롬프트로 표시된 Bacula 콘솔 프롬프트로 이동합니다.

라벨 만들기

label 명령을 실행하여 시작하십시오.

  1. label

볼륨 이름을 입력하라는 메시지가 표시됩니다. 원하는 이름을 입력하십시오.

Enter new Volume name:
MyVolume

그런 다음 백업에서 사용해야 하는 풀을 선택합니다. "2\를 입력하여 이전에 구성한 "파일\ 풀을 사용합니다.

Select the Pool (1-3):
2

수동으로 백업 작업 실행

Bacula는 이제 백업을 위해 데이터를 쓰는 방법을 알고 있습니다. 이제 백업을 실행하여 올바르게 작동하는지 테스트할 수 있습니다.

  1. run

실행할 작업을 선택하라는 메시지가 표시됩니다. "BackupLocalFiles\ 작업을 실행하려고 하므로 프롬프트에 "1\을 입력합니다.

Select Job resource (1-3):
1

"백업 작업 실행\ 확인 프롬프트에서 세부 정보를 검토한 다음 "yes\를 입력하여 작업을 실행합니다.

  1. yes

메시지 및 상태 확인

작업을 실행한 후 Bacula는 메시지가 있다고 알려줍니다. 메시지는 작업을 실행하여 생성된 출력입니다.

다음을 입력하여 메시지를 확인하십시오.

  1. messages

메시지에는 "이전 전체 백업 작업 레코드가 없습니다.\라고 표시되고 백업 작업이 시작되었다고 표시되어야 합니다. 오류가 있는 경우 문제가 있는 것이며 작업이 실행되지 않은 이유에 대한 힌트를 제공해야 합니다.

작업 상태를 확인하는 또 다른 방법은 Director의 상태를 확인하는 것입니다. 이렇게 하려면 bconsole 프롬프트에서 다음 명령을 입력합니다.

  1. status director

모든 것이 제대로 작동하면 작업이 실행되고 있음을 확인할 수 있습니다. 이 같은:

Output — status director (Running Jobs)
Running Jobs: Console connected at 09-Apr-15 12:16 JobId Level Name Status ====================================================================== 3 Full BackupLocalFiles.2015-04-09_12.31.41_06 is running ====

작업이 완료되면 다음과 같이 상태 보고서의 "종료된 작업\ 섹션으로 이동합니다.

Output — status director (Terminated Jobs)
Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 3 Full 161,124 877.5 M OK 09-Apr-15 12:34 BackupLocalFiles

"OK\ 상태는 백업 작업이 아무 문제 없이 실행되었음을 나타냅니다. 축하합니다! Bacula 서버의 "전체 세트\ 백업이 있습니다.

다음 단계는 복원 작업을 테스트하는 것입니다.

복원 작업 테스트

이제 백업이 생성되었으므로 제대로 복원할 수 있는지 확인하는 것이 중요합니다. restore 명령을 사용하면 백업된 파일을 복원할 수 있습니다.

모든 복원 작업 실행

시연을 위해 마지막 백업의 모든 파일을 복원합니다.

  1. restore all

복원할 백업 세트를 식별하는 데 사용되는 다양한 옵션이 있는 선택 메뉴가 나타납니다. 단일 백업만 있으므로 "가장 최근 백업 선택\—옵션 5를 선택합니다.

Select item (1-13):
5

클라이언트는 Bacula 서버 하나만 있기 때문에 자동으로 선택됩니다.

다음 프롬프트는 사용할 FileSet을 묻습니다. "풀 세트\를 선택합니다. 2여야 합니다.

Select FileSet resource (1-2):
2

이렇게 하면 백업한 전체 디렉터리 구조가 있는 가상 파일 트리로 이동합니다. 이 셸과 유사한 인터페이스를 사용하면 복원할 파일을 표시하거나 표시 해제하는 간단한 명령을 사용할 수 있습니다.

"모두 복원\하도록 지정했기 때문에 백업된 모든 파일은 이미 복원용으로 표시되어 있습니다. 표시된 파일은 선행 * 문자로 표시됩니다.

선택 항목을 미세 조정하려면 "ls\ 및 "cd\ 명령으로 파일을 탐색 및 나열하고, "mark\로 복원할 파일을 표시하고, "unmark\로 파일 표시를 해제할 수 있습니다. 콘솔에 "help\를 입력하면 전체 명령 목록을 볼 수 있습니다.

복원 선택을 마쳤으면 다음을 입력하여 진행합니다.

  1. done

복원 작업을 실행할지 확인합니다.

OK to run? (yes/mod/no):
yes

메시지 및 상태 확인

백업 작업과 마찬가지로 복원 작업을 실행한 후 메시지와 디렉터 상태를 확인해야 합니다.

다음을 입력하여 메시지를 확인하십시오.

  1. messages

복원 작업이 시작되었거나 "복원 확인\ 상태로 종료되었다는 메시지가 있어야 합니다. 오류가 있는 경우 문제가 있는 것이며 작업이 실행되지 않은 이유에 대한 힌트를 제공해야 합니다.

다시 말하지만 디렉터 상태를 확인하는 것은 복원 작업의 상태를 확인하는 좋은 방법입니다.

  1. status director

복원이 완료되면 exit를 입력하여 Bacula 콘솔을 종료합니다.

  1. exit

복원 확인

복원 작업이 선택한 파일을 실제로 복원했는지 확인하려면 /bacula/restore 디렉토리(Director 구성의 "RestoreLocalFiles\ 작업에 정의됨)에서 확인할 수 있습니다.

  1. sudo ls -la /bacula/restore

"RestoreLocalFiles\ 작업의 "Exclude\ 섹션에 나열된 파일 및 디렉토리를 제외하고 루트 파일 시스템에 복원된 파일 사본이 표시되어야 합니다. 데이터 손실을 복구하려는 경우 복원된 파일을 적절한 위치에 복사할 수 있습니다.

복원된 파일 삭제

디스크 공간을 확보하기 위해 복원된 파일을 삭제할 수 있습니다. 이렇게 하려면 다음 명령을 사용합니다.

  1. sudo -u root bash -c "rm -rf /bacula/restore/*"

많은 복원된 파일이 루트 소유이므로 이 rm 명령을 루트로 실행해야 합니다.

결론

이제 로컬 파일 시스템을 백업하고 복원할 수 있는 기본 Bacula 설정이 있습니다. 다음 단계는 데이터 손실 시 복구할 수 있도록 다른 서버를 백업 클라이언트로 추가하는 것입니다.

다음 자습서에서는 다른 원격 서버를 Bacula 클라이언트로 추가하는 방법을 보여줍니다. Bacula로 Ubuntu 14.04 서버를 백업하는 방법.