MondoRescueでCentOS7のバックアップをした記録

CentOS7のバックアップが取りたい。設定やログファイルだけではなくて、システムバックアップを保管しておきたい。
やれやれ。僕は検索した。

※なおこれは2020/03/31に実行した記録なので、この通りにいかない可能性は充分にあります。

# 検索

【参考】
https://enz0.net/software/linux_mondorescue/
https://qiita.com/KEINOS/items/95f8138a9907d86e78a7
https://blog.techlab-xe.net/install-mondorescue-centos7/


# mondoの導入

ふむふむ、**MondoRescue**とかいうのを使うわけだな。
ひとまず`ftp://ftp.mondorescue.org/rhel/7/x86_64/mondorescue.repo`から`mondorescue.repo`を落としてきた。

```console
# cd /etc/yum.repos.d
# wget ftp://ftp.mondorescue.org/rhel/7/x86_64/mondorescue.repo
# yum --enablerepo=mondorescue install mondo
```

しかしインストール途中で失敗してしまった。

```
warning: /var/cache/yum/x86_64/7/mondorescue/packages/perl-ProjectBuilder-0.15.2-1.rhel7.noarch.rpm: Header V4 RSA/SHA512 Signature, key ID 20ebfb0e: NOKEY
Retrieving key from ftp://ftp.mondorescue.org//rhel/7/x86_64/mondorescue.pubkey


The GPG keys listed for the "rhel 7 x86_64 - mondorescue Vanilla Packages" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.


 Failing package is: perl-ProjectBuilder-0.15.2-1.rhel7.noarch
 GPG Keys are configured as: ftp://ftp.mondorescue.org//rhel/7/x86_64/mondorescue.pubkey
```


`perl-ProjectBuilder-0.15.2-1.rhel7.noarch.rpm` が正しく落とせないようだ。
というわけで別のリポジトリ`http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo`から落とし直してみた。

```console
# yum clean all
# rm mondorescue.repo
# wget http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo
# yum install mondo
```

```
Installed:
  mondo.x86_64 0:3.2.2-1.rhel7                                                                                                                              

Dependency Installed:
  afio.x86_64 0:2.5-1.rhel7                         buffer.x86_64 0:1.19-4.rhel7                      gdbm-devel.x86_64 0:1.10-8.el7                      
  genisoimage.x86_64 0:1.1.11-25.el7                libdb-devel.x86_64 0:5.3.21-25.el7                libusal.x86_64 0:1.1.11-25.el7                      
  mindi.x86_64 0:3.0.2-1.rhel7                      mindi-busybox.x86_64 0:1.21.1-1.rhel7             mtools.x86_64 0:4.0.18-5.el7                        
  perl-CPAN-Meta.noarch 0:2.120921-5.el7            perl-CPAN-Meta-Requirements.noarch 0:2.122-7.el7  perl-CPAN-Meta-YAML.noarch 0:0.008-14.el7           
  perl-Digest.noarch 0:1.17-245.el7                 perl-Digest-MD5.x86_64 0:2.52-3.el7               perl-ExtUtils-CBuilder.noarch 1:0.28.2.6-294.el7_6  
  perl-ExtUtils-Install.noarch 0:1.58-294.el7_6     perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7       perl-ExtUtils-Manifest.noarch 0:1.61-244.el7        
  perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7         perl-IO-Interface.x86_64 0:1.05-2.el7             perl-IPC-Cmd.noarch 1:0.80-4.el7                    
  perl-JSON-PP.noarch 0:2.27202-2.el7               perl-Locale-Maketext.noarch 0:1.23-3.el7          perl-Locale-Maketext-Simple.noarch 1:0.21-294.el7_6 
  perl-Module-Build.noarch 2:0.40.05-2.el7          perl-Module-CoreList.noarch 1:2.76.02-294.el7_6   perl-Module-Load.noarch 1:0.24-3.el7                
  perl-Module-Load-Conditional.noarch 0:0.54-3.el7  perl-Module-Metadata.noarch 0:1.000018-2.el7      perl-Module-ScanDeps.noarch 0:1.10-3.el7            
  perl-MondoRescue.noarch 0:3.2.2-1.rhel7           perl-Net-IPv4Addr.noarch 0:0.10-19.el7            perl-Params-Check.noarch 1:0.38-2.el7               
  perl-Parse-CPAN-Meta.noarch 1:1.4404-5.el7        perl-Perl-OSType.noarch 0:1.003-3.el7             perl-ProjectBuilder.noarch 0:0.15.2-1.rhel7         
  perl-YAML.noarch 0:0.84-5.el7                     perl-devel.x86_64 4:5.16.3-294.el7_6              perl-version.x86_64 3:0.99.07-3.el7                 
  pyparsing.noarch 0:1.5.6-9.el7                    syslinux.x86_64 0:4.05-15.el7                     systemtap-sdt-devel.x86_64 0:4.0-10.el7_7           
  wodim.x86_64 0:1.1.11-25.el7                     

Dependency Updated:
  libdb.x86_64 0:5.3.21-25.el7                                              libdb-utils.x86_64 0:5.3.21-25.el7                                             

Complete!
```

うまくいったようだ。


バックアップを取りたいサーバは２つあったので、同じ要領でmondoのインストールを試みた。
最初から後者のリポジトリ（`http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo`）を指定して進めてみた。

```console
# cd /etc/yum.repos.d
# wget http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo
# yum install mondo
```

```
Retrieving key from ftp://ftp.mondorescue.org//centos/7/x86_64/mondorescue.pubkey


The GPG keys listed for the "centos 7 x86_64 - mondorescue Vanilla Packages" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.


 Failing package is: afio-2.5-1.centos7.x86_64
 GPG Keys are configured as: ftp://ftp.mondorescue.org//centos/7/x86_64/mondorescue.pubkey
```


……………。

今度は`afio-2.5-1.centos7.x86_64`のインストールで失敗してしまった。


![c4e98097.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287205/ce6e4d0d-b067-32c8-3fc1-f44a682b415e.jpeg)


逆順で、最初のリポジトリ（`ftp://ftp.mondorescue.org/rhel/7/x86_64/mondorescue.repo`）を設定し直した。

```console
# yum clean all
# rm mondorescue.repo
# wget ftp://ftp.mondorescue.org/rhel/7/x86_64/mondorescue.repo
# yum --enablerepo=mondorescue install mondo
```


```
Installed:
  mondo.x86_64 0:3.3.0-1.centos7                                                                                                                            

Dependency Installed:
  afio.x86_64 0:2.5-1.centos7                       buffer.x86_64 0:1.19-8.centos7                    gdbm-devel.x86_64 0:1.10-8.el7                      
  genisoimage.x86_64 0:1.1.11-25.el7                libdb-devel.x86_64 0:5.3.21-25.el7                libusal.x86_64 0:1.1.11-25.el7                      
  mindi.x86_64 0:3.3.0-1.centos7                    mindi-busybox.x86_64 0:1.25.1-1.centos7           mtools.x86_64 0:4.0.18-5.el7                        
  perl-CPAN-Meta.noarch 0:2.120921-5.el7            perl-CPAN-Meta-Requirements.noarch 0:2.122-7.el7  perl-CPAN-Meta-YAML.noarch 0:0.008-14.el7           
  perl-Digest.noarch 0:1.17-245.el7                 perl-Digest-MD5.x86_64 0:2.52-3.el7               perl-ExtUtils-CBuilder.noarch 1:0.28.2.6-294.el7_6  
  perl-ExtUtils-Install.noarch 0:1.58-294.el7_6     perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7       perl-ExtUtils-Manifest.noarch 0:1.61-244.el7        
  perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7         perl-IO-Interface.x86_64 0:1.05-2.el7             perl-IPC-Cmd.noarch 1:0.80-4.el7                    
  perl-JSON-PP.noarch 0:2.27202-2.el7               perl-Locale-Maketext.noarch 0:1.23-3.el7          perl-Locale-Maketext-Simple.noarch 1:0.21-294.el7_6 
  perl-Module-Build.noarch 2:0.40.05-2.el7          perl-Module-CoreList.noarch 1:2.76.02-294.el7_6   perl-Module-Load.noarch 1:0.24-3.el7                
  perl-Module-Load-Conditional.noarch 0:0.54-3.el7  perl-Module-Metadata.noarch 0:1.000018-2.el7      perl-Module-ScanDeps.noarch 0:1.10-3.el7            
  perl-MondoRescue.noarch 0:3.3.0-1.centos7         perl-Net-IPv4Addr.noarch 0:0.10-19.el7            perl-Params-Check.noarch 1:0.38-2.el7               
  perl-Parse-CPAN-Meta.noarch 1:1.4404-5.el7        perl-Perl-OSType.noarch 0:1.003-3.el7             perl-ProjectBuilder.noarch 0:0.15.2-1.centos7       
  perl-YAML.noarch 0:0.84-5.el7                     perl-devel.x86_64 4:5.16.3-294.el7_6              perl-version.x86_64 3:0.99.07-3.el7                 
  pyparsing.noarch 0:1.5.6-9.el7                    syslinux.x86_64 0:4.05-15.el7                     systemtap-sdt-devel.x86_64 0:4.0-10.el7_7           
  wodim.x86_64 0:1.1.11-25.el7                     

Dependency Updated:
  libdb.x86_64 0:5.3.21-25.el7                                              libdb-utils.x86_64 0:5.3.21-25.el7                                             

Complete!
```

今度はエラーにならなかった。

つまり

`ftp://ftp.mondorescue.org/rhel/7/x86_64/mondorescue.repo`
→ `perl-ProjectBuilder-0.15.2-1.rhel7.noarch.rpm` 落とせず

`http://www.mondorescue.org/ftp/centos/7/x86_64/mondorescue.repo`
→ `afio-2.5-1.centos7.x86_64` 落とせず

という結果になった。一方のリポジトリを指定しつつ、そこで足りないやつを追加で入れてあげるのが良さそうだ。



# 要するに

したがって https://qiita.com/KEINOS/items/95f8138a9907d86e78a7 にあるように

```console
# cd ~/
# yum -y update
# wget ftp://ftp.mondorescue.org/rhel/7/x86_64/perl-ProjectBuilder-0.14.5-1.rhel7.noarch.rpm
# rpm -ivh perl-ProjectBuilder-0.14.5-1.rhel7.noarch.rpm

# cd /etc/yum.repos.d/
# wget ftp://ftp.mondorescue.org/rhel/7/x86_64/mondorescue.repo
# yum --enablerepo=mondorescue install mondo
```

の手順でやれば行けるのだと思う。**（試してはいない）**

そもそも上の2ケースについて、前者のサーバはrhelリポジトリ、後者はcentosリポジトリから持ってきているので、完全に同じものというわけではない。バックアップ対象は廃棄予定サーバだったので細かいことはどうでもいいが、運用で使うのであればきちんと統一すべきでしょうね。



# lzopの導入

圧縮用に、追加でlzopを落とした。

```console
# yum install lzop
```

# mindi設定編集

バックアップ作成時にエラーを吐きよるので、mindi.confを編集した。

```console
# vi /etc/mindi/mindi.conf
```

```mindi.conf
EXTRA_SPACE=1500000
BOOT_SIZE=40960
```

# バックアップ

つづいてバックアップ先を作成して実行。
上にも挙げた、こちらのサイトがよくまとまっているので、そのまま使わせて頂いた。
https://enz0.net/software/linux_mondorescue/


```console
# mkdir /_backup
# mondoarchive -Oi -L -N -d /_backup -E /_backup -p `hostname`-`date +%Y-%m-%d`
```
```
    -O : バックアップ実行
    -i : ISO形式
    -L : lzo圧縮
    -N : ローカルディスクのみ対象
    -d : バックアップ出力先パス
    -E : バックアップ除外パス
    -p : ISOファイル名プレフィックス
```

↓こんな感じでログが出たらOK

```
Backup and/or verify ran to completion. Everything appears to be fine.
/var/cache/mindi/mindi.iso, a boot/utility CD, is available if you want it.
Data archived OK. 
Mondoarchive ran OK.
See /var/log/mondoarchive.log for details of backup run.
Execution run ended; result=0
Type 'less /var/log/mondoarchive.log' to see the output log
```


```console
# ll /_backup
-rw-r--r-- 1 root root 680396800 Mar 31 12:04 hostname-2020-03-31-1.iso
-rw-r--r-- 1 root root 680368128 Mar 31 12:05 hostname-2020-03-31-2.iso
-rw-r--r-- 1 root root 678404096 Mar 31 12:05 hostname-2020-03-31-3.iso
...
```

バックアップが生成されている。めでたしめでたし。
システムによってはかなりのファイルサイズになるので、ちゃんと容量計算してあげよう。