一、目标

centos7下Rsync文件同步的配置

二、平台

centos7.6,rsync.x86_64 0:3.1.2-6.el7_6.1  

三、解析

Rsync是一个数据镜像备份软件。
Rsync主配置文件:/etc/rsyncd.conf

四、服务端的安装设置

1.安装rsync服务端软件
[root@xserver ~]# yum install rsync -y

2.配置rsync配置文件
[root@xserver rsyncFolder]# vim /etc/rsyncd.conf    在配置文件中追加以下内容:

#设置服务器信息提示文件名称,在这个文件rsyncd.moted中写上提示信息
motd file = /etc/rsyncd.moted
#开启Rsync数据传输日志功能
transfer logging = yes
#日志文件名
log file = /var/run/rsyncd.log
#Rsync进程号保存文件名
pid file = /var/run/rsyncd.pid
#设置锁文件名称
lock file = /var/run/rsyncd.lock
#Rsync服务端口
port 873
#Rsync侦听地址(肯定是本机的ip地址咯)
address = 10.100.100.210
#设置进行数据传输时所用到的用户名和组
uid = nobody
gid = nobody
use chroot = no
#这里设置客户端是否有可写权限?yes代表可写。
read only = yes
#设置Rsync的最大并发连接数
max connections = 10
# 同步文件夹名
[rsyncFolder]
    #同步文件夹描述
    comment = kahn's rsync folder
    #同步文件夹路径
    path = /rsyncFolder
    ignore errors
    #exclude = dir
    #开启下列用户能访问本Rsync服务,这非常重要。
    auth users = kahn,xRsync1,serena
    #访问Rsync的用户名和密码文件存放在什么地方
    secrets file = /etc/rsyncd.secrets
    #允许哪些主机或网段访问
    hosts allow = 10.100.100.0/255.255.255.0
    #拒绝哪些主机访问
    hosts deny = *
    #客户端请求显示模块列表是,本模块名称是否显示,默认为True,
    list = false

3.创建访问Rsync的用户名和密码文件

[root@xserver rsyncFolder]# echo "serena:x3721" > /etc/rsyncd.secrets
[root@xserver rsyncFolder]# echo "xRsync1:x3690" >> /etc/rsyncd.secrets
[root@xserver rsyncFolder]# echo "kahn:x123456" >> /etc/rsyncd.secrets
[root@xserver rsyncFolder]# chmod 600 /etc/rsyncd.secrets 
[root@xserver rsyncFolder]#       
[root@xserver rsyncFolder]# ll /etc/rsy*
-rw-r--r--. 1 root root 1785 Sep  2 07:45 /etc/rsyncd.conf
-rw-r--r--. 1 root root  458 Sep  2 07:18 /etc/rsyncd.conf.bak
-rw-------. 1 root root   40 Sep  2 07:48 /etc/rsyncd.secrets
-rw-r--r--. 1 root root 3232 Oct 30  2018 /etc/rsyslog.conf

/etc/rsyslog.d:
total 4
-rw-r--r--. 1 root root 49 Oct 30  2018 listen.conf
[root@xserver rsyncFolder]# 
[root@xserver rsyncFolder]# cat /etc/rsyncd.secrets 
serena:x3721
xRsync1:x3690
kahn:x123456

4.给Rsync服务器设置个欢迎信息。

[root@xserver rsyncFolder]# echo "Hello world ! this is kahn's Rsync Server" > /etc/rsyncd.motd

5.启动Rsync服务,并设置Rsync服务开机自启。

启动Rsync服务:[root@xserver rsyncFolder]# rsync --daemon
设置Rsync开机自启:[root@xserver]# echo "/usr/bin/rsync --daemon" >> /etc/rc.local

6.防火墙放开Rsync服务并重启,

[root@xserver rsyncFolder]# firewall-cmd --permanent --add-port=873/tcp
success
[root@xserver rsyncFolder]# firewall-cmd --reload
success
[root@xserver rsyncFolder]#

五、Rsync客户端的设置

1.安装rsync软件[root@xclient ~]#  yum install rsync -y 
 有的已默认安装了,可以用命令看下版本信息[root@xserver rsyncFolder]# rsync --version

2.创建一个文件夹用于同步来自服务器的文件。[root@xclient ~]#  mkdir /xRsyncBAK

3.连接到Rsync服务器

[root@xclient ~]# rsync -vzrtopg --progress xRsync1@10.100.100.210::rsyncFolder /xRsyncBAK/

Password: 
receiving incremental file list
./
hello.txt
             36 100%   35.16kB/s    0:00:00 (xfr#1, to-chk=0/2)

sent 46 bytes  received 146 bytes  42.67 bytes/sec
total size is 36  speedup is 0.19
[root@xclient ~]#

centos 停止rsync服务 centos7 rsync配置_centos 停止rsync服务

遇到一个小坑,执行诸如上面的代码同步东西的时候报错了,如下

[root@xclient ~]# rsync -avz xRsync1@10.100.100.210::rsyncFolder /xRsyncBAK/

rsync: failed to connect to 10.100.100.210 (10.100.100.210): Connection refused (111)

rsync error: error in socket IO (code 10) at clientserver.c(125) [Receiver=3.1.2]

[root@xclient ~]# 

这样是说明服务端的rsync服务没启动造成的。在服务器端执行rsync --daemon即可解决。

4.此时,仅仅只能同步一次,即敲一次命令[root@xclient ~]# rsync -vzrtopg --progress kahn@10.100.100.210::rsyncFolder /xRsyncBAK/  同步一次,不敲命令不同步。或者这就叫手工同步。不信?下面再同步一次给你看

[root@xclient xRsyncBAK]# rsync -vzrtopg --progress kahn@10.100.100.210::rsyncFolder /xRsyncBAK/

Password: 
receiving incremental file list
./
server1.txt
              0 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=0/3)

sent 46 bytes  received 136 bytes  40.44 bytes/sec
total size is 36  speedup is 0.20
[root@xclient xRsyncBAK]# ls
clientCreate  hello.txt  server1.txt
[root@xclient xRsyncBAK]#

六、在服务器端上执行,让Rsync通过ssh从服务器端传递文件到客户端

1.先将服务器和客户端的主机名修改一下,便于我们写rsync命令
[root@xserver ~]# hostnamectl set-hostname xserver   在服务器上执行该命令,即将服务器的主机名命名为xserver
[root@xclient ~]# hostnamectl set-hostname xclient     在客户端上执行该命令,即将客户端主机名命名为xclient

2.修改服务器端和客户端的hosts文件修改一下,便于写rsync命令
root@xclient ~]# vim /etc/hosts   客户端和服务器端的hosts文件都追加以下两行。

10.100.100.210 xserver
10.100.100.230 xclient

3.在服务器端使用rsync传输文件到客户端
解析:-t复制时间,*就是普通的*,*就是将服务器端当前文件夹下的所有文件,xclient客户端的主机名,/xRsyncBAK客户端的物理文件夹路径、目标文件夹路径。 然后输入yes回车,再输入客户端的root密码回车。

[root@xserver ~]# rsync -t * xclient:/xRsyncBAK
The authenticity of host 'xclient (10.100.100.230)' can't be established.
ECDSA key fingerprint is SHA256:MScEQUpZIw7acLtgX6hFSlaCp+XbJTbOVmffaJB8KUA.
ECDSA key fingerprint is MD5:45:6f:f2:d3:39:c7:87:9e:2d:11:aa:9d:54:17:3d:09.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xclient,10.100.100.230' (ECDSA) to the list of known hosts.
root@xclient's password: 
[root@xserver ~]#

centos 停止rsync服务 centos7 rsync配置_服务器_02


执行完毕后,在客户端的相应文件夹下,你会发现文件已经同步过去了。这就是通过ssh同步文件的。

再注意一下,上面是不递归拷贝,要想递归拷贝加参数-r。使用看man手册你会发现一大大坨参数。

七、使用rsync对本机不通文件夹的文件进行同步

1.将root家目录下的所有文件递归同步到/home/kahn/xfolder下去。[root@xserver ~]# rsync -avzr * /home/kahn/xfolder/

[root@xserver ~]# tree ~
/root
├── anaconda-ks.cfg
├── original-ks.cfg
└── testServerFolder
    └── server1.txt

1 directory, 3 files
[root@xserver ~]# 
[root@xserver ~]# tree /home/kahn/xfolder/
/home/kahn/xfolder/

0 directories, 0 files
[root@xserver ~]# 
[root@xserver ~]# rsync -avzr * /home/kahn/xfolder/
sending incremental file list
anaconda-ks.cfg
original-ks.cfg
testServerFolder/
testServerFolder/server1.txt

sent 2,396 bytes  received 81 bytes  4,954.00 bytes/sec
total size is 5,008  speedup is 2.02
[root@xserver ~]# 
[root@xserver ~]# tree /home/kahn/xfolder/
/home/kahn/xfolder/
├── anaconda-ks.cfg
├── original-ks.cfg
└── testServerFolder
    └── server1.txt

1 directory, 3 files
[root@xserver ~]#

八、在客户端上执行,让Rsync通过ssh从服务器端传递文件到客户端

1.下面的命令意思是,在客户端上执行rsync,归档同步,从服务器端的/home/kahn/xfolder文件夹及文件夹本身的所有内容,注意是包含xolder文件夹本身,同步至本机(客户机)的/tmp/kahnclient/文件夹下。

[root@xclient ~]# rsync -avzr xserver:/home/kahn/xfolder /tmp/kahnclient/
The authenticity of host 'xserver (10.100.100.210)' can't be established.
ECDSA key fingerprint is SHA256:Dhrir3IdiKyNSakp2tJ2of8RdvPpIgqn9u4NliLxuLg.
ECDSA key fingerprint is MD5:8b:27:cb:fb:5e:e7:12:96:49:37:fb:e0:5c:ba:8d:bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xserver,10.100.100.210' (ECDSA) to the list of known hosts.
root@xserver's password: 
receiving incremental file list
xfolder/
xfolder/anaconda-ks.cfg
xfolder/original-ks.cfg
xfolder/testServerFolder/
xfolder/testServerFolder/server1.txt

sent 93 bytes  received 2,449 bytes  299.06 bytes/sec
total size is 5,008  speedup is 1.97
[root@xclient ~]# 
[root@xclient ~]# ls /tmp/kahnclient/
xfolder
[root@xclient ~]# ls /tmp/kahnclient/xfolder/
anaconda-ks.cfg  original-ks.cfg  testServerFolder
[root@xclient ~]# ls /tmp/kahnclient/xfolder/testServerFolder/
server1.txt
[root@xclient ~]#

哎,本意想是拷贝服务器端的/home/kahn/xfolder下的所有文件(不包含xfolder本身),这样的话就得这样写/home/kahn/xfolder/*

八、在客户端上,查看服务器端的同步列表

1.首先得将服务器端的rsync配置文件/etc/rsyncd.conf中的list = false改为true

2.在客户端执行命令
命令解析,xRsync1就是配置的rsync虚拟用户,10.100.100.210就是rsync服务器端。回车即可。
可以看到服务器端仅仅“共享”了一个文件夹叫rsyncFolder,后面的是描述。注意哦,无需输入密码,任何一个虚拟用户都行。

[root@xclient ~]# rsync --list-only xRsync1@10.100.100.210::

rsyncFolder    	kahn's rsync folder
[root@xclient ~]#