目录

一、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安装与检查

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端共享目录需要挂载的目录

找一台其他通网段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脚本中配置。

 日志清理

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

# >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               记录曾经登录过的客户端信息

文件同步详细操作(NFS,rsync)相关推荐

  1. ubuntun系统mysql数据库同步_Ubutun 14.10下mysql 主从同步详细操作

    d)配置MySQL从服务器的my.cnf文件 vi /etc/my.cnf #编辑配置文件,在[mysqld]部分添加下面内容 server-id=2 #配置文件中已经有一行server-id=1,修 ...

  2. IAR使用方法建立工程文件超详细操作步骤

    第一步: 第二步: 第三步: 第四步:点击OK后选择文件夹保存,名字随意 第五步:点击保存 第六步: 第七步: 第八步:右键箭头位置按图示添加 第九步:右键箭头位置按图示点击 第十步:点击箭头位置,并 ...

  3. Keil如何生成bin文件 - 附详细操作图文

    Keil如何生成bin文件 第一步:生成axf输入文件 点击魔术棒"Options for Target" → 单击" Output " → 按下面截图所示配置 ...

  4. Python打包成exe文件_详细操作

    Python打包成exe文件 前言 一.安装pyinstaller 1.1 安装pyinstaller,使用安装命令: 1.2 如果遇到需要更新版本请输入: 1.3 检查是否正确安装 1.4 稍等,水 ...

  5. Python 文件的详细操作

    一.文件打开常用的三总方式 1.文件打开r模式 只读不能写 with open('a.txet','r',encoding='gbk') as a:# 文件路径 文件打开方式 解码方式 变量名prin ...

  6. Windows系统下批量重命名文件(超详细操作讲解)

    一.首先打开命令窗口:在文件夹空白处shift+鼠标右键 二.在命令行输入:dir/b>rename.xls,回车,文件夹里就会生成一个excel表格.(备注:这里的/b是一个参数,为了实现所有 ...

  7. Linux Rsync实现文件同步备份(转载)

    原文地址:Linux Rsync实现文件同步备份作者:夷北 转自:http://www.mike.org.cn/blog/index.php?load=read&id=639###pp=0 [ ...

  8. PHPStorm 配置远程服务器文件夹在本地windows镜像,实现代码自动同步(类似于Samba架构文件同步功能)

    场景介绍: 这是一种类似samba架构,也和 filezilla+xshell 模式相类似的代码文件同步的模式,但是却更加优雅,也更加方便简洁. 环境介绍: 本地windows端:编辑器phpstor ...

  9. Linux系统中的文件传输(scp和rsync命令的使用)

    一.实验环境 两台可以通信的主机 rhel7: 192.168.1.20 rhel8: 192.168.1.10 二.scp命令 scp 本地文件 远程主机用户@远程主机ip:远程主机目录 scp 远 ...

最新文章

  1. 最小公倍数和最大公约数
  2. mysql 备份库的shell_shell学习之自动备份mysql数据库
  3. LeetCode 665. 非递减数列(双指针)
  4. WdatePicker日期插件
  5. aspx怎么转成java,Asp.net 2.0 中.aspx请求,即如何生成响应的Html文件(原创)
  6. map slice综合示例 go语言
  7. 2020-12-28 learning opencv3: 十:Smoothing
  8. 【转】java对音频文件的频谱分析
  9. 大学物理2-2笔记(5)麦克斯韦电磁场理论
  10. 北京周末游周边 —— 延庆世园会
  11. TCP/UDP端口列表
  12. 【NE】北邮循序渐进学习NE
  13. 大家来参与一个外包项目的需求分析,考察自己是否有当项目经理/总监的潜力
  14. FPGA小白学习之路(2)error:buffers of the same direction cannot be placed in series
  15. Java面试题集(131-135)
  16. @ViewBuilder 在自定义 View 中的使用
  17. 基于统计概率和机器学习的文本分类技术 —— 社区产品机器审核机制预研报告...
  18. 第一期挖矿大赛进展如何?——Nervos 双周报第十二期
  19. Django基础阶段小结一下
  20. hyperscan在IPS/IDS产品中的应用

热门文章

  1. python实现rar解压和压缩
  2. python计算存款_第一部分:趣味算法入门;第七题:最佳存款方案
  3. 网站优化SEO关于TDK以及ALT标签的设置点
  4. WEB前端网页设计-Bootstrap 按钮下拉菜单
  5. 计算机网络4 网络层
  6. 原始传奇服务器维护,《原始传奇》7月29日09:00合区公告
  7. git操作:根据修改历史找到该历史的所有分支(根据commit id 查找包含该commit id的所有分支)
  8. 计算机试题上网部分怎么做,考试经验之谈:计算机一级考试上网题怎么操作?...
  9. 朱嘉明 | 认知未来货币需要新的思想资源
  10. matlab中不能找到ccs,搭建matlab连接ccs生成28335代码的环境(路径不在C盘)