ラズパイでサーバ・データのバックアップを取る

Raspberry Pi (RasPi) を使ってリモートサーバ上にあるバックアップファイルを定期的に取得し、それを手元にある適当なハードディスクに自動的に保存していくことを考えます。

手順は (a) リモートサーバ から SCP を使ってローカルの RasPi にファイルを転送し、(b) それを RasPi にマウントした外付けHDDに保存するの2つです。

実行環境は下記のとおりです。

ハードウェア OS version/フォーマット形式
Raspberry Pi Zero W V1.1 Raspbian GNU/Linux 10 (buster)
サーバ Ubuntu 18.04.2 LTS
ハードディスク I-O Data 1TB NTFS

キーボード操作を多用しますので、あらかじめVNCクライアントなどで外部操作できるように設定されることをお勧めします。こちらの記事などを参考にされてください。

(1) RasPiで公開鍵認証

RasPi からリモートサーバに接続するための鍵を作成します。初期状態の RasPi には鍵置き場の ~/.ssh ディレクトリがありませんので、まずはターミナルを開いてこれを作ります。

ssh-keygen で秘密鍵と公開鍵を作成します。パスワードは今回は不要なのでエンターキーを押して先に進みます。

鍵が作成されていることを確認し、公開鍵の内容をコピペします。

Chromium ブラウザを開いて契約しているサーバのコンソールにアクセスし、この一時保存された文字列を公開鍵の入力欄に貼り付けます。

もしくはサーバの設定を一時的に変更して、パスワード認証を解禁し、ファイルを直接的にサーバに転送してしまいます。

※このコマンドを実行するとサーバにある authorized_keys ファイルが上書きされるので注意してください。

公開鍵の設定が終わったら、公開鍵暗号を使用して実際に RasPi からサーバにアクセスしてみます。

無事にアクセスできれば、準備は完了です。




(2) ハードディスクのマウント設定

USB ケーブルによって接続されたハードディスクに RasPi のデータを保存するために、常に指定された場所にディスクをマウントするように設定を書き足します。

まずはハードディスクを USB ケーブルで接続してデバイス情報を取得します。

Disk /dev/sda1 が該当デバイスだと分かったので、このデバイスの属性を表示します。

ハードディスクの固有番号(UUID)が得られますので、これを指定の場所(ここでは disk01)にマウントできるように設定ファイルに追記します。設定ファイルを書き換えて保存したら、設定を反映させるために RasPi を再起動します。

ハードディスクを接続したまま再起動を行うと、/mnt/disk01 にハードディスクがマウントされているはずです。

ここに定期的にファイルを保存するための dump というディレクトリを作成しておきます。




(3) cron による定時実行

ここまでで RasPi からリモートサーバに接続し、バックアップファイルを取得し、外付けハードディスクに保存できるようになっています。

そこで実際にサーバからファイルを取得してハードディスクに保存してみます。

これが実行できていれば、あとはこの作業を定期的に自動で繰り返せば良いわけです。その準備のために、まずは root ユーザにパスワードを設定してシスログデーモンの設定を行います。

ここでやらなくても良いのですが、初期状態の RasPi には root パスワードが設定されておらず、そろそろ不便に思えてきたので今やります。

/etc/rsyslog.conf を開くと #cron.* /var/log/cron.log という記述がありますので、文頭の # を削除してファイルを保存したのち rsyslog を再起動します。

この設定を行うことで cron のログが /var/log/cron.log に出力されるようになります。シスログの設定ができましたら、次は cron そのものの設定です。

ここで重要となるのは EXTRA_OPTS=”” の設定です。-L の引数のあとに指定する数字で出力するログ内容を選択できます。何も出力しない場合は 0, 全てを出力する場合は 15 (0+1+2+4+8=15) といった具合に設定する数字によって出力内容が選択されます。

取りあえずは動作確認のために EXTRA_OPTS=”-L 15″ を設定してファイルを上書き保存します。そして設定を反映するために cron を再起動して、crontab に先ほどファイル保存に使用したコマンドを記載します。

これで RasPi をUSB充電器につないで常時稼働させておけば、定期的にリモートサーバからファイルを取得してローカルのハードディスクに保存し続けます。

Raspberry Pi Zero W は格安で購入できるので、中途半端な容量のハードディスクを再利用するのに良いかも知れません。


Raspberry Pi Zero W – ラズベリー・パイ ゼロ W ワイヤレス

Leave a Reply

Your email address will not be published. Required fields are marked *

Contact Us