2つのWebサーバー間でrsyncを設定します。プライマリサーバーがクラッシュした場合に備えて、プライマリサーバーのデータをセカンダリにバックアップすることを目指しています。私の質問は、rsyncの目的でプライマリサーバーにユーザーアカウントを設定することに関するものです。
明らかな理由により、ここでは「root」ユーザーアカウントを使用したくありません。したがって、rsyncの目的でのみ使用される別のアカウントをセットアップすることを目指しています。私が理解しているように、このユーザーは、転送する必要があるすべてのファイル(Apache構成、ユーザーLinuxファイル、www-data)に対する読み取り許可が必要です。
そのような権限を最もよく設定するにはどうすればよいですか? rsyncユーザーにroot権限を付与する必要がありますか、そのようなバックアップ用のユーザーを作成するより安全な方法はありますか?
両方のサーバーを接続するネットワークが安全である場合(オフィスのローカルネットワークなど)、デーモンモードで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
を編集してRSYNC_ENABLE
行をRSYNC_ENABLE=true
に変更し、/etc/init.d/rsync start
を実行します(systemdを実行している場合はsystemctl enable rsync; systemctl start rsync
を実行します)。
これで、プライマリホストでrsyncを実行し、レプリケートする必要があるものをセカンダリに送信できます。たとえば、次のようにします。
# rsync -ai /var/www/ backupuser@secondary-Host::all/var/www/
この場合、Rsyncは秘密のパスワードを要求します。