rsnapshot is a filesystem snapshot utility for making backups of local and remote systems.
Using rsync and hard links, it is possible to keep multiple, full backups instantly available.
The disk space required is just a little more than the space of one full backup, plus incrementals.
ということらしい。btrfsやらzfsを用意しなくても使えるそうな感じ。
[root@c ~]# yum --enablerepo=epel list |grep rsnapshot
rsnapshot.noarch 1.4.2-2.el7 epel
[root@c ~]# yum --enablerepo=epel install rsnapshot
っでどんなファイルがどこにインストールされたかは、rpm -qali | less で見れる。
ここではバックアップ対象を「/var/log/」と「/etc/」として、
格納先を「/opt/rsnapshot/」配下としている。
設定ファイル
*スペースはタブ(\t)です
[root@c ~]# vi /etc/rsnapshot.conf
snapshot_root /opt/rsnapshot/ #バックアップファイルは/opt/rsnapshot/に置かれる。
interval hourly 24 # hourly(1時間ごと)のバックアップを24個保持する
interval daily 7 # daily(1日毎)のバックアップを7個保持する
interval weekly 4 # weekly(1週単位)のバックアップを4個保持する
backup /var/log/ localhost/log/
backup /etc/ localhost/etc/
最後の「backup」行の「localhost」はバックアップ対象のマシンが自分自身であることを意味します。
*最近は「interval」の代わりに「retain」を使います. 「interval」は非推奨みたい
rsnapshotのinterval設定を意識した設定が必要。上記ではhourly,daily,weeklyと分かりやすいような名称だが実際はなんでもいい。ただcrontabの設定時に引数として使うだけだから。
ここでのcron設定は下記になる。
[root@c ~]# crontab -e
00 * * * * /usr/bin/rsnapshot hourly
10 23 * * * /usr/bin/rsnapshot daily
20 23 * * 4 /usr/bin/rsnapshot weekly
rsyncでバックアップしているので、複数台のリモートサーバの内容を一つのマシンに集約できる。
こんな感じで
現状はバックアップ元は1つのバックアップ先、「snapshot_root」に集約される。それはそれでいいが、特定のフォルダはこれとは関係のない場所にバックアップしたいなら。
/home/ --+
/opt/data/ --+------------> 「/backup」(snapshot_root)
/etc/ --+
/data/ +--------------> 「/data-backup」
rsnapshotのhelpを見ると、[-c]で設定ファイルが指定できるみたい。
[root@centos7 ~]# rsnapshot help
rsnapshot
Usage: rsnapshot [-vtxqVD] [-c cfgfile] [command] [args]
Type "man rsnapshot" for more information.
rsnapshot is a filesystem snapshot utility. It can take incremental
snapshots of local and remote filesystems for any number of machines.
rsnapshot comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
See the GNU General Public License for details.
Options:
-v verbose - Show equivalent shell commands being executed.
-t test - Show verbose output, but don't touch anything.
This will be similar, but not always exactly the same
as the real output from a live run.
-c [file] - Specify alternate config file (-c /path/to/file)
-q quiet - Suppress non-fatal warnings.
-V extra verbose - The same as -v, but with more detail.
-D debug - A firehose of diagnostic information.
-x one_fs - Don't cross filesystems (same as -x option to rsync).
Commands:
[backuplevel] - A backup level as defined in rsnapshot.conf.
configtest - Syntax check the config file.
sync [dest] - Sync files, without rotating. "sync_first" must be
enabled for this to work. If a full backup point
destination is given as an optional argument, only
those files will be synced.
diff - Front-end interface to the rsnapshot-diff program.
Accepts two optional arguments which can be either
filesystem paths or backup directories within the
snapshot_root (e.g., /etc/ beta.0/etc/). The default
is to compare the two most recent snapshots.
du - Show disk usage in the snapshot_root.
Accepts an optional destination path for comparison
across snapshots (e.g., localhost/home/user/foo).
version - Show the version number for rsnapshot.
help - Show this help message.
[root@centos7 ~]#
なので「/data」向けのrsnapshot設定ファイルを作ってそれを起動させればいいみたい。
[root@centos7 ~]# cp /etc/rsnapshot.conf /etc/rsnapshot.data.conf
[root@centos7 ~]# vi /etc/rsnapshot.data.conf
:
snapshot_root /data-backup/
logfile /var/log/rsnapshot.data
lockfile /var/run/rsnapshot.data.pid
backup /data/ localhost/
:
[root@centos7 ~]#
* 「logfile」と「lockfile」の名称は既存のと被らないようにします
っでcronは下記のようにする
00 * * * * /usr/bin/rsnapshot hourly
10 23 * * * /usr/bin/rsnapshot daily
20 23 * * 4 /usr/bin/rsnapshot weekly
00 * * * * /usr/bin/rsnapshot -c /etc/rsnapshot.data.conf hourly
10 23 * * * /usr/bin/rsnapshot -c /etc/rsnapshot.data.conf daily
20 23 * * 4 /usr/bin/rsnapshot -c /etc/rsnapshot.data.conf weekly