openSUSE Leap 16

Rsync : ファイル/ディレクトリの同期2026/01/07

 

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] コピー先ホストの設定です。
node01:~ #
zypper -n install rsync
node01:~ #
vi /usr/etc/rsyncd.conf
# 最終行に追記

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

node01:~ #
mkdir /home/backup

node01:~ #
ln -s /usr/etc/rsyncd.conf /etc/

node01:~ #
systemctl enable --now rsyncd

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

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

success
node01:~ #
firewall-cmd --runtime-to-permanent

success
[4] コピー元ホスト上からコピー先ホストへ同期処理を実行します。
dlp:~ #
zypper -n install rsync
dlp:~ #
vi /usr/etc/rsyncd.exclude
# コピー元の対象ディレクトリ内から、コピーを除外するファイル/ディレクトリを記述 (相対パス)

test
test.txt

dlp:~ #
rsync -avz --delete --exclude-from=/usr/etc/rsyncd.exclude /home/work/ node01.srv.world::backup
sending incremental file list
./
testfile.txt
testdir/

sent 193,573 bytes  received 46 bytes  387,238.00 bytes/sec
total size is 868,252  speedup is 4.48
関連コンテンツ