一、问题产生的背景
考虑到NFS文件共享服务中存放的都是重要的数据文件,现准备对NFS服务目录进行远程备份,因此选择使用rsync工具。
二、最终要达成的目标
1、在NFS备份主机中,实现对NFS服务器的共享目录进行备份。
2、此时,NFS备份主机作为rsync的服务端,NFS服务端作为rsync的客户端
三、需要注意的前提条件
1、rsync服务端需关闭CentOS 7防火墙
命令:
setenforce 0
systemctl stop firewalld && systemctl disabled firewalld
2、如开启防火墙,则需在防火墙规则中开放873端口
命令:
firewall-cmd --permanent --add-port 873/tcp
systemctl restart firewalld
3、两台主机需要在同一网段下,并且能相互PING通
四、解决方案
1、在rsync服务端添加专门用于rsync备份的虚拟用户(不需要添加目录)
命令:
useradd rsync -s /sbin/nologin -M
2、在rsync服务端新建目录,用于拉取或被推送NFS服务器需要备份的文件,并且给rsync用户赋予处理目录权限
命令:
mkdir /home/backup
chown -R rsync /home/backup
3、在rsync服务端创建账户和密码文件
命令:
echo "rsync_backup:[password]" >/etc/rsync.password
4、修改上述账户和密码文件的权限为600
命令:
chmod 600 /etc/rsync.password
5、修改rsync的配置文件
命令:
vim /etc/rsyncd.conf
笔者这里给出了一个配置范本
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.password
[nfsbackup] #这里是rsync客户端访问的路径
path = /home/backup
6、关闭rsync,杀死其进程
命令:
pkill rsync
7、启动rsync服务并设置开机启动
命令:
systemctl start rsyncd && systemctl enable rsyncd
8、查看rsync是否运行
命令:
lsof -i tcp:873
9、在rsync客户端创建rsync的账户和密码文件,密码要跟rsync服务端配置的密码相同
命令:
echo "[password]" >/etc/rsync.password
10、在rsync客户端修改上述账户和密码文件的权限为600
命令:
chmod 600 /etc/rsync.password
11、在rsync客户端测试是否能够从NFS服务共享目录推送数据到rsync服务端的目录中
命令:
rsync -avz /home/data/ rsync_backup@[nfs server ip address]::nfsbackup/ --password-file=/etc/rsync.password