途中まではその3の手順と同じで行く。バックアップはrsyncを使う予定だが、直接rsyncコマンドでバックアップするんじゃなく、WebDAVでマウントしたフォルダをバックアップ先にしてみる。
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を聞かれるので、入力。
2.4. NASを自動でマウント
vi /etc/fstab
https://hogehoge.diskstation.me:[port]/[共有フォルダ名]/[バックアップ置き場] /backup davfs noauto,rw,nouser,nofail,x-systemd.automount,x-systemd.device-timeout=30,_netdev 0 0 #最終行に追記
vi /etc/davfs2/secrets
https://hogehoge.diskstation.me:[port]/[共有フォルダ名]/[バックアップ置き場] [NASのユーザー名] [NASのパスワード] #最終行に追記
chmod 600 /etc/davfs2/secrets
3. バックアップの実施
dnf install -y rsync
vi /etc/cron.daily/auto_backup.sh
#!/bin/bash
setenforce 0
rsync -avh --delete --exclude={"/backup/","/dev/","/proc/","/sys/","/tmp/","/run/","/mnt/","/media/","/lost+found"} / /backup
setenforce 1
chmod 755 /etc/cron.daily/auto_backup.sh