Raspberry Pi 2でファイルバックアップを行う

Thu Jan 12, 2017 in server using tags raspberrypi , home-network , homenas1

FortiGate 60DとRaspberry Piを使用して家庭内インターネット接続環境を構築します。 最終的には以下のような構成を想定しています。

今回はhomenas1にrsnapshotを導入してファイルバックアップを行う設定を行います。

なおバックアップ元は/mnt/nas/、バックアップ先は/mnt/backup/を想定しています。

$ df -h
/dev/sdc1        917G   72M  871G    1% /mnt/backup
/dev/md0         394G   71M  374G    1% /mnt/nas
$

rsnapshotのインストール

$ sudo -E apt-get install rsnapshot
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  liblchown-perl rsync
以下のパッケージが新たにインストールされます:
  liblchown-perl rsnapshot rsync
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 1 個。
507 kB のアーカイブを取得する必要があります。
この操作後に追加で 1,133 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main liblchown-perl armhf 1.01-2+b1 [8,828 B]
取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main rsync armhf 3.1.1-3 [373 kB]
取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main rsnapshot all 1.3.1-4+deb8u1 [125 kB]
507 kB を 1秒 で取得しました (286 kB/s)
以前に未選択のパッケージ liblchown-perl を選択しています。
(データベースを読み込んでいます ... 現在 33129 個のファイルとディレクトリがインストールされています。)
.../liblchown-perl_1.01-2+b1_armhf.deb を展開する準備をしています ...
liblchown-perl (1.01-2+b1) を展開しています...
以前に未選択のパッケージ rsync を選択しています。
.../rsync_3.1.1-3_armhf.deb を展開する準備をしています ...
rsync (3.1.1-3) を展開しています...
以前に未選択のパッケージ rsnapshot を選択しています。
.../rsnapshot_1.3.1-4+deb8u1_all.deb を展開する準備をしています ...
rsnapshot (1.3.1-4+deb8u1) を展開しています...
man-db (2.7.0.2-5) のトリガを処理しています ...
systemd (215-17+deb8u5) のトリガを処理しています ...
liblchown-perl (1.01-2+b1) を設定しています ...
rsync (3.1.1-3) を設定しています ...
rsnapshot (1.3.1-4+deb8u1) を設定しています ...
systemd (215-17+deb8u5) のトリガを処理しています ...
$

rsnapshotの設定

rsnapshot.confの設定変更

$ sudo cp -p /etc/rsnapshot.conf{,.org}
$ ls -l /etc/rsnapshot.conf*
-rw-r--r-- 1 root root 8414  3月 10  2016 /etc/rsnapshot.conf
-rw-r--r-- 1 root root 8414  3月 10  2016 /etc/rsnapshot.conf.org
$
$ sudo vi /etc/rsnapshot
#snapshot_root  /var/cache/rsnapshot/
snapshot_root   /mnt/backup/

#retain         hourly  6
retain          daily   7
retain          weekly  4
retain  monthly 3

#backup /home/          localhost/
#backup /etc/           localhost/
#backup /usr/local/     localhost/
backup	/mnt/nas/	localhost/
$
$ diff /etc/rsnapshot.conf.org /etc/rsnapshot.conf
27c27,28
< snapshot_root	/var/cache/rsnapshot/
---
> #snapshot_root	/var/cache/rsnapshot/
> snapshot_root	/mnt/backup/
97c98
< retain		hourly	6
---
> #retain		hourly	6
100c101
< #retain	monthly	3
---
> retain	monthly	3
230,232c231,233
< backup	/home/		localhost/
< backup	/etc/		localhost/
< backup	/usr/local/	localhost/
---
> #backup	/home/		localhost/
> #backup	/etc/		localhost/
> #backup	/usr/local/	localhost/
239a241
> backup	/mnt/nas/	localhost/
$

rsnapshot.confのコンフィグテスト

$ sudo rsnapshot configtest
Syntax OK
$

crontabの設定変更

$ sudo crontab -l > crontab.backup20170112
no crontab for root
$
$ sudo crontab -e
50 2 * * * /usr/bin/rsnapshot daily
40 2 * * 1 /usr/bin/rsnapshot weekly
30 2 1 * * /usr/bin/rsnapshot monthly
$
$ sudo crontab -l > crontab.backup20170112-01
$ diff crontab.backup20170112 crontab.backup20170112-01
> 50 2 * * * /usr/bin/rsnapshot daily
> 40 2 * * 1 /usr/bin/rsnapshot weekly
> 30 2 1 * * /usr/bin/rsnapshot monthly
$

Restoreについて

$ rsync -a /mnt/backup/localhost/monthly.0/localhost/. /mnt/nas/
$ rsync -a /mnt/backup/localhost/weekly.0/localhost/. /mnt/nas/
$ rsync -a /mnt/backup/localhost/daily.0/localhost/. /mnt/nas/

参考

以上