成航先森 成航先森

成都航院计算机系一个学生的个人博客

 

经验杂笔

分段图

最新文章

经验杂笔
当前位置: 首页 » 大学杂谈 » 经验杂笔 » CentOS下rsync服务器安装与配置-数据同步|文件增量备份

CentOS下rsync服务器安装与配置-数据同步|文件增量备份

编辑:狂族晨曦 来源:经验杂笔 日期:2016-08-05 阅读: 1,262 次 4 条评论 » 百度已收录

我们在使用服务器发布我们的网站或者生产环境中部署业务的时候,通常要考虑到文件的备份,而文件的备份比较高效的备份是增量备份,rsync软件就是这样的一个工具。

为了实现多个服务器负载均衡,我们需要这几个服务器之间进行数据同步,而rsync软件也能胜任,下面先森来介绍如何架设rsync服务器来达到文件增量备份和数据同步的功能。

Rsync同步

Rsync同步

什么是rsync

Rsync(remote synchronize)是一个远程文件同步工具;Rsync使用“Rsync算法”来同步文件,该算法只传送两个文件的不同部分,因此速度相当快;

Rsync是替代rcp的一个工具,目前由rsync.samba.org维护,因而rsync.conf文件的格式类似于samba的主配置文件; 

Rsync可通过rsh或ssh使用,也能以daemon模式运行,以daemon方式运行时,Rsync Server会打开一个873端口等待客户端连接.连接时,Rsync Server会检查口令是否相符,若口令相符,则进行文件传输.第一次会把整份文件传输一次,以后则为增量传输;

Rsync支持大多数的类Unix系统(Linux、Solaris、BSD等);此外,在windows平台也有相应的版本,如cwRsync和Sync2NAS等工具。

环境准备

既然是同步,首先我们需要准备的是两台服务器。先森准备的是虚拟机上的两台装好CentOS 6.8的服务器。

为了方便,我们称其中主要使用的、产生数据的一台为服务端。用于备份数据的那台称为客户端。

两台服务器都需要安装rsync。

rsyncf服务端

rsync的安装

rsync有很多种安装方式,最简单的是yum安装,复杂一点的是编译安装,还有先森选择的是rpm包安装。

先森rsync版本是的rsync-3.0.9-2.el6.rfx.x86_64.rpm,直接安装即可。

rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm

rsync的启动

方法一:CentOS 默认以 xinetd 方式运行 rsync 服务。

所以选择这种方式启动还需要安装超级守护进程xinetd。

yum install -y xinetd

rsync 的 xinetd 配置文件在 /etc/xinetd.d/rsync。

编辑rsync的xinetd配置文件/etc/xinetd.d/rsync文件,修改参数 

server_args = --daemon --config=/etc/rsyncd/rsyncd.conf

可以配置rsync服务器启动时的参数。(一般不需要)

要配置以 xinetd 运行的 rsync 服务需要执行如下的命令:

chkconfig rsync on
service xinetd restart

方法二:独立运行 rsync 服务

最简单的独立运行 rsync 服务的方法是执行如下的命令:

/usr/bin/rsync --daemon

#编辑 /etc/rc.local文件 加入

/usr/bin/rsync --daemon

保证每次开机启动都会自动启动rsync服务。

方法一的优点是,开启、停止rsync服务方便。

方法二的优点在于不用先安装一个服务。如何选择还是视使用情况而定了。

一般来说:

rsync服务器负载比较高,则使用独立启动模式

rsync服务器负载较低,使用xinetd运行方式

rsync的配置

rsync的主要有以下三个配置文件:

rsyncd.conf (主配置文件)

rsyncd.secrets (密码文件)

rsyncd.motd (rysnc服务器信息:连接后的欢迎信息)

两种 rsync 服务运行方式都需要配置 rsyncd.conf,其格式类似于 samba 的主配置文件。

# mkdir /etc/rsyncd
# cd /etc/rsyncd
# touch rsyncd.conf
# touch rsyncd.secrets
# touch rsyncd.motd

配置文件 rsyncd.conf 默认在 /etc 目录下。为了将所有与 rsync 服务相关的文件放在单独的目录下,可以执行如下命令:

ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

注:创建软链接一定要用绝对路径,用相对路径会造成断链。

为了密码安全,我们需要把rsyncd.secrets的权限设置为600

chmod 600 rsyncd.secrets

1、配置rsyncd.conf文件

#服务器传输文件时用root 权限执行 
uid = root
gid = root
#指定服务端口,默认873
port = 873
use chroot = no
#只读,不让客户端上传文件到服务器
read only = yes
#limit access to private LANs
#限制能访问该服务的网段
hosts allow=192.168.0.0/255.255.0.0
hosts deny=*
#最大连接数 
max connections = 5
#告诉进程写到该文件中 
pid file = /var/run/rsyncd.pid
#密码存在哪个文件
secrets file = /etc/rsyncd/rsyncd.secrets         
#服务器信息定义指向该文件,该文件可写服务器信息,欢迎的文字
motd file = /etc/rsyncd/rsyncd.motd
#rsync 服务器的日志
log file = /var/log/rsync.log
#这是传输文件的日志
transfer logging = yes
#日志文件格式
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300 #超时时间
# MODULE OPTIONS
#模块的名称,可以自定义
[testhome]
#同步的目录  
path = /usr/local/nginx/ftp
list=yes
#忽略IO错误
ignore errors
#验证用户,我的用户是root
auth users = root
comment = test home
#不同步的目录
exclude = .git/
#模块的名称,可以自定义
[datahome]
#同步的目录  
path = /web/data
#rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。
list=yes
#忽略IO错误
ignore errors
#验证用户,我的用户是user
auth users = user
#注释可以自己定义,写什么都行,写点相关的内容就行
comment = data home
#不同步的目录
exclude = .git/

2、配置rsyncd.secrets文件

密码文件: rsyncd.secrets的内容格式:“用户名:口令”

例:

root:123456
user:123456

为了密码的安全性,我们要保证把权限设为600以及root权限

chown root:root /etc/rsyncd/rsyncd.secrets
chmod 600 /etc/rsyncd/rsyncd.secrets

3、配置rsyncd.motd文件

这个文件是客户端连接时看到的欢迎信息文件,内容自定义,也可以为空:

++++++++++++++++++++++++++++++++++++++
Welcome
++++++++++++++++++++++++++++++++++++++

4、开启防火墙873端口

Linux 防火墙是用iptables,所以我们至少在服务器端要让你所定义的rsync 服务器端口通过,客户端上也应该让通过。

iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
/etc/rc.d/init.d/iptables save

查看一下防火墙是不是打开了 873端口;

iptables -L -n

5、启动rsync

service xinetd start

6、查看服务是否运行

netstat -an | grep 873
tcp        0      0 :::873                      :::*                        LISTEN      3399/xinetd

rsyncf客户端

1、安装

客户端也要安装rsync,但是不用做配置,也不用启动,因为客户端仅仅需要能够运行# rsync *** 这条命令

yum install -y xinetd
rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm

2、同步数据

(1)方式一:

rsync -avzP root@192.168.2.72::testhome  /tmp/david/

参数说明:

-a --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。

-z 传输时压缩;

-P 传输进度;

-v --verbose 详细模式输出;

-r 是递归;

-l 是链接文件,意思是拷贝链接文件;

-p 表示保持文件原有权限;

-t 保持文件原有时间;

-g 保持文件原有用户组;

-o 保持文件原有属主;

-D 相当于块设备文件。

root是认证用户,IP地址是服务端的IP,testhome是配置文件中写的模块名称,/tmp/david是指保存到客户端的位置。

(2)方式二:

rsync -avzP  --delete root@192.168.2.72::testhome  /tmp/david/

这回我们引入一个 –delete 选项,表示客户端上的数据要与服务器端完全一致,如果 linuxsirhome目录中有服务器上不存在的文件,则删除。最终目的是让linuxsirhome目录上的数据完全与服务器。

上保持一致;用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除。

(3)方式三:

rsync -avzP  --delete  --password-file=rsync.password  root@192.168.2.72::testhome  /tmp/david/

这次我们加了一个选项 –password-file=rsync.password ,这是当我们以linuxsir用户登录rsync服务器同步数据时,密码将读取 rsync.password 这个文件。

这个文件内容只是服务端中rsync中设置的root认证用户的密码。

在你需要的地方创建rsync.password文件,然后只保存密码在其中:

touch rsync.password
echo "123456" > rsync.password
chmod 600 rsync.password

3、用crontab让客户端自动与服务端同步数据

我们在/etc/cron.daily.rsync中创建了一个文件名为:root.sh ,并且是权限是 755

mkdir /etc/cron.daily.rsync
cd /etc/cron.daily.rsync
touch root.sh
chmod 755 root.sh

编辑root.sh,内容如下:

vim root.sh
#!/bin/sh
#192.168.2.72 testhome backup
/usr/bin/rsync -avzP --delete --password-file=/etc/rsyncd/rsyncd.secrets root@192.168.2.72::testhome /tmp/david/
:wq

然后创建定时任务:

crontab -e
*/1 * * * * /usr/bin/run-parts  /etc/cron.daily.rsync  1>  /dev/null

表示每分钟执行一次/etc/cron.daily.rsync里的脚本。

查看定时任务:

crontab -l

当然,如果你觉得创建脚本麻烦的话,也可以直接将命令写在定时任务中。

crontab -e
*/1 * * * * usr/bin/rsync -avzP --delete --password-file=/etc/rsyncd/rsyncd.secrets root@192.168.2.72::testhome /tmp/david/

测试

测试的话非常简单,只需要在服务端同步文件夹内增加或删除文件,过一分钟后到客户端上看效果即可。

总结

配置Rsync的环境一定要确保防火墙873端口打开,以及SELinux关闭,否则肯定会出错的。

在配置的过程中可能会出现这样那样的问题,先森也会整理一篇问题总结,后续分享。

Rsync与Crontab搭配起来同步并不是最好的同步方案,Rsync可以与其他工具使用使得同步更安全、准确,请悉知。

历史上的今天:

标签:
除特别注明外,本站所有文章均为成航先森 www.capjsj.cn原创,本文共5329个字
转载请注明出处来自http://www.capjsj.cn/rsync_crontab.html
已有 4 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
易淘金股票博客的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 破浪无忧的头像

    不错,学习了!

    2016-08-07 23:14 回复
  2. Koolight的头像

    等以后有钱接触到了,再回来学习!

    2016-08-09 09:06 回复
  3. 米粒博客的头像

    很实用,谢谢分享!

    2016-08-09 22:41 回复
  4. 易淘金股票博客的头像

    写的很详细 不错学习了

    2016-08-10 08:45 回复
官方微信
发表评论 返回顶部