我将在两个 Web 服务器之间设置 rsync。我的目标是在主服务器崩溃时将主服务器的数据备份到辅助服务器上。我的问题与在主服务器上设置用于 rsync 目的的用户帐户有关。
出于显而易见的原因,我不想在这里使用我的“root”用户帐户。因此,我打算设置另一个仅用于 rsync 目的的帐户。据我了解,此用户需要对我需要传输的所有文件(apache 配置、用户 linux 文件、www 数据)具有读取权限。
如何最好地设置此类权限?我应该授予 rsync 用户 root 权限吗?还是有更安全的方法为此类备份创建用户?
答案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
并将该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 会要求您输入密码。