文件共享同步5种方式:NFS、NAS、rsync、scp、ftp 您所在的位置:网站首页 rsync使用什么协议 文件共享同步5种方式:NFS、NAS、rsync、scp、ftp

文件共享同步5种方式:NFS、NAS、rsync、scp、ftp

2023-10-28 16:54| 来源: 网络整理| 查看: 265

谈到文件同步,我们最直接的同步方式是采用rsync的同步软件,rsync同步可以保持server和client的强一致(server中的增删改都会同步client),但在实际场景中rsync可能并不能被采纳。考虑到多场景,我在此列出来常用的同步方式,以及对应的利弊。

当然除了上面说的三种方式,还有2种在生产环境中会优先考虑的:NAS和NFS

1、rsync:最常用的同步方式,也是做文件同步的首先,但在实际的工作中,由于传统企业并没有对开源软件保持开放的心态,所以在某些场合下,虽说是最好的解决方法,但不一定会被认可。

2、scp实现免密码文件同步:此方式采用scp定时复制,实现server和client的文件同步,但需要实现服务器之间的免密码登录服务器,弊端在于需要修改服务器的SSH核心配置项,这在某些场合中是被禁止的。

3、ftp实现文件同步:ftp实现的同步属于弱同步,不能严格意义上实现文件的同步(文件的增加和修改可以实现严格意义的一直,但删除ftp同步暂时无法实现),此方法是同步的旁门左道,到在某些特定的情况下,确十分被接纳。毕竟ftp比rsync更能被传统行业所认可。

4、NAS存储:(Network Attached Storage)网络存储基于标准网络协议实现数据传输,为网络中的Windows / Linux / Mac OS 等各种不同操作系统的计算机提供文件共享和数据备份。

5、NFS:NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NAS和NFS都是采用网络协议实现文件的共享,但区别在于NAS是硬件级别的实现,NFS是软件实现,相当于在做负载均衡的时候,keepalived和F5硬件负载的区别。

rsync同步实现

rsync目录同步,可以采用yum的方式,也可以采用源码编译,笔者就是采用rsync的源码方式进行的安装。且作者整理成安装脚本,完成的下载目录:

http://update.faqrobot.org/onekey/rsync.zip

(1)、rsync的安装

rsync的安装分为server和client的安装,此处作者将rsync安装在/iyunwen/server/rsync下面

其中的代码如下,rsync_server()为实现rsync的server,rsync_client()为实现rsync的client

#!/bin/bash rm -rf rsync-3.1.2 if [ ! -f rsync-3.1.2.tar.gz ];then   wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz fi rsync_server() {     tar -zxvf rsync-3.1.2.tar.gz     cd rsync-3.1.2     mkdir -p /iyunwen/server/rsync/     mkdir -p /iyunwen/log/rsync/     ./configure --prefix=/iyunwen/server/rsync/     make     make install     ln -s /iyunwen/server/rsync/bin/rsync  /usr/bin/rsync     cd ..     #mkdir -p /etc/rsyncd/     \cp -rf ./rsyncd /iyunwen/server/rsync/     mkdir -p /iyunwen/server/rsync/rsyncd     chmod 600 /iyunwen/server/rsync/rsyncd/rsyncd.secrets     echo "rsync --daemon --config=/iyunwen/server/rsync/rsyncd/rsyncd.conf" >> /etc/rc.local     /iyunwen/server/rsync/bin/rsync --daemon --config=/iyunwen/server/rsync/rsyncd/rsyncd.conf     netstat -nltup } rsync_client() {         tar -zxvf rsync-3.1.2.tar.gz         cd rsync-3.1.2         ./configure --prefix=/iyunwen/server/rsync/         make         make install         ln -s /iyunwen/server/rsync/bin/rsync  /usr/bin/rsync         cd ..         mkdir -p /iyunwen/server/rsync/         mkdir -p /iyunwen/server/rsync/cron.daily.rsync/         cp -rf ./rsyncd/cron.daily.rsync/rsync_client.sh /iyunwen/server/rsync/cron.daily.rsync/         chmod 755  /iyunwen/server/rsync/cron.daily.rsync/rsync_client.sh         mkdir -p /iyunwen/server/rsync/rsyncd/         cp -rf ./rsyncd/rsyncuser.password /iyunwen/server/rsync/rsyncd/         chmod 600 /iyunwen/server/rsync/rsyncd/rsyncuser.password         echo "* * * * * root run-parts  /iyunwen/server/rsync/cron.daily.rsync" >> /etc/crontab         /etc/init.d/crond restart } real=`grep -l '\^H' /root/.bash_profile`    if [ $? -eq 1 ];then    echo  'stty erase ^H' >> /root/.bash_profile    source /root/.bash_profile   #这几行主要就是让在使用read键时能使用回删键。写错了,回删了,重启写。不用这段的话,回删键会变成乱码。  fi echo -e '\033[0;33;1m #################nagios################## \033[0m' #让echo能弄点颜色出来好看点。。。      echo "rsync server install please input : 1"  echo "rsync client install please input : 2"    echo -e '\033[0;33;1m ######################################### \033[0m' read -p "please chose : " frist   #定义输入的值  if [ $frist -eq 1 ];then     rsync_server else     rsync_client fi

(2)、关于rsync核心配置项说明:

rsync的核心配置项,也为rsync所在的server端,配置项所在目录:

/iyunwen/server/rsync/rsyncd/rsyncd.conf

对于rsyncd.conf文件如下信息很重要:

图片.png

模块定义什么呢?主要是定义服务器哪个目录要被同步。每个模块都要以[name]形式。这个名字就是在rsync 客户端看到的名字,其实有点像Samba服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。我们可以根据自己的需要,来指定多个模块。每个模块要指定认证用户,密码文件、但排除并不是必须的; 我们来个简单的示例:比如我们要备份服务器上的 /data/share 和/opt ,在/data/share中,我想把beinan和samba目录排除在外;

图片.png

配置完成启动命令为:

/iyunwen/server/rsync/bin/rsync --daemon --config=/iyunwen/server/rsync/rsyncd/rsyncd.conf

如果存在失败,rsync的日志路径为:/var/log/messages

(3)、rsync client通过定时脚本实现同步

rsync server配置后,同步的命令为:

rsync -avzp --delete --password-file=/iyunwen/server/rsync/rsyncd/rsyncuser.password [email protected]::www /iyunwen/www/robot

参数说明

v:显示详细信息

z:传输过程中对数据进行压缩

r:递归

t:保留修改时间属性

o:保留文件所有者属性

p:保留文件权限属性

g:保留文件所属组属性

a:归档模式,主要保留文件属性,等同于-rlptgoD

--password-file=FILE:指定密码文件,将密码写入文件,实现非交互式数据同步,这个文件名也需要修改权限为600

--delete:删除那些仅在目标路径中存在的文件(源路径中不存在),在脚本中的数据同步经常加上此参数

在实际的同步过程中,如果同步的周期比较短,且同步的目录比较大,则会出现rsync锁住的情况,导致CPU特别高,或者同步异常,因此在生产环境中,

flock -xn /var/run/rsync.lock -c 'rsync -avzp --delete --password-file=/iyunwen/server/rsync/rsyncd/rsyncuser.password [email protected]::www /iyunwen/www/robot'

flock加入了锁机制,当前同步没有执行完毕,下次的同步是无法进行,避免了CPU的大量浪费

***************************

  排除故障

***************************

1.@ERROR: auth failed on module xxxxx

    rsync: connection unexpectedly closed (90 bytes read so far)

    rsync error: error in rsync protocol data stream (code 12) at io.c(150)

 这是因为密码设错了, 无法登入成功, 请检查一下 rsyncd.scrt 中的密码, 二端是否一致?

2.password file must not be other-accessible

    continuing without password file

    Password:

    这表示 rsyncd.scrt 的档案权限属性不对, 应设为 600。

3.@ERROR: chroot failed

    rsync: connection unexpectedly closed (75 bytes read so far)

    rsync error: error in rsync protocol data stream (code 12) at io.c(150)   

    这通常是您的 rsyncd.conf 中的 path 路径所设的那个目录并不存在所致.请先用 mkdir开设好要备份目录

4.@ERROR: access denied to www from unknown (192.168.1.123)

    rsync: connection unexpectedly closed (0 bytes received so far) [receiver]

    rsync error: error in rsync protocol data stream (code 12) at io.c(359)

    最后原因终于找到了。因为有两个网段都需要同步该文件夹内容,但没有在hosts allow 后面添加另一个IP段

    hosts allow = 192.168.1.0/24

    改为

    hosts allow = 192.168.1.0/24 192.168.2.0/24

    重新启动rsync



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有