rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。
rsync 分为服务端和客户端两个部分,而我们需要配置的是服务端,客户端只需要配置一个密码文件即可。
1. 服务端配置
rsync 的配置文件为 /etc/rsyncd.conf,但是由于一般的系统都没有这个文件,所以我们首先需要创建这个文件。
vim /etc/rsyncd.conf
然后在里面填写如下内容:
port = 873 #指定监听端口,默认是873,可以自己指定
uid = rsync #守护进程所属的uid,默认是nobody,可能会碰到文件或目录权限问题,偷懒可用 root,一般设置为rsync
gid = rsync #守护进程的gid
use chroot = no #一般设置为no
read only = no #只读选择,只让客户端从服务器上读取文件
write only = yes #只写选择,只让客户端到服务器上写入
#允许访问的IP,可以指定单个IP,也可以指定整个网段,能提高安全性。格式是 ip 与 ip 之间、ip 和网段之间、网段和网段之间要用空格隔开;
hosts allow = 172.16.1.2
max connections = 5 #客户端最多连接数
log file = /var/log/rsync.log #rsync 服务器的日志;
transfer logging = yes #记录传输文件的日志
log format = %t %a %m %f %b #日志格式
syslog facility = local3 #日志级别
timeout = 300 #超时时间
#模块定义
#主要是定义服务器哪个目录要被同步。
#每个模块都要以[name]形式。这个名字就是在 rsync 客户端看到的名字。
#但是服务器真正同步的数据是通过 path 指定的。可以依次创建多个模块。
#每个模块要指定认证用户、密码文件,但排除并不是必须的。
[ logs ] #模块名,以下配置都属于此模块
path = /date #文件目录所在位置
list = no #当查看服务器上提供了哪些目录时是否列出来,no比较安全
ignore errors #忽略I/O错误
#用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)
auth users = xxw
secrets file = /etc/rsyncd.secrets #密码文件
/etc/rsync.conf 配置结束
然后创建密码文件/etc/rsyncd.secrets,并写入虚拟账户和密码,中间以:隔开,设置权限为600.
touch /etc/rsyncd.secrets
echo "xxw:123456">/etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
创建共享文件夹 /date,设置用户和用户组为rsync,权限为755(一般默认为755)
mkdir /date
chown rsync.rsync /date
启动rsync.
rsync --daemon #如果不行,用全路径执行 /usr/bin/rsync --daemon,如果进程已经存在,可以先pkill rsync,再启动。
最后检查进程是否开启。
lsof -i:873 #或者 netstat -ntulp | grep “:873”
至此,rsync 服务端配置完成。
2. 客户端配置
创建密码文件/etc/rsyncd.pass,并修改为 600 权限,写入服务端虚拟用户的密码。(只需要密码,不要账户)
echo "123456">/etc/rsyncd.pass
chmod 600 /etc/rsyncd.pass
至此,rsync 客户端配置完成。
全部配置完成后,可以测试了。
rsync -avzp /etc/hosts xxw@172.16.1.1::logs --password-file=/etc/rsyncd.pass
结果反馈为:
sending incremental file list
hosts
sent 120 bytes received 27 bytes 294.00 bytes/sec
total size is 158 speedup is 1.07