rsyncによるリモートサーバの同期【AlmaLinux 8】
rsyncをインストールして、ローカルからリモートサーバへの同期を行うように設定します。
ここでは、以下のようなIPアドレスになっているものとします。
ローカルサーバ(送信側) |
192.168.10.11 |
リモートサーバ(受信側) |
192.168.10.12 |
1. rsyncのインストール
ローカルサーバおよびリモートサーバのどちらにもインストールを行います。
(1) インストール
(2) 送信テスト
送信テストを行ってみます。
# rsync -azP (ローカルディレクトリ名} (ユーザ名@リモートIPアドレス):(リモートディレクトリ名)
【例】
# rsync -azP /var/www/html/ root@192.168.10.12:/var/www/html
※ローカルディレクトリの最後に「/」を付けます。「/」がないとリモートサーバの方で/var/www/html/htmlのようになってしまいます。
なお、リモートサーバで、ローカルサーバにないファイルを削除したい場合には、「--delete」オプションを付けます。
【例】
# rsync --delete -azP /var/www/html/ root@192.168.10.12:/var/www/html
2. 公開認証方式でのアクセス
公開認証方式の設定をして、パスワードなしでアクセスできるようにします。
(1) リモートサーバでの設定
リモートサーバ(受信側)でSSH公開鍵の作成を行います。
■RSA認証鍵の作成
RSA認証鍵を作成します。
ここでは「rsync_key」という名前にします。(名前は任意で構いません。)
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/rsync_key[Enter]
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): [Enter]
Enter same passphrase again: [Enter]
※「Enter passphrase (empty for no passphrase):」および「Enter same passphrase again:」で、パスフレーズは入力しないで空白とします。
これで、「/root/.ssh」に
の2つの鍵が作成されます。
■公開鍵の登録
公開鍵「rsync_key.pub」の登録を行います。
# cd .ssh
# touch authorized_keys
# chmod 600 authorized_keys
# cat rsync_key.pub >> authorized_keys
# rm rsync_key.pub
(2) ローカルサーバでの設定
リモートサーバで作成した秘密鍵ファイル「rsync_key」をローカルサーバへ送付します。
■秘密鍵の登録
ユーザのホームディレクトリの下に「.ssh」ファイルを作成して、秘密鍵ファイルをコピーします。
# mkdir ~/.ssh
# chmod -R 700 ~/.ssh
# cp rsync_key ~/.ssh
# chmod 600 ~/.ssh/rsync_key
(3) ローカルサーバからリモートサーバへの送信
# rsync -e "ssh -i (秘密鍵ファイルパス名)" -azP (ユーザ名@リモートIPアドレス):(リモートディレクトリ名)
【例】
# rsync -e "ssh -i /root/.ssh/rsync_key" -azP /var/www/html/ root@192.168.10.12:/var/www/html
もしくは「--delete」を付加。
# rsync -e "ssh -i /root/.ssh/rsync_key" --delete -azP /var/www/html/ root@192.168.10.12:/var/www/html
3. リアルタイム同期
ローカルサーバの変更により、リモートサーバもリアルタイムに変更されるように設定します。
(1) ローカルサーバでの設定
ローカルサーバ側にlsyncdをインストールします。
# dnf --enablerepo=epel lsyncd
「/etc/lsyncd.conf」を作成します。
# cp /etc/lsyncd.conf{,.default}
# vi /etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status",
}
sync{
default.rsyncssh,
source = "/home/app_user/",
host = "root@192.168.10.12",
targetdir = "/home/app_user",
delete = true,
delay = 1,
rsync = {
perms = true,
owner = true,
group = true,
archive = true,
compress = true,
rsh = "/usr/bin/ssh -i /root/.ssh/rsync_key -o UserKnownHostsFile=/root/.ssh/known_hosts"
}
}
sync{
default.rsyncssh,
source = "/var/www/html/",
host = "root@192.168.10.12",
targetdir = "/var/www/html",
delete = true,
delay = 1,
rsync = {
perms = true,
owner = true,
group = true,
archive = true,
compress = true,
rsh = "/usr/bin/ssh -i /root/.ssh/rsync_key -o UserKnownHostsFile=/root/.ssh/known_hosts"
}
}
※複数のディレクトリを同期させたい場合には、「sync」部分を繰り返します。
lsyncdサービスを起動
# systemctl start lsyncd.service
lsyncdサービスを自動起動
# systemctl enable lsyncd.service
最終更新:2021年12月22日 16:03