まず、rsync の基本的な使用方法を知る必要があります。man rsync
を通じて簡単に理解できます。
ローカル:rsync [オプション...] ソース... [ターゲット]
SSH 経由のリモート接続:
プル: rsync [オプション...] [ユーザー@]アドレス:ソース... [ターゲット]
プッシュ: rsync [オプション...] ソース... [ユーザー@]アドレス:ターゲット
rsync リスニングサービス経由:
プル:
rsync [オプション...] [ユーザー@]アドレス::ソース... [ターゲット]
rsync [オプション...] rsync://[ユーザー@]アドレス[:ポート]/ソース... [ターゲット]
プッシュ:
rsync [オプション...] ソース... [ユーザー@]アドレス::ターゲット
rsync [オプション...] ソース... rsync://[ユーザー@]アドレス[:ポート]/ターゲット
SRC パラメータのみを提供し、DEST パラメータがない場合は、ソースファイルがリストされ、コピーされません。
クイックスタート#
使用プラットフォーム:ubuntu 20
実現方法:サーバー側で rsync リスニングサービスを設定し、クライアント側で積極的にプッシュし、crontab で定期タスクを設定します。
rsync リスニングの設定#
リモートサーバー、つまりファイルを同期して保存したいサーバーで、次のコマンドを順に実行して確認します:
root@ubuntu:~# sudo apt update
root@ubuntu:~# sudo apt install rsync
rsync 環境がインストールされているか確認します。
root@ubuntu:~# service rsync status
rsync サービスの情報を確認します。
● rsync.service - fast remote file copy program daemon
Loaded: loaded (/lib/systemd/system/rsync.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-05-09 00:19:13 MSK; 29min ago
Docs: man:rsync(1)
man:rsyncd.conf(5)
Main PID: 6216 (rsync)
Tasks: 1 (limit: 2279)
Memory: 13.0M
CGroup: /system.slice/rsync.service
└─6216 /usr/bin/rsync --daemon --no-detach
任意のエディタを使用するか、cat でrsync.service
サービスファイルを開きます。
[Unit]
Description=fast remote file copy program daemon
Documentation=man:rsync(1) man:rsyncd.conf(5)
ConditionPathExists=/etc/rsyncd.conf
After=network.target
[Service]
ExecStart=/usr/bin/rsync --daemon --no-detach
[Install]
WantedBy=multi-user.target
ConditionPathExists=/etc/rsyncd.confによって、rsync が rsyncd.conf から設定ファイルを読み取ることがわかります。
root@ubuntu:~# vim /etc/rsyncd.conf
任意のエディタで設定ファイルを開き、存在しない場合は作成します。作成方法については自分で調べることをお勧めします。
設定オプション#
[custom1]
pid file = /var/run/rsyncd1.pid
...
[custom2]
pid file = /var/run/rsyncd2.pid
...
[custom3]
pid file = /var/run/rsyncd3.pid
...
必須:カスタムモジュールを作成し、接続時に使用します。
uid = user1
gid = group1
必須:rsync モジュールのユーザーは、root を推奨せず、adduser --disabled-login [username]
で作成することをお勧めします。
path = /path/to/backup
use chroot = yes
必須:このモジュールのパスを定義するために path を使用し、use chroot でセキュリティを強化します。
read only = no
write only = no
オプション:読み取りまたは書き込みを有効にするかどうかは、必要に応じて設定できます。
hosts allow = 154.53.59.237
# 最大接続数
max connections = 4
# 転送ログを有効にする
transfer logging = yes
# ログ形式を指定
log format = %t %a %m %f %b
list = no
追加:hosts allow で IP アクセスを制限し、list で使用するモジュールを隠します。
クライアント接続#
クライアントでも rsync をダウンロードし、以下のコマンドで設定が成功したかテストします。
root@vmi819506:~# rsync -avzrn /tmp/test/ rsync://[ユーザー]@[アドレス][:ポート]/[モジュール]
トラブルシューティング#
Q1:サーバーに接続できません。
A1:サーバーのポートが開いていない可能性があります。rsync はデフォルトで 873 ポートをリッスンします。
定期設定#
crontab を使用して、時間が来たら自動的に実行します。以下は一例です(5 分ごとに rsync を実行):
5 * * * * [コマンド]
まとめ#
この記事はここで終了です。今後、この記事の内容に補足や修正を加える可能性があります。
rsync の設定を書くと、いつも優雅さが足りないと感じますし、md のハイライトサポートもありません。