Rsync : ファイル/ディレクトリの同期2020/03/10 |
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 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 test2.txt testfile.txt testdir/ sent 2,869 bytes received 84 bytes 5,906.00 bytes/sec total size is 4,602 speedup is 1.56 |
Sponsored Link |