欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 运维知识 > centos >内容正文

centos

centos rsync服务搭建 -凯发k8官方网

发布时间:2024/9/30 centos 16 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 centos rsync服务搭建 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

前言:

总结下rsync服务搭建

介绍:

rsync(remote synchronize)是一个远程数据同步工具,可通过lan/wan快速同步多台主机间的文件。

特点:

  • 能更新整个目录和树和文件系统
  • 有选择性的保持符号连接、硬链接、文件属于、权限、设备以及时间等
  • 能用rsh、ssh或直接端口做为传输入端口
  • 支持匿名rsync同步文件

rsync同步源:

指备份操作的远程服务器,也称为备份源,主要包括两种:rsync源、ssh源

命令格式:

本地同步rsync 本地目录1 本地目录2 rsyncssh同步rsync ssh源 本地目录rsync 本地目录 ssh源 rsyncrsync同步rsync rsync源 本地目录rsync 本地目录 rsync源

rsync命令的用法:

基本格式:rsync [选项] 原始位置 目标位置

-a 归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgod-r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的是目录必须加-r选项;-t 保持文件的时间属性;-p 保持文件的权限属性;-l 保留软链接;-l 同步软链接的同时同步其源文件;-g 保存文件数组;-o 保持文件的属主;-d 保存设备文件信息;-v =visual,可视化;-p 显示同步过程,比v更详细;-u =update,加上该选项,如果dest中文件比src中的新,则不同步;-z =zip,传输时压缩;delete 删除dest中src没有的文件;–exclude 过滤指定文件,不同步;–progress 在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、同步的文件传输速度等等;-e 指定端口;

进行实验

需要两台服务器

服务器端 192.168.186.135 客户机端 192.168.186.132

通过ssh进行同步

服务器端 [root@lemon /]mkdir /var/ssh [root@lemon ssh]# touch ssh.txt(进行测试的文本) #i建立两个用户,一个上传一个下载 [root@lemon ssh]# useradd a1 [root@lemon ssh]# passwd a1 [root@lemon ssh]# useradd a2 [root@lemon ssh]# passwd a2 #a1用户上传,更改一下属主权限 [root@lemon var]# chown a1:a1 /var/ssh/ #a2用户进行下载 客户机端(发起端) mkdir /ssh #发起端要先安装下rsync,使用命令: rsync -avz a2@192.168.186.135:/var/ssh/* /ssh/


文件被传输过来了

但有时文件目录的属主权限是不能随意更改的,比如服务器端搭建了一个网站,如果将属组改成其他可能导致访问不了,可以使用setfacl命令进行操作

[root@lemon var]# mkdir /a [root@lemon var]# setfacl -m u:manager:rwx /a [root@lemon var]# useradd shy [root@lemon var]# setfacl -m u:shy:r-x /a #i删除权限 [root@lemon var]setfacl -x u:shy:r-x /a [root@lemon var]setfacl -b /a

数据的上传

在客户端ssh目录下新建一个test.txt

同步到服务器端

同步完成

通过rsync进行同步

服务器端

没有主配值文件,需要自己手动写

[root@lemon etc]# vim /etc/rsyncd.conf use chroot = yes address = 192.168.186.135 port 873 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid [share]comment = shypath = /var/rsyncread only = yesdont compress = *.gz *.bz2auth users = shysecrets file = /etc/rsyncd_users.db

写一个密码存放的文件

[root@lemon etc]# vim /etc/rsyncd_users.db [root@lemon etc]# rsync --daemon [root@lemon etc]# netstat -anpt


端口已经开启了,下面就在服务器端创建测试文本

[root@lemon etc]# mkdir /var/rsync [root@lemon etc]# cd /var/rsync/ [root@lemon rsync]# touch rsync.txt

客户端

先创建一个存放文件的目录 mkdir /rsync 进行连接 rsync -avz shy@192.168.186.135::share /rsync

如果访问失败的话更改一下服务器端密码文件的权限

#服务器端 [root@lemon rsync]# cd /etc [root@lemon etc]# chmod 600 rsyncd_users.db


同步完成

0x03:完成实时自动同步

需要两台服务器

服务器端 192.168.186.135 客户机端 192.168.186.136

双向同步服务器不需要认证,方便后面的实验
这里使用的是root用户

服务器端:

[root@lemon 桌面]# ssh-keygen -t rsa [root@lemon 桌面]# ssh-copy-id 192.168.186.136

同步到客户端中

同步成功
客户机端:

ssh-keygen -t rsa ssh-copy-id 192.168.186.135


注意:如果提示没有ssh-copy-id这个命令,是因为最小化安装的缘故有的软件包没有安装上去

执行下面,去掉最小化安装的问题. yum -y install openssh-clients

测试一下,客户机登陆一下:

测试成功

下面就来安装软件包,两台机器首先都需要安装gcc

yum -y install gcc*

安装好之后,两台机器连接一下软件包镜像,在软件包镜像挂载客户端的时候遇到了一个问题,因为我客户端选择的是无桌面的,连接镜像后什么也没有。

解决方法:

mount -o ro /dev/cdrom /media/ 再次查看


镜像挂载好之后,服务器和客户机都要进行安装

cd /media/20130806_063316/ cp * /usr/src 先安装ocaml这个函数库(都要装) [root@lemon src]# tar -zxf ocaml-3.10.1.tar.gz [root@lemon src]# cd ocaml-3.10.1 [root@lemon ocaml-3.10.1]# ./configure [root@lemon ocaml-3.10.1]# make world opt [root@lemon ocaml-3.10.1]# make install 再安装unison(都要装) [root@lemon src]# tar -zxf unison-2.13.16.tar.gz [root@lemon unison-2.13.16]# make uistyle=text threads=true static=true


这个错误不用管,是正常的

再将该命令添加到环境变量中去 [root@lemon unison-2.13.16]# cp unison /usr/local/bin/ 接下来再安装inotify软件(都要装) [root@lemon src]# tar -zxf inotify-tools-3.14.tar.gz [root@lemon src]# cd inotify-tools-3.14 [root@lemon inotify-tools-3.14]# ./configure [root@lemon inotify-tools-3.14]# make [root@lemon inotify-tools-3.14]# make install

安装好之后进行测试

服务器端

mkdir /server1 [root@lemon server1]# touch server1.txt

客户端

mkdir /server2 touch server2.txt

服务器端进行同步

[root@lemon inotify-tools-3.14]# unison -batch /server1/ ssh://192.168.186.136//server2


同步成功

但通过命令比较麻烦,可以写shell脚本自动实现传输

#!/bin/bash ip2="192.168.186.136" src2="/server1" dst2="/server2" /usr/local/bin/inotifywait -mrq -e create,delete $src2 | while read line; do/usr/local/bin/unison -batch $src2 ssh://$ip2/$dst2 echo -n "$line" >> /var/log/inotify.log echo `date | cut -d " " -f1-4` >> /var/log/inotify.log done

保存为1.sh

执行脚本 bash 1.sh

然后在客户机端远程连接服务器端

并在server1目录下创建一个文件,观察服务器端

实现了自动传输

除了这种还有其他方法,能够实现文件传输

服务器端进行的操作:
需要安装两个软件包

[root@lemon server1]# yum -y install rpcbind [root@lemon server1]# yum -y install nfs-utils [root@lemon server1]# vim /etc/exports

在这个文件中写入我们想要文件共享的列表

/public 192.168.186.0/24(rw,sync) /share 192.168.186.136(ro,sync)

比如建立这两个目录,public目录是186网段的都拥有读写权限,而share 目录只192.168.186.136
可以读

[root@lemon /]# mkdir /public [root@lemon /]# mkdir /share [root@lemon /]# chmod 777 /public/ [root@lemon /]# chmod 777 /share/ [root@lemon /]# cd /public/ [root@lemon public]# touch public.txt [root@lemon public]# cd .. [root@lemon /]# cd /share/ [root@lemon share]# touch share.txt 重启下服务 [root@lemon share]# service rpcbind restart [root@lemon share]# service nfs restart

showmount -e可以查看到本机共享的文件

出现错误是因为nfs服务器的hosts文件中的域名和nfs服务器的ip地址不对应造成的。
解决方法如下:
https://yq.aliyun.com/articles/43115

客户端进行的操作
先安装下这两个软件包

[root@lemon server1]# yum -y install rpcbind [root@lemon server1]# yum -y install nfs-utils

在客户端使用命令查看,能发现服务器端共享出来的资源

将服务器端的/public目录挂载到客户端的/mnt目录,如果权限不允许的话先重启服务试试看

挂载/public目录成功,可以进行读写,下面来挂载一下/share目录,先卸载当前挂载的

umount /mnt/

然后将/share目录挂载到/mnt/目录,使用mount命令查看拥rw权限

到此实验就全部验证完成了!

总结

以上是凯发k8官方网为你收集整理的centos rsync服务搭建的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图