rsyncによるリモートサーバの同期【AlmaLinux 8】

rsyncをインストールして、ローカルからリモートサーバへの同期を行うように設定します。

ここでは、以下のようなIPアドレスになっているものとします。
ローカルサーバ(送信側) 192.168.10.11
リモートサーバ(受信側) 192.168.10.12

1. rsyncのインストール

ローカルサーバおよびリモートサーバのどちらにもインストールを行います。
(1) インストール
# dnf install rsync

(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」という名前にします。(名前は任意で構いません。)
# ssh-keygen -t rsa
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」に
  • rsync_key
  • rsync_key.pub
の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