今回はサーバー間(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