QNAPからLinuxへ rsyncでバックアップをとろう

サーバーとして利用している QNAP NAS と、バックアップ用に構築したLinux(CentOS8)をRsyncで同期し、定期的なバックアップをとることが目標となります。Linuxの基本的な構築は完了しているものとして、Rsyncのインストールから同期の完了までをまるっと解説していこうと思います。

はじめまして、8月からギークフィードに入社しましたhagaです。最初のミッションとして社内サーバーのバックアップを行ったので、備忘録としての意味もかねて軽く解説していこうと思います。

内容はタイトルにあるとおりです。サーバーとして利用しているQNAP NASを、rsyncを利用してLinux(CentOS8)に同期し、定期的なバックアップをとることが目標になります。今回、Linuxの基本的な構築は完了しているものとして、rsyncのインストールから同期の完了までの部分を解説していこうと思います。

ちなみに今回バックアップ先として用意したLinuxは、HP社のMicroServer上に構築してあります。

 

前提

 

  • 今回LinuxのOSとして使用しているのはCentOS8である
  • QNAP, Linuxともに固定IPアドレスが割り当てられている
  • QNAP, Linuxは同一ネットワーク上にある

 

やってみよう

rsyncの構築

QNAP NASではバックアップ用のアプリケーションがGUIで搭載されているので、行う作業はほとんどLinux側になります。(指定がない限り基本Linux側での作業として解釈してください)

まずはインストールからしていきましょう。

Linuxにrsyncをインストール

ここではdnfコマンドを使用していますが、お使いのOSによって変わってくると思います。

設定ファイルの編集

開いたrsyncの設定ファイルに、下記を追記します。

pig file = /var/run/rsyncd.pig
log file = /var/log/rsyncd.log
max connections = 4
transfer logging = yes

ブール値の変更、firewallのサービス許可

rsyncのアクセスを許可するようブール値とFirewallの設定を変更します。永続化は必須ではないですが、しない場合は起動のたびに同じ作業を行う必要があるので注意してください。

rsyncの起動

さっそく起動していきましょう。ここではrsyncをデーモンで起動し、ポートの空きとLISTEN状態を確認しています。

ここまででrsyncのインストールから設定、起動まで完了しました。

 

rsyncのテスト

大事なサーバーのバックアップを行う際などは、万が一にも事故が起こらないよう慎重に一つひとつテストを行うことをお勧めします。ここでは2段階に分けてテストを行っていきます。

 

Linux内でrsync

まずはLinuxからLinuxへと同期を行います。

Linux内にテスト用のディレクトリを作成。/varの部分には、バックアップ先として使用したいディレクトリを選択してください。

作成したディレクトリにテスト用ファイルを作成し、任意の中身を記述

/etc/rsyncd.confファイルにテスト用の記述を追加

[test]
path = /var(先ほど設定した同じパス)/test
hosts allow = “LinuxのIPアドレス”
hosts deny = *
list = true
uid = root
gid = root
read only = false

originからdestinationへテスト同期し、成否を確認

test.txtファイルがdestinationディレクトリに中身ごと複製されていればテスト成功です。

 

QNAPからLinuxへ、テストファイルを同期

次にQNAPからLinuxへと同期テストを行います。

/etc/rsyncd.confファイルにテスト用の記述をさらに追加

[test2]
path = /var(先ほど設定した同じパス)/test
hosts allow = “バックアップしたいQNAPのIPアドレス”
hosts deny = *
list = true
uid = root
gid = root
read only = false

 

ここでやっとQNAP NASの出番になります。

QNAPのWeb-UIにログインし、順番に操作を行っていきます。

QNAP 1

QNAP 2

左上にあるメニュータブから[Backup Station]というアプリケーションを選択し、リモートレプリケーションの[Rsync]へと進みます。その後リモートレプリケーションジョブの作成画面へ進み、設定作業を行っていきます。

ジョブの名前は任意です。一目でわかりやすい名前にすると良いと思います。

 

QNAP 3

また、リモートサイトの欄には先ほどまで設定をしていたLinuxの情報を設定します。ユーザ名は、バックアップ先フォルダの書き換え権限を持つユーザを指定してください。

ここで、テストの成否を必ず確認しましょう

処理自体は数秒で終わるものなので、処理中のまま止まっていたり、失敗となった場合は、ここまでの設定でどこかに異常がある可能性が高いです。

処理が終了し、平均送信時間が表示されたら無事成功です。

 

ソースフォルダにはバックアップ対象のフォルダを、宛先フォルダにはバックアップ先のフォルダを設定します。

今回はテストなので、ソースには万が一破損しても問題がないフォルダ(ない場合は別途作成してください)を指定し、宛先には先ほどパスとして設定したtestフォルダを指定します。

その後任意のオプションを設定し、設定を適用させ同期を開始します。

 

QNAP 4

このようにレプリケーションが開始され、無事完了となれば成功です。(一応Linux側でもtreeコマンドなどで確認をしてください)

 

本同期を実行

無事テストが終了し、問題が無ければ本同期に移ります。

QNAPからLinuxへの同期ではデータ全体を一括で設定することができないため、ジョブの作成時に表示されたソースフォルダから一つひとつ個別に同期する形になります。

したがって、Linux側のrsync設定ファイルにもその数だけ記述を増やす必要があります。下記フォーマットを元に名前とpathを編集し、同期対象の数だけ追記してください。

また、宛先フォルダも同じ数だけ作る必要があります。大元となるディレクトリを作成し、宛先フォルダを全て同じディレクトリに格納すると管理が楽です。

[“任意の名前”]
path = “バックアップの宛先フォルダ”
hosts allow = “バックアップしたいQNAPのIPアドレス”
hosts deny = *
list = true
uid = root
gid = root
read only = false

 

記述し終えたらさっそく同期をしていきましょう。といっても、手順はテストの際とほとんど同じです。

今回はテストではないのでソースフォルダと宛先フォルダを本番用に設定します。

オプションについては任意になります。内容は書いてある通りなのでつけたいものをつけたらいいと思います。

今回は、デフォルトでチェックされている

  • コピー先のファイルと異なるファイルのみをコピーする
  • スパースファイルを効率的に処置する

に加えて、下記2つのオプションにチェックをいれました。

  • ファイル圧縮を有効にする
  • リモート宛先の余分なファイルを削除する

 

あとは同期を開始し、レプリケーションが完了となれば無事同期成功となります。テストと同様、Linux側でも成否を確認しておきましょう。

最後に希望のペースでスケジュールを設定し、スケジュールを有効にすることで定期的な自動バックアップができるようになります。(QNAP→LinuxのRsyncでは常時同期に対応していないので最短は1時間おきです)

 

最後に

QNAPからQNAPへ、LinuxからQNAPへ、などとQNAPをパックアップ先とした資料はたくさん出てくるのですが、逆を行っている資料はあまり多くないのでなかなか大変でした。

QNAPからLinuxがやりたいんじゃという人のお役に立てればと思います。

 

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
アバター
haga
エンジニアギークフィード
かけだしエンジニアです。主にLinuxやAWSなどのインフラ系をやってます。99%がわからないことですが、1%のわかることを伝えていけたらと思います。

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ