今回はサーバー間(CentOS7)でバックアップを取るための「rsync」コマンドについて紹介する。

前回記事でサーバー間の鍵認証による接続ができるようになったので、rsyncコマンドも鍵認証を用いて実行していく。

https://chusotsu-program.com/linux-ssh

rsyncのインストール

今回も前回記事で使ったAサーバー、Bサーバーを使っていく。

まずは両サーバーでrsyncが必要となるので、yumでインストールする。

※ここからはrootユーザーまたはsudoコマンドにて行っていく。

yum -y install rsync

次にAサーバーで、rsyncのsudo権限を与える。

visudo

※最終行に以下を追記
Defaults!/usr/bin/rsync !requiretty
bkupusr         ALL=(ALL)       NOPASSWD: /usr/bin/rsync

バックアップサーバーに格納先ディレクトリを用意

次にバックアップ先となるBサーバーに、バックアップファイル格納用のディレクトリを用意する。

mkdir -p /home/bkupusr/bk

rsyncコマンドを実行

Bサーバーでrsyncコマンドを実行し、バックアップが正常に動作するか確認する。

rsync -av --numeric-ids --delete --rsync-path='sudo rsync' -e "ssh -i /home/bkupusr/.ssh/id_ed25519" bkupusr@xxx.xxx.xxx.xxx:/bkup/dir/ /home/bkupusr/bk/ --log-file=/root/rsync.log

様々なオプションが設定されているが、ここでの解説は割愛する。

-eで秘密鍵のパス指定、その後接続先の対象となるバックアップファイルのパス、最後にバックアップファイル格納先の自サーバーのパスを指定している。

うまくいけば、指定した「/home/bkupusr/bk/」内にバックアップファイルがコピーされているはずだ。

バックアップ用rsyncコマンドをcronで自動化

まずはシェルファイルを作成する。

vim /root/rsync.sh

※以下を追記し保存
rsync -av --numeric-ids --delete --rsync-path='sudo rsync' -e "ssh -i /home/bkupusr/.ssh/id_ed25519" bkupusr@xxx.xxx.xxx.xxx:/bkup/dir/ /home/bkupusr/bk/ --log-file=/root/rsync.log

作成したシェルファイルのパーミッションは700に設定しておく。

chmod 700 /root/rsync.sh

最後にcronに登録すればOK。

今回は毎日0時0分にバックアップを実行するよう設定した。

crontab -e 

0 0 * * * /root/rsync.sh