首页 服务器相关正文

centos7.2版本中rsync 3.1.2实现文件同步备份的方法

心诚工作室 服务器相关 2021-06-02 15:25:40 125 0

配置分为两大部分,客户端和服务端

1)yum安装组件

sudo yum -y install epel-release

sudo yum -y install gcc g++ gawk autoconf automake python3-pip

sudo yum -y install acl libacl-devel

sudo yum -y install attr libattr-devel

sudo yum -y install xxhash-devel

sudo yum -y install libzstd-devel

sudo yum -y install lz4-devel

sudo yum -y install openssl-devel

python3 -mpip install --user commonmark


一.服务器端配置


联网安装防护进程:

yum -y install xinetd


设置防护进程xinetd的配置文件(不存在就自己生成一个)

vi /etc/xinetd.d/rsync

将其修改成


  service rsync
  {
  disable = no
  socket_type = stream
  wait = no
  user = root
  server = /usr/bin/rsync
  server_args = –daemon
  log_on_failure += USERID
  }

修改后启动 xinetd防护进程

service xinetd restart

启动后防火墙要打开端口,其要允许的端口是 873(注:centos7防火墙默认使用的是firewall不是iptables)


firewall-cmd --zone=public --add-port=873/tcp --permanent(--permanent永久生效,没有此参数重启后失效)
systemctl restart firewalld.service  #重新载入服务
firewall-cmd --reload  #

更新防火墙规则



*删除一个防火墙允许的端口(测试用)firewall-cmd --zone= public --remove-port=80/tcp --permanent


*关闭防火墙(测试用)

systemctl stop firewalld.service    #停止firewall
systemctl disable firewalld.service #禁止开机启动
systemctl enable firewalld.service  #开机启动

查看目前端口状态命令 (注:杀死进程命令 kill ...)

netstat -ntpl

设置rsync的的配置文件(不存在就自己生成一个)


vi /etc/rsyncd.conf 

将其修改成(注:该文件的配置跟版本有很大关系,该配置文件针对rsync 3.1.2,使用时将以下代码中中文注释去除)

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

 uid = root                #设置运行rsync 进程的用户
 gid = root
 use chroot = no
 max connections = 4
 pid file = /var/run/rsyncd.pid
 log file = /var/log/rsyncd.log  #此文件定义完成后系统会自动创建,出错的话可以从此文件查看报错记录
 exclude = lost+found/
 transfer logging = yes
 timeout = 900
 ignore nonreadable = yes      #同步时跳过没有权限的目录
 dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  #传输时不压缩的文件

[test] #模块名,后续要与客户端中同步命令模块名保持一致
path = /home/www #需要同步的目录
comment = test export area #与模块名一致

ignore errors 
read only = true
#write only = yes 
list = false 

auth users = root  #客户端获取文件的身份要用到的用户名,此用户并不是本机中确实存在的用户,也可是本机存在的用户名,如果多个,空格分隔开
secrets file = /etc/rsyncd.secrets   #配置密码的文件

hosts allow = *   #允许的客户端ip * 允许所有客户端连接 为了安全起见需要设置指定IP

修改配置密码文件(不存在就自己生成一个)

vi /etc/rsyncd.secrets

将其修改成

root:密码  #用户名:密码,一行一个,密码最好别和系统密码一样。用户名就是上面设置的auth users里面的用户名

然后切记修改改密码文件的权限(密码文件权限属性要设得只有属主可读)


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

查看是否修改成功

ll /etc/rsyncd.secrets

未修改之前显示:

-r-------. 1 root root 12 5\u6708  11 19:10 /etc/rsyncd.secrets

修改成功显示:

-rw-------. 1 root root 12 5\u6708  11 19:10 /etc/rsyncd.secrets

重新启动rsync服务(不行的话,查看rsyncd.log文件,kill掉服务,重新执行以下代码


  rsync --daemon --config=/etc/rsyncd.conf 
  systemctl start rsyncd.service 
  systemctl enable rsyncd.service

二.client 端进行同步


安装rsync

yum -y install rsync

客户端建立密码文件

vi /etc/rsyncd.passwd

将其修改成


XXXXXX  #密码,与服务端设置的密码相同,就是通过这个密码连接服务端的

然后切记修改改密码文件的权限(密码文件权限属性要设得只有属主可读)

chmod 600 /etc/rsyncd.passwd

开始同步

rsync -vzrtopgu --progress --delete --password-file=/etc/rsyncd.passwd root@192.xx.xx.xx::test /www/w_demo

这个命令行中 -vzrtopg 里的 

v 是 verbose,z 是压缩传输,r 是 recursive,topg 都是保持文件原有属性如属主、时间的参数。u 是只同步已经更新的文件,避免没有更新的文件被重复更新一次,不过要注意两者机器的时钟的同步。

– progress 是指显示出详细的进度情况,

– delete 是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。

root 为auth users设置的用户名

192.xx.xx.xx 为服务端ip 

test 为服务端设置的模块名

/www/w_demo 为客户端存放的地址

注:若增加不同步文件(千万注意后面的空格)

例如忽略t.html:

rsync -vzrtopgu --progress --exclude 't.html' --password-file=/etc/rsyncd.passwd root@192.XX.XX.XX::test /www/w_demo


3.自动同步,客户端制定计划任务


安装crontab(一般自带)


yum install vixie-cron
yum install crontabs

vixie-cron软件包是cron的主程序;

crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。

cron 是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

查看crontab服务状态

service crond status

 写一个crontab自执行参数的配置文件

vi /tmp/rsyncd.sh

添加执行代码

crontab -e

在编辑器中加入crontab自执行参数的配置文件,* * * * * 参数为每分钟执行一次,相关说明见crontab文件或查询网上相关资料(注意空格)


* * * * * sh /tmp/rsyncd.sh

此时,自动同步完成。若互为备份,同理配置相关文件。

rsync.txt


centos方法代码错误
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

发表评论

评论列表(0人评论 , 125人围观)
☹还没有评论,来说两句吧...