QNAPに「さくらのVPS」のシステムバックアップを自動でおこなう①

本日の目的

さくらのVPS上に構築しているubuntu20.04のシステムバックアップ&データバックアップを自宅のNASであるQNAPの機能を使って実装する。

前提条件

  • システムバックアップはtimeshiftを利用する
  • システムバックアップは任意のタイミング(手動で大きなアプリを導入等)
  • DBは日次バックアップする
  • QNAPのGUIから操作できるものとする

手順

  • さくらVPS上のubuntuにqnap経由でrsyncできるように設定する
  • crondによりpostgresのDBをn世代取得する
  • TimeShiftによるubuntuのシステムバックアップ
  • QNAP上でのバックアップ設定

さくらVPS上のubuntuにqnap経由でrsyncできるように設定

大きく分けて2パターンの手順がある。

  • 手順1 rsyncdを有効 = 確実だが、経路が暗号化されない
  • 手順2 ssh経由での接続 = 経路はsshにより暗号化されるが接続条件の一部が不明

どちらかで実施する。 手順1は、少し作業が多いが確実に動く(と思う) 手順2は、rsync用のユーザを作成しsudo/no passwordでrsyncできるような設定で動作を確認している。 一部不正確な部分もあることを了承してほしい。

手順1(RSYNCで直接連携させる)

rsyncdの設定ファイル+パスワードファイル、設定を有効化してrsyncを再起動させる必要がある。

/etc/rsyncd.conf [新規作成]

$ sudo nano /etc/rsyncd.conf
#
# Global options
#
uid = root
gid = root
hosts allow = xxxx.myqnapcloud.com
hosts deny = *
list = true
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png

#
# Module options
#

[timeshift]
        path = /timeshift/
        read only = false
        auth users = user1
        secrets file = /etc/rsyncd.secrets

QNAPのDDNSサービスを利用して、QNAP(自宅インターネット回線のIP)からのみ接続可能に設定。 他にもバックアップをとりたいフォルダがある場合は、それぞれ増やせばよい。

/etc/rsyncd.secrets [新規作成]

$ sudo nano /etc/rsyncd.secrets
user1:[password]
user2:[password]

IDと認証パスワードのファイルとなる。

sudo chmod 0600 /etc/rsyncd.secrets

パスワードがそのまんま書いてあるのもあるので、root以外はアクセス不可にパーミッション変更する。

rsyncd(サーバ)の有効化準備

/etc/default/rsync [変更]

$ sudo nano /etc/rsyncd.secrets
RSYNC_ENABLE=true

rsyncの再起動(設定の有効化)

$ sudo systemctl restart rsync

手順2(SSH経由でRSYNCさせる)

rsync用のアカウントを作成。

$ sudo adduser rsync_op
ntoh@moooi:~$ sudo adduser rsync_op
ユーザー `rsync_op' を追加しています...
新しいグループ `rsync_op' (1005) を追加しています...
新しいユーザー `rsync_op' (1005) をグループ `rsync_op' に追加しています...
ホームディレクトリ `/home/rsync_op' を作成しています...
`/etc/skel' からファイルをコピーしています...
新しいパスワード: 
新しいパスワードを再入力してください: 
passwd: パスワードは正しく更新されました
rsync_op のユーザ情報を変更中
新しい値を入力してください。標準設定値を使うならリターンを押してください
        フルネーム []: 
        部屋番号 []: 
        職場電話番号 []: 
        自宅電話番号 []: 
        その他 []: 
以上で正しいですか? [Y/n] 

必要な情報を追加。password等を設定

$ visudo [追記]
rsync_op ALL=(ALL) NOPASSWD:/usr/bin/rsync

おまじない

該当ユーザでdesktop(VNCコンソールでも可)で一度ログインする。 これをしないと、なぜかqnap上の登録の途中で実施するテストに権限不足エラーが発生した。