By烟花易冷

Rsync 实现网站自动同步/备份 配置小记
2018-01-05

由于最近某个客户需要做一台备用服务器,重拾了一年前玩过的 Rsync,当初折腾这个工具还是做镜像站,现在就由备用服务器从主服务器主动拉取数据实现文件同步了。

安装

apt-get install rsync #Ubuntu安装
yum install rsync  #centos安装

配置

  • 创建配置文件、密钥文件、欢迎文件
mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf
touch /etc/rsyncd/rsyncd.secrets
chmod 600 /etc/rsyncd/rsyncd.secrets #设置权限
touch /etc/rsyncd/rsyncd.motd

配置文件 rsyncd.conf 可以参考如下内容:

pid file = /var/run/rsyncd.pid  #进程写到 /var/run/rsyncd.pid 文件中
port = 873  #默认端口
address = 192.168.*.* #指定服务器IP地址
uid = root  
gid = root  
use chroot = yes
read only = no #只读 不让客户端上传文件到服务器上
#limit access to private LANs
hosts allow=* #允许的IP 即白名单,中间用空格隔开
hosts deny=
max connections = 5  #最大允许的连接数
motd file = /etc/rsyncd/rsyncd.motd #用户登录时会看到rsyncd.motd 中的信息
#This will give you a separate log file
log file = /var/log/rsync.log  #rsync 服务器的日志
#This will log every file transferred - up to 85,000+ per user, per sync
#transfer logging = yes
log format = %t %a %m %f %b  #日志格式
syslog facility = local3
timeout = 300

[zzfly] #模块名称  
path = /home/website  #同步路径
list=yes
ignore errors
auth users = root  #授权登录用户
secrets file = /etc/rsyncd/rsyncd.secrets #密码存储位置
comment = ZZFLY.NET Website Backup #注释 随便填写
exclude = wwwlogs/ #排除上面的同步路径下的目录 用空格隔开  

密码文件 rsyncd.secrets 可以参考如下内容:

root:zzfly.net  #即用户名:密码
  • 启动
/usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf

使用

在备用服务器上,可以通过如下命令进行同步:

rsync -avzP root@107.191.105.136::zzfly /home/www

其中 root 为上一步 rsyncd.secrets 文件中所写入的用户名,/home/www 为备用服务器上的网站根目录,可以结合实际情况进行修改。

若需要实现免密码登录(常用于写脚本)的话,可以尝试建立密码文件,过程如下:

touch rsync.password
chmod 600 rsync.password

rsync.password 文件中的内容即为所指定用户的密码,例如本例中直接填写 zzfly.net 即可,同步命令:

rsync -avzP --password-file=rsync.password  root@107.191.105.136::zzfly /home/www

2018年的第一篇文章,其实不是不写博客,只是部分阵地着实转移了,看到这凌乱的 WordPress 和过气的版面设计,我知道我该重新设计一套目标噜~