使用Rsync备份文件过程及问题解决

Linux, 折腾 2018/03/17

折腾了这几天,终于是把小站搞的差不多了,开始着手数据备份的实施。

之前用的国外的服务器,可以很方便的同步备份到Google Drive,换到腾讯云之后,GD失效了。所以只能考虑别的方案。

宝塔面板提供又拍云、七牛、阿里的OSS备份方案,但是对备份到云存储暂时没考虑,因为收费……只剩下FTP

结果FTP不知道怎么回事,能连接到备份服务器,但是总是无响应,手动执行ftp命令进行连接测试,发现总是在执行ls命令时卡住……目前还不知道原因,慢慢再解决吧。

问题已解决:阿里云\腾讯云无法连接到其他FTP的问题解决

所以最后选择了rsync,很久以前用过这货,觉得不方便就放弃了。因为它使用CS架构,配置稍显复杂,只能通过添加crontab来定时执行…… :二哈:

没法,开搞吧,一切为了数据,记录一下使用rsync的简易方法吧。

1.客户端、服务端均需安装rsync

CentOS

yum install rsync -y

Ubuntu\Debian

sudo apt-get install rsync -y

2.服务端配置

如果是数据从服务器A → 服务器B,那么服务器 A 则需要作为 服务端 ,服务器 B 作为 客户端 来连接到A,拉取数据。

新建一个配置文件

vi /etc/rsync/rsyncd.conf

写入配置,其中 bugxia_backup 为自定义配置名称,path=/www/backup 为需要备份的文件夹路径,根据需要修改,保存

pid file = /var/run/rsyncd.pid   
port = 873 
address = 服务器IP
uid = root   
gid = root   
use chroot = yes 
read only = yes
hosts allow=客户端IP
max connections = 3
log file = /root/rsync.log
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[bugxia_backup]   
path = /www/backup   
list=yes
ignore errors
auth users = 用户名
secrets file = /etc/rsync/rsyncd.secrets

新建用户名及密码配置文件

vi /etc/rsync/rsyncd.secrets

填入配置并保存(添加的用户名需和上面的配置文件中保持一致,用户名密码以冒号分隔

用户名:密码

给用户名密码文件配置权限

chmod 600 /etc/rsync/rsyncd.secrets

以daemon方式运行程序

/usr/bin/rsync --daemon --config=/etc/rsync/rsyncd.conf

查看日志文件,检查运行是否正常

cat /root/rsync.log

tail -f /root/rsync.log

运行正常则会提示(文末有常见错误及解决方法)

rsyncd version *.*.* starting, listening on port 873

3.客户端配置

新建密码文件,修改为服务端已配置的密码即可,无需用户名

touch /root/rsync.pass
echo "密码" > /root/rsync.pass
chmod 600 /root/rsync.pass

执行同步只需一行命令,其中 bugxia_backup 为上述服务端的自定义配置名称,/www/wwwroot/bugxia 为同步到本地的文件夹路径

rsync -avzP --delete --password-file=/root/rsync.pass 用户名@服务端IP::bugxia_backup /www/wwwroot/bugxia

4.常见错误

服务端log出现如下错误,需要将服务端IP改为0.0.0.0
比如腾讯云,如果使用公网IP则会出现如下错误

bind() failed: Cannot assign requested address
unable to bind any inbound sockets on port 873

客户端出现错误,需要检查服务端rsync是否成功开启,并检查防火墙是否放行873端口

rsync: failed to connect to *.*.*.*: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(128)

权限错误,需要给服务端和客户端的密码文件配置600权限

ERROR: password file must not be other-accessible
本文标签:


评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)