WSL2 経由での cron + rsnapshot によるバックアップ - プログラマーのメモ書き
Rsnapshot(Rsyncベース)-Linux用のローカル/リモートファイルシステムバックアップユーティリティ
インストール
$ sudo apt install rsnapshot
設定
/etc/rsnapshot.conf が設定ファイルになるので、これを編集していきます。編集の前に、元のファイルを残しておきます。
$ cd /etc
$ sudo cp -p rsnapshot.conf rsnapshot.conf.org
デフォルトから変更した点は以下になります。
# diff rsnapshot.conf.org rsnapshot.conf
23c23
< snapshot_root /var/cache/rsnapshot/
---
> snapshot_root /mnt/e/baskup/
67c67
< #cmd_rsnapshot_diff /usr/bin/rsnapshot-diff
---
> cmd_rsnapshot_diff /usr/bin/rsnapshot-diff
93,95c93,95
< retain alpha 6
< retain beta 7
< retain gamma 4
---
> #retain alpha 6
> #retain beta 7
> #retain gamma 4
97a98,101
> retain hourly 6
> retain daily 5
> retain weekly 14
>
121c125
< #logfile /var/log/rsnapshot.log
---
> logfile /var/log/rsnapshot.log
227,229c231,237
< backup /home/ localhost/
< backup /etc/ localhost/
< backup /usr/local/ localhost/
---
> #backup /home/ localhost/
> #backup /etc/ localhost/
> #backup /usr/local/ localhost/
>
> backup /home/ntaka/ localhost/
> backup /c/Z_test/ localhost/
>
このファイルには要素間にタブが必要です
#################################################
# rsnapshot.conf - rsnapshot configuration file #
#################################################
# #
# PLEASE BE AWARE OF THE FOLLOWING RULE: #
# #
# This file requires tabs between elements #
# #
#################################################
#################################################
#
# 次のルールに注意してください:
#
#このファイルには要素間にタブが必要です
#
#################################################
gedit で 空白文字を表示したい
以下コマンドでpluginをインストール
$ sudo apt-get install gedit-plugins
あとは gedit を起動して
メニュー/編集/設定/plugin/空白の表示 を有効に。
プラグインの設定画面から何を表示するか選べます。
Vim では
:set list " 制御文字を表示
:set nolist " 制御文字を非表示
デフォルトでは、タブ文字が ^I、改行が $ で表示されます。
retain で残す世代数を指定しますが、名称が alpha, beta, ・・・というのが分かりにくいので、 hourly, daily, weekly に変えています。
WSL 側のホームディレクトリと Windows 側のデータドライブ C の一部バックアップをとるようにしました。
設定ファイルを記述できたら、構文があっているかテストします。
$ cd /etc
$ rsnapshot configtest
Syntax OK
問題なければテスト実行してみます。
# rsnapshot -t hourly
echo 388 > /var/run/rsnapshot.pid
mkdir -m 0755 -p /mnt/e/baskup/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
/home/ntaka/ /mnt/e/baskup/hourly.0/localhost/
mkdir -m 0755 -p /mnt/e/baskup/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
/mnt/c/Z_test/ /mnt/e/baskup/hourly.0/localhost/
touch /mnt/e/baskup/hourly.0/
結果を確認したら、「-t」オプションを削除して、コマンドを実際に実行できます。
# rsnapshot hourly
自動化
$ sudo nano /etc/cron.d/rsnapshot
で下記内容を追加 (·はスペース »はタブ)
#2時間おき·hourly·毎時
4·*/2···» *·*·*» » root» /usr/bin/rsnapshot·hourly
#11時32分··daily·毎日
32·11···» *·*·*» » root» /usr/bin/rsnapshot·daily
#月曜日11時2分·weekly·毎週
2··11···» *·*·1» » root» /usr/bin/rsnapshot·weekly
$ sudo systemctl restart cron
cronの実行ログを確認するには以下コマンドを実行します。
$ less /var/log/syslog | grep CRON
Feb 5 16:04:01 LAPTOP-SSD CRON[1128]: (root) CMD (/usr/bin/rsnapshot hourly)
Feb 5 16:05:18 LAPTOP-SSD cron[1157]: (CRON) INFO (pidfile fd = 3)
Feb 5 16:05:18 LAPTOP-SSD cron[1157]: (CRON) INFO (Skipping @reboot jobs -- not system startup)
実際に実行されたログは rsnapshot.conf に記述されているのでこちらでも確認できます
logfile /var/log/rsnapshot.log
に出力されます
原因が不明ですが下記内容が出力される
WARNING: Some files and/or directories in /home/(ユーザー名)/ only transferred partially during rsync operation