USBメモリでRAID 5を構築・rsyncでMacへバックアップ
rsyncを使ってMac側から吸い出す形でバックアップすることにしました
RAIDアレイに"/" (ルート)を移したRaspberry Pi 3。耐故障性は向上したものの「RAIDはバックアップにあらず」ですから、定期的なバックアップは必要です。
今までは、Raspberry Piを電源オフにしてMicroSDカードを抜き、Macでddコマンドを使ってバックアップしていました。これが結構時間かかるし、面倒臭い。そこで今後はMac側で rsyncを使い、Raspberry Pi 3 のファイルをリモートコピーする形でバックアップするようにしてみました。手順は、公開鍵認証でsshログインできるようにしておくのが増えた程度で、MicroSDへバックアップしたのと、それほど変わりません。
- Raspberry Pi 3 の rootユーザに公開鍵認証で sshログインできるようにする
- バックアップ先(HDD、ディレクトリ)を決める
- バックアップ除外ファイルリストを作成
- バックアップスクリプトを作成
- root権限でバックアップスクリプトを実行
1. Raspberry Pi 3 の rootユーザに公開鍵認証で sshログインできるようにする
Macから Raspberry Pi 3 の rootユーザにパスワード入力なしで sshログインできるようにしておきます。具体的な方法は検索すればいっぱい見つかると思いますが、要は自分(Mac)で公開鍵を作り、これを Raspberry Pi 3 の rootに渡しておき、この公開鍵を使って通信してねという設定をしておくことになります。
1) 先ずMac側で秘密鍵と公開鍵を作ります。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): ※秘密鍵を作る場所。そのままEnter
Created directory '/Users/hoge/.ssh'.
Enter passphrase (empty for no passphrase): ※任意のパスワードを入力。今回は入力せずEnter
Enter same passphrase again: ※上と同じパスワードを入力。何も入力せずEnter
Your identification has been saved in /Users/hoge/.ssh/id_rsa.
Your public key has been saved in /Users/hoge/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ljhJ5ERJT7bDP60QeuUdqMUUO5+hL+5KF8W3LDZ/zog hoge@MacPro.local
The key's randomart image is:
+---[RSA 2048]----+
| . oB+.+oo+=o.|
| +.oo. +.+oo=|
| o = . . o.*|
| . B . + =.|
| + o S . . = .|
| = . . . +.|
| o + ..o+.|
| . E.. o|
| |
+----[SHA256]-----+
|
これで"~/.ssh" 配下に秘密鍵"id_rsa" 、公開鍵"id_rsa.pub" が作られました。
$ ls -la .ssh
-rw------- 1 hoge staff 1766 10 12 10:18 id_rsa
-rw-r--r-- 1 hoge staff 397 10 12 10:18 id_rsa.pub
|
2) 公開鍵を Raspberry Pi 3 にコピーします。
$ scp .ssh/id_rsa.pub root@RaspberryPi3:
root@RaspberryPi3's password: ※RaspberryPi3のrootパスワードを入力
id_rsa.pub 100% 391 0.4KB/s 00:00
|
3) Raspberry Pi 3側で公開鍵をauthorized_keysに設定
今度は Raspberry Pi 3側での作業です。先ず Raspberry Pi に rootでログインしてから、"/root/.ssh/authorized_keys" を作ります。
# mkdir /root/.ssh ※/root/.sshディレクトリが無い場合は作成。既にある場合は不要。
# cd /root/.ssh
# cat ../id_rsa.pub >>authorized_keys
# chmod 600 authorized_keys
# rm /root/id_rsa.pub
|
4) Mac側から sshログインしてみる
これで準備が整いましたので、Macから Raspberry Pi 3に rootで sshログインしてみます。
$ ssh root@RaspberryPi3
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Oct 12 10:27:32 2016 from MacPro
root@RaspberryPi3:~#
|
こんな具合に、パスワードを入力することなく rootでログインできたら、公開鍵認証でのログイン成功です。確認できたら Raspberry Pi 3 からログアウトします。
2. バックアップ先を(HDD、ディレクトリ)決める
バックアップ先のHDDDは、当然ですがバックアップに必要な空き容量(最低8GB)が必要ですね。RAIDアレイの内容もバックアップするなら、数百GB程度の空き容量が必要になります。またS.M.A.R.T.情報に異常がなく、比較的新しいHDDが好ましいです。(バックアップが先に壊れたら意味ないし)
今回は Mac Pro に内蔵してある4TB HDD("/Volumes/Ext4TB" )にしました。ここにRaspberry Piのファイルを保存するディレクトリ("RaspberryPi3-Backup" を作成します。
# cd /Volumes/Ext4TB
# mkdir RaspberryPi3-Backup
|
3. バックアップ除外ファイルリストを作成
rsyncでバックアップさせない(してはいけない)除外ファイルのリストを作成します。ファイル名は、今回も同じ "exclude.txt" としました。内容は、以下のような感じ。
/proc/*
/sys/*
/dev/*
/tmp/*
/run/*
/mnt/*
/var/tmp/*
/var/log/*
.Apple*
.fseventsd
.DS_Store
.Trashes
|
今回はRaspberry Pi 3のファイルを全部吸い出すので、"/boot", "/media" を除外リストには入れません。
4. バックアップスクリプトを作成
Raspberry Pi 3のファイルをrsyncでコピーを行うスクリプトファイル("pi-backup.sh" )を作成します。スクリプトの内容は、
#!/bin/sh
SRC_DIR="root@RaspberryPi3:/"
DEST_DIR="/Volumes/Ext4TB/RaspberryPi3-Backup"
EXCLUDE="/Volumes/Ext4TB/exclude.txt"
rsync -auvz --delete -e "ssh -i /Users/hoge/.ssh/id_rsa" --exclude-from=${EXCLUDE} ${SRC_DIR} ${DEST_DIR}
|
こんな感じ。rsync のオプションで sshを使用してリモートログインするよう指定しています。公開鍵認証でログインできるようにしてありますので、実行の度にパスワードを訊かれることはないはずです。
5. root権限でバックアップスクリプトを実行
作成したスクリプト"pi-backup.sh" に実行権を付けて、root権限で実行します。
$ chmod +x pi-backup.sh
$ sudo ./pi-backup.sh
Password: ※Macのrootパスワードを入力
receiving file list ...
〜略〜
sent 1759689 bytes received 135511232 bytes 1242270.78 bytes/sec
total size is 4739346095 speedup is 34.53
|
こんな具合に rsyncが終了すればバックアップ完了です。初回は全部を吸い出すので、ある程度時間がかかりますが、2回目以降は差分のみのバックアップになりますので短時間で終わるようになるはずです。
|