何度もインストールし直すのも面倒なので、色々アプリを入れる前に、バックアップ環境を整備してみる。
幸い、Qiita に先行事例が上がっているので、それを参考に。
https://qiita.com/halpas/items/2f51d3b9954367f1587e
参考事例では、バックアップ先をクラウドにしているが、私の場合はNASがあるので、そこにバックアップ取れないか試してみる。
1. NAS側の準備
さくらVPSのCentOSから事務所のNASにリモートバックアップを行いたい場合、兎にも角にも、CentOSからNASの共有フォルダをマウントしないと話にならない。
LinuxからSynology NASの共有フォルダをマウントするには、SambaかNFSかWebDavあたりが候補になる。
ただ、以前に弐号機にUbuntuをインストールして、NASをマウントしようとしたときに、NFSではうまく行かず、Sambaを使った場合も結構手順が面倒だった記憶がある。
また、インターネット経由でのアクセスになるので、暗号化対応しているもの…と考えると、WebDavが無難か。
ということで、まずはNAS側でWebDav接続できるように準備する。
1.1. 共有フォルダを作成
DSMにアクセスして、「コントロールパネル」>「共有フォルダ」から、バックアップ格納先の共有フォルダを作成する。
1.2. WebDav Server パッケージのインストール
デフォルトでWebDavが使えるわけではないので、パッケージをインストールする。とはいえ、手順的には「パッケージセンター」から「WebDAV Server」を探してインストールするだけ。
インストールしたら、設定を行う。
- HTTPSを有効にする:チェック入れる
- WebDAVログを有効にする:チェック入れる
HTTPSで使うポート番号を控えておき、ルーターでポートを後ほど開ける。Synology側で対応しているNASなら、DSM側からポート開放の設定ができるが、事務所で使っているルーターは対応外なので、別途ルーターの管理画面から設定する。
2. CentOS から NASのWebDAVをマウント
2.1. リポジトリの追加
WebDAVマウントに使うパッケージがデフォルトのリポジトリにはないので、EPELのリポジトリを追加しておく。
dnf install -y epel-release
普段は無効化しておき、必要な時だけリポジトリを都度指定する。
vi /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
#baseurl=https://download.fedoraproject.org/pub/epel/$releasever/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=1 ← ここを0に変更
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
(以下略)
2.2. davfs2 のインストール
dnf install -y --enablerepo epel davfs2
2.3. 保存先ディレクトリの作成とNASのマウント
mkdir /backup
mount -t davfs https://hogehoge.diskstation.me:[port]/[共有フォルダ名]/[バックアップ置き場]/ /backup
マウントするときには、NASのID/Passを聞かれるので、入力。
3. バックアップの設定
3.1. Mondo Rescueのインストール
dnf install -y tar
dnf install -y wget
cd /etc/yum.repos.d/
wget http://www.mondorescue.org/ftp/centos/8/x86_64/mondorescue.repo
dnf -y install mondo lzop
vi /etc/mindi/mindi.conf
EXTRA_SPACE=240000 #追記
BOOT_SIZE=100000 #追記
3.2. バックアップスクリプト
vi /etc/cron.daily/auto_backup.sh
#!/bin/bash
today=$(date +%Y%m%d)
setenforce 0
#Backup_日付.isoのファイル名でバックアップ
mondoarchive -O -i -N -L -s25g -E"/backup" -d /tmp -p Backup_${today}
#バックアップイメージを移動
mv /tmp/Backup_${today}-1.iso /backup
#古いバックアップイメージを削除
find /backup -type f -mtime +4 -exec rm -f {} \;
setenforce 1
chmod 755 /etc/cron.daily/auto_backup.sh
何度か試してエラーになったが、tarコマンドが入ってなくてエラーになっていたり、mindi の設定を変えて試してみたところ、バックアップを取得して、それをNASに書き込むところまで出来た。
あとは、cronでバックアップが回るかの確認を行ったら、リストアを試してみよう。