文件同步详细操作(NFS,rsync)

目录

一、NFS的工作原理

二、NFS安装与检查

三、服务端安装配置(192.168.65.201)

四、Linux客户端挂载配置(192.168.65.202)

五、Linux挂载windows的共享目录

六、卸载已挂载的NFS共享目录

七、rsync物理同步

八、扩展说明


一、NFS的工作原理

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。

在启动NFS SERVER之前,首先要启动RPC服务(即portmap或rpcbind服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs  reload或exportfs –rv即可使修改的/etc/exports生效。

文件同步详细操作(NFS,rsync)_第1张图片

二、NFS安装与检查

1、环境信息

服务端:192.168.65.201 【Linux】 ;

客户端:192.168.65.202 【Linux】;
2、NFS服务检查以及安装
检查是否安装nfs-utils 、rpcbind服务,系统默认已安装,如果没有安装通过 yum安装

[root@CentOS7-0002 ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-49.el7.x86_64
nfs-utils-1.3.0-0.68.el7.2.x86_64
[root@CentOS7-0002 ~]# 
[root@CentOS7-0001 /]# yum -y install nfs-utils rpcbind

3、关闭防火墙、selinux

[root@CentOS7-0002 ~]# systemctl stop firewalld
[root@CentOS7-0002 /]# sed -i "7s/enforcing/disabled/" /etc/selinux/config
[root@CentOS7-0002 /]# setenforce 0

三、服务端安装配置(192.168.65.201)

1、创建共享文件
在NFS服务端上创建共享目录/srv/nfs_share/test并设置权限

[root@CentOS7-0002 /]# mkdir -p /srv/nfs_share/test
[root@CentOS7-0002 /]# chmod  666 /srv/nfs_share/test/

2、编辑export文件设置共享目录

[root@CentOS7-0002 /]#  vim  /etc/exports
/srv/nfs_share/test/ 192.168.65.*(rw,no_root_squash,async)

常见的参数则有:
rw:read-write,可读写;
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。
示例:
/newdisk/webUpload 28.163.1.*(rw,no_root_squash,async)

3、使配置文件生效

[root@CentOS7-0001 /]# exportfs -r

exportfs -rv   //重新输出共享目录(重新启动本机上的所有共享目录)
nfsstat          //查看NFS的运行状态,对于调整NFS的运行有很大帮助。

4、启动rpcbind、nfs服务

[root@CentOS7-0002 /]# systemctl start rpcbind
[root@CentOS7-0002 /]# systemctl start nfs

5、设置rpcbind、nfs开机自启动

[root@CentOS7-0002 /]# systemctl enable rpcbind
[root@CentOS7-0002 /]# systemctl enable nfs

6、查看 RPC 服务的注册状况    

[root@CentOS7-0002 /]# rpcinfo -p localhost

7、查看共享出来的目录( 服务端或者客户端都可以)

[root@CentOS7-0002 /]# showmount -e 192.168.65.56  

showmount命令:
-e       显示NFS服务器的共享列表
-a       显示本机挂载的文件资源情况
-v       显示版本号

四、Linux客户端挂载配置(192.168.65.202)

 

1、客户端查看nfs共享状态

[root@CentOS7-0003 ~]# showmount -e 192.168.65.201
Export list for 192.168.65.56:
/srv/nfs_share/test 192.168.65.*

2、客户端挂载nfs服务器共享目录
命令格式:mount  文件类型  NFS服务器IP:共享目录 本地挂载点目录

[root@CentOS7-0003 ~]# mkdir -p /srv/nfs_share/test
[root@CentOS7-0003 ~]# mount -t nfs 192.168.65.56:/srv/nfs_share/test  /srv/nfs_share/test

说明:mount命令只能通过root用户才能执行,如果客户端想通过普通用户访问该同步目录,需要设置服务端共享目录的权限,设置共享目录普通用户可以访问。

如服务端设置:chmod -R 666 /srv/nfs_share_test

3、设置开机自动挂载
因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权,并将命令添加到/etc/rc.d/rc.local文件中

[root@CentOS7-0002 ~]# chmod +x /etc/rc.d/rc.local

添加一下脚本,并保存即可。
mount -t nfs 192.168.65.56:/srv/nfs_share/test  /srv/nfs_share/te

 

五、Linux挂载windows的共享目录(192.168.65.148)

1、window端共享目录需要挂载的目录

文件同步详细操作(NFS,rsync)_第2张图片

找一台其他通网段window,在命令行输入:\\192.168.65.148\test 验证是否可以正常访问。

 2、Linux客户端执行挂在命令

mount -t cifs -o username=admin,password=123456,uid=nfsuser,gid=root //192.168.65.148/test/ /srv/test/

需要安装cifs-utils工具包,默认是已经安装。
常用参数说明 :
username , Window 系统登录用户名 ;
password : Window 系统登录密码 ;
uid:linux挂载目录的用户
gid:Linux挂载后目录的分组
//192.168.65.148/test/: 设置Window共享目录的路径 ;
/srv/test/ : 挂载到 Linux 下的那个目录
dir_mode=0777:参数设置挂载目录的权限
file_mode=0777:参数设置挂载文件的权限

说明:mount命令只能通过root用户执行,如果linux需要通过普通用户访问操作,可以通过uid,gid执行用户和用户组,通过dir_mode和file_mode设置目录和文件的访问权限

六、卸载已挂载的NFS共享目录

使用umount命令卸载已挂在的NFS目录

[root@CentOS7-0003 ~]# umount /srv/test/

如果出现:device is busy错误,加上-l参数强制卸载。

[root@CentOS7-0003 ~]# umount -l /srv/test/

 

七、rsync物理同步

安装rsync,建议使用普通用户安装,下载安装文件加压到对应的安装目录即可,我的安装目录:

/opt/software/rsync

网盘下载链接:

链接:https://pan.baidu.com/s/1_YGlHGynckE6BZ6ASaa8Aw   提取码:zhan

服务端配置(192.168.65.201)

在rsync安装目录/conf/rsyncd.conf文件中配置如下信息:

#默认配置
uid = 0     #守护进程的用户     
gid = 0     #守护进程的组
port = 52326      #启动端口,tcp
use chroot=no      #不使用chroot                       
max connections=100      #最大连接数100                   
pid file=/opt/software/rsync/rsyncd.pid     #pid文件目录
lock file=/opt/software/rsync/rsync/rsync.lock     #locl文件目录       
log file=/opt/software/rsync/logs/rsyncd.log   #log文件目录

#模块参数1                
[upload]   #认证模块名,需在客户端配置                        
path=/srv/www/app/fileWeb/upload_file  #服务端同步源目录,末尾无“/”                    
comment=rsync files   #模块注释信息
ignore errors    #忽略无用信息                             
read only=no   #只读                             
list=no   #不允许列文件                                 
#auth users=rsync   #认证用户名,与rsyncd.pas里的配置一致                        
secrets file=/opt/software/rsync/conf/rsyncd.pas    #密码文件路径
#模块参数 2               
[upload]   #认证模块名,需在客户端配置                        
path=/srv/www/app/fileWeb/h5  #服务端同步源目录,末尾无“/”                    
comment=rsync files   #模块注释信息
ignore errors    #忽略无用信息                             
read only=no   #只读                             
list=no   #不允许列文件                                 
#auth users=rsync   #认证用户名,与rsyncd.pas里的配置一致                        
secrets file=/opt/software/rsync/conf/rsyncd.pas    #密码文件路径

客户端配置(192.168.65.202)

在/opt/software/rsync/rsync_client文件中配置客户端同步脚本

#变量定义
#!/bin/bash
serverhost=20.32.19.11   #客户端IP,可按需配置多个
bdir=/srv/www/app/upload/  #客户端目标目录,可配置多个,末尾“/”必须加
serverid=upload   #服务端认证模块名
#bdir1=/srv/www/app/h5/  #客户端目标目录,可配置多个,末尾“/”必须加
#serverid1=h5   #服务端认证模块名

user=rsync   #用户
DATE=`date +%Y%m%d`   #日期变量

#客户端同步脚本,多个目录配置多个同步脚本
cd /opt/software/rsync/bin
#get from remote   #将远程目录同步到本地客户端,可按照需要配置多条
./rsync -vzrtopgu --progress --password-file=/opt/software/rsync/conf/rsync.pas --port=52326 $user@$serverhost::$serverid $bdir  >>  /opt/software/rsync/logs/upload_to_local.$DATE.log

#get from remote   #将远程目录同步到本地客户端,可按照需要配置多条
#./rsync -vzrtopgu --progress --password-file=/opt/software/rsync/conf/rsync.pas --port=52326 $user@$serverhost::$serverid1 $bdir1  >>  /opt/software/rsync/logs/upload_to_local.$DATE.log

#反向同步脚本,多个目录配置多个同步脚本
#send to remote    #将本地目录同步至远程服务端,可按照需要配置多条
./rsync -vzrtopgu --progress --password-file=/opt/software/rsync/conf/rsync.pas --port=52326 $bdir $user@$serverhost::$serverid  >>  /opt/software/rsync/logs/upload_to_server.$DATE.log
#send to remote    #将本地目录同步至远程服务端,可按照需要配置多条
./rsync -vzrtopgu --progress --password-file=/opt/software/rsync/conf/rsync.pas --port=52326 $bdir1 $user@$serverhost::$serverid1  >>  /opt/software/rsync/logs/upload_to_server.$DATE.log

说明:

  • 单向同步时,可一个服务端认证模块对多个客户端,即多个不同客户端从服务端同步目录至本地。
  • 双向同步时,服务端也是客户端,两边都需要配置认证模块信息和同步脚本,都需要启动服务端和启动客户端。

服务启动

1、服务端启停

# cd /opt/software/rsync
# ./run_server.sh start
# ./run_server.sh stop
  1. 2、客户端启停
# cd /opt/software/rsync/
# ./run_client.sh startall
# ./run_client.sh stopall

客户端没有一定的启动方式,为自编写shell脚本,必须用startall和stopall命令启动停止。all命令添加了reset和watchdog监控重启机制,每3秒检查一次,若有同类任务存活,则不拉起客户端同步,若无同类任务存活,则拉起客户端同步。即每三秒进行一次同步,这个时间可在run_client.sh脚本中配置。

文件同步详细操作(NFS,rsync)_第3张图片

 日志清理

客户端同步脚本中配置了日志目录,会打印每一条同步信息,同步的文件越多越大,打印的日志信息越多,需定时清理。建议不停应用清理,也可配置定时脚本清理,命令如下。

# >xxx.log

不要直接删除log文件,对运行程序直接删除对应日志文件,可能导致空间不释放,服务器卡死。

八、扩展说明


NFS服务器的配置相对比较简单,只需要在相应的配置文件中进行设置,然后启动NFS服务器即可。
NFS的常用目录
/etc/exports                 NFS服务的主要配置文件
/usr/sbin/exportfs              NFS服务的管理命令
/usr/sbin/showmount             客户端的查看命令
/var/lib/nfs/etab              记录NFS分享出来的目录的完整权限设定值
/var/lib/nfs/xtab               记录曾经登录过的客户端信息


 

你可能感兴趣的:(服务器,linux,windows)