
2 つの Web サーバー間で rsync を設定します。プライマリ サーバーがクラッシュした場合に備えて、プライマリ サーバーのデータをセカンダリ サーバーにバックアップすることを目標としています。私の質問は、プライマリ サーバーに rsync 用のユーザー アカウントを設定することに関するものです。
明らかな理由から、ここでは「root」ユーザー アカウントを使用したくありません。そのため、rsync の目的のみに使用される別のアカウントを設定することを目指しています。私の理解では、このユーザーには、転送する必要があるすべてのファイル (Apache 構成、ユーザーの Linux ファイル、www データ) に対する読み取り権限が必要です。
このような権限を最適に設定するにはどうすればよいでしょうか? rsync ユーザーにルート権限を付与する必要がありますか? または、このようなバックアップ用のユーザーを作成するより安全な方法はありますか?
答え1
両方のサーバーを接続するネットワークが安全である場合 (たとえば、オフィスのローカル ネットワーク)、デーモン モードで rsync を使用して root として接続できます。この方法では、接続を確立するために ssh を使用しません。
/etc/rsyncd.conf
セカンダリ システムで、次の内容のファイルを作成します。
[all]
path = /
read only = no
uid = 0
gid = 0
hosts allow = primary-host
auth users = backupuser
secrets files = /etc/rsyncd.secrets
exclude = /tmp/ /var/tmp/ /var/cache/ /proc/ /sys/ /dev/ /run/ /boot/
次に、次のようなファイルを作成します/etc/rsyncd.secrets
。
backupuser:thisisasecretpassword
ファイルを root のみが読み取り可能にします。
# chown root /etc/rsyncd.secrets; chmod 400 /etc/rsyncd.secrets
ここで、rsync がデーモンとして起動されていることを確認する必要があります。これはディストリビューションによって異なりますが、Debian の場合は、行をに/etc/default/rsync
変更して を実行します(systemd を実行している場合は を実行します)。RSYNC_ENABLE
RSYNC_ENABLE=true
/etc/init.d/rsync start
systemctl enable rsync; systemctl start rsync
これで、プライマリ ホストで rsync を実行し、次のようにして、複製する必要があるものをセカンダリに送信できます。
# rsync -ai /var/www/ backupuser@secondary-host::all/var/www/
この場合、rsync は秘密のパスワードを要求します。