CentOS Stream 8
Sponsored Link

Rsync : ファイル/ディレクトリの同期2021/04/13

 
Rsync によるファイル同期の設定です。
ローカル ⇔ リモート でのファイル同期の場合、コマンド単体での使用では、デフォルトでは接続に SSH が使用されるため、リモート側に SSH サーバーが起動していることが前提となります。
当例では、Rsync をサービスとして設定して起動します。
サービスとして起動しておくことで、同期の設定がより詳細に指定可能 且つ Rsync 独自のポート (873/TCP) で接続するため、リモート側での SSH サービスも不要となります。
当例では [dlp.srv.world] の [/home/work] 配下のファイル/ディレクトリを、[node01.srv.world] の [/home/backup] 配下にコピーするように設定します。
+----------------------+          |          +----------------------+
|    [dlp.srv.world]   |10.0.0.30 | 10.0.0.51|  [node01.srv.world]  |
|                      +----------+----------+        rsyncd        |
|     /home/work/*     |   ------------->    |     /home/backup/*   |
+----------------------+        copy         +----------------------+

[1] コピー元ホストの設定です。
[root@dlp ~]#
dnf -y install rsync
[root@dlp ~]#
vi /etc/rsync_exclude.lst
# コピー元の対象ディレクトリ内から、コピーを除外するファイル/ディレクトリを記述 (相対パス)

test
test.txt

[2] コピー先ホストの設定です。
[root@node01 ~]#
dnf -y install rsync rsync-daemon
[root@node01 ~]#
vi /etc/rsyncd.conf
# 最終行に追記

pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
# 最大接続数
max connections = 4
# 転送結果もログに残すか否か
transfer logging = yes

# 任意の名称
[backup]
# コピー先のディレクトリ
path = /home/backup
# 接続を許可するホスト (コピー元ホストを指定)
hosts allow = 10.0.0.30
hosts deny = *
list = true
uid = root
gid = root
read only = false

[root@node01 ~]#
mkdir /home/backup

[root@node01 ~]#
systemctl enable --now rsyncd

[3] コピー先ホストで SELinux を有効にしている場合は、ブール値の変更が必要です。
[root@node01 ~]#
setsebool -P rsync_full_access on

[4] コピー先ホストで Firewalld を有効にしている場合は、サービスの許可が必要です。
[root@node01 ~]#
firewall-cmd --add-service=rsyncd --permanent

success
[root@node01 ~]#
firewall-cmd --reload

success
[5] 以上の設定完了後、以下のようにしてコピー元ホスト上からコピー先ホストへ同期を行います。
定期実行したい場合は Cron に登録しておくとよいでしょう。
[root@dlp ~]#
rsync -avz --delete --exclude-from=/etc/rsync_exclude.lst /home/work/ node01.srv.world::backup
sending incremental file list
./
anaconda-ks.cfg
testfile.txt

sent 1,015 bytes  received 57 bytes  2,144.00 bytes/sec
total size is 1,364  speedup is 1.27
関連コンテンツ