[实验] NFS 远程共享服务的搭建 (openSUSE Leap 15 版)

纪念:站主于 2020 年 1 月完成了此开源实验,并将过程中的所有命令经过整理和注释以后,形成以下教程

步骤目录:

步骤一:规划拓扑
1.1 服务器列表
1.2 服务器列表简介

步骤二:系统环境要求

步骤三:所有服务器安装 NFS 服务
3.1 所有服务器安装 NFS 服务
3.2 设置所有服务器开机自启 NFS 服务
3.3 所有服务器启动 NFS 服务

步骤四:配置 NFS 服务
4.1 创建用于 NFS 服务的目录
4.1.1 创建被 NFS 服务共享的目录
4.1.2 创建用于挂载 NFS 服务分享目录的目录
4.2 配置服务端的 NFS 服务配置文件
4.2.1 在服务端上添加可被 NFS 服务挂载的选项
4.2.2 让刚刚修改的 NFS 服务配置文件生效
4.3 配置客户端的 NFS 服务挂载文件
4.3.1 在客户端上添加开机挂载 NFS 服务的选项
4.3.2 让刚刚修改的 NFS 服务挂载文件

步骤五:确认 NFS 服务是否搭建成功

具体的操作步骤:

具体的操作步骤:
步骤一:规划拓扑
1.1 服务器列表

服务端 192.168.1.20
客户端 192.168.1.21

1.2 服务器列表简介

1) 服务器提供 NFS 服务将自己的目录分享
2) 客户端挂载和使用 NFS 服务将服务端分享的目录挂载在自己的目录上

步骤二:系统环境要求

1) 所有服务器的系统都需要是 openSUSE 15.1 版本
2) 所有服务器都要关闭防火墙
3) 所有服务器系统都要配置好可用的软件源(最好是软件数量最多的官方版本)
4) 需要按照拓扑图给对应的服务器配置好 IP 地址和主机名
5) 所有服务器都要可以相互 ping 通自己和对方的 IP 地址和主机名

步骤三:所有服务器安装 NFS 服务
3.1 所有服务器安装 NFS 服务

(分别在服务端和客户端上执行以下步骤)

# zypper install nfs-kernel-server
# zypper install nfs-client

3.2 设置所有服务器开机自启 NFS 服务

(分别在服务端和客户端上执行以下步骤)

# systemctl enable rpcbind
# systemctl enable nfsserver

3.3 所有服务器启动 NFS 服务

(分别在服务端和客户端上执行以下步骤)

# systemctl start rpcbind
# systemctl start nfsserver

步骤四:配置 NFS 服务
4.1 创建用于 NFS 服务的目录
4.1.1 创建被 NFS 服务共享的目录

(只在服务端上执行以下步骤)

# mkdir /nfsserver

4.1.2 创建用于挂载 NFS 服务分享目录的目录

(只在客户端上执行以下步骤)

# mkdir /nfsclient

4.2 配置服务端的 NFS 服务配置文件
4.2.1 在服务端上添加可被 NFS 服务挂载的选项

(只在服务端上执行以下步骤)

# vi /etc/exports

添加以下内容:

......
/nfsserver 192.168.1.21(rw,no_root_squash,no_subtree_check)

(补充:这里的 192.168.1.21 是客户端的 IP 地址)

4.2.2 让刚刚修改的 NFS 服务配置文件生效

(只在服务端上执行以下步骤)

# exportfs -a

4.3 配置客户端的 NFS 服务挂载文件
4.3.1 在客户端上添加开机挂载 NFS 的选项

(只在客户端上执行以下步骤)

# vi /etc/fstab

添加以下内容:

......
192.168.1.20:/nfsserver /nfsclient nfs  timeo=120,rw,soft,nolock  0 0

4.3.2 让刚刚修改的 NFS 服务挂载文件生效

(只在客户端上执行以下步骤)

# mount -a

步骤五:确认 NFS 服务是否搭建成功

(只在客户端上执行以下步骤)

# df -h | grep 192.168.1.20

(补充:如果出现了类似 “192.168.1.20:/nfsserver 38G 5.5G 31G 16% /nfsclient”,则代表 NFS 搭建成功了)

[命令] Linux 命令 find (查找文件或目录)

内容目录:

内容一:find 格式

内容二:find 选项

内容三:find 参数
3.1 匹配名称的参数
3.2 匹配属性的参
3.3 匹配所有者的参数
3.4 匹配权限的参数
3.5 匹配时间的参数
3.6 匹配大小的参数
3.7 匹配目录的参数
3.8 匹配格式化方式的参数
3.9 逻辑匹配参数

内容四:find 的使用案例
4.1 案例一:匹配名称的参数
4.2 案例二:匹配属性的参
4.3 案例三:匹配所有者的参数
4.3.1 从当前目录开始查找所属主是 root 的文件和目录
4.3.2 从当前目录开始查找没有所属主和所属组的文件和目录
4.3.3 查找所有所属主是 natasha 的文件并将它们复制到 /root/findfiles 目录下
4.4 案例四:匹配权限的参数
4.4.1 从当前目录开始查找所有权限为 0777 的文件,并将其显示出来
4.4.2 从当前目录开始查找权限为 222 的文件
4.4.3 从当前目录开始查找有任何执行权限的文件和目录
4.4.4 查找所有包含特殊权限的文件和目录
4.5 案例五:匹配时间的参数
4.5.1 从当前目录开始查找 10 天内被修改过的文件
4.5.2 从 /var/log/mysql 目录开始查找在过去 3 天被修过的文件和目录,并在确认后将其删除
4.6 案例六:匹配大小的参数
4.6.1 从当前目录开始查找所有大小为 0 的文件,并将其显示出来
4.6.2 从当前目录开始查找所有大小为 0 的文件
4.7 案例七:匹配目录的参数
4.8 案例八:匹配格式化方式的参数
4.9 案例九:逻辑匹配参数
4.9.1 从当前目录开始查找以 “.txt” 结尾和以 “.dox” 结尾的文件
4.9.2 从当前目录开始查找权限不是 777 的文件
4.9.3 从当前目录开始查找权限为 2000 和 4000 的文件,并分析文件属性

具体的内容:

内容一:find 格式

# find <directory> <parameter> <parameter> ...... -print <-exec|-ok> <command|file> {<command>} \;

内容二:find 选项

1) 目录 指需要查找的目录
2) 参数 限制匹配的条件,可以有多个
3) -print 将匹配的结果进行标准输出
4) -exec 对匹配的结果执行后面的步骤
5) -ok 和 -exec 的作用相同,只不过每执行一步就需要用户确认一下
6) command 对匹配的结果执行命令
7) file 对匹配的结果进行文件种类分析,后面的 {} 里的命令必须为空
8) 命令 对匹配结果要执行的命令

(注意:<-exec|-ok> {} \;,这是一个固定格式,谁也不能被缺少。并且 {<命令>} 和 \ 之间有一个空格)

内容三:find 参数
3.1 匹配名称的参数

1) -name n 名称是 n 的文件或目录
2) -iname n 名称是 n 的文件或目录,并且忽略大小写
3) -lname n 名称是 n 的链接

(注意:在 3) 参数中,n 是被链接文件的名称而不是链接文件本身的名称)

3.2 匹配属性的参

-type n :文件类型是 n 的文件

(补充:这里的 n 可以是 d、f、l,它们分别代表目录、文件、链接)

3.3 匹配所有者的参数

1) -uid n 所属 gid 是 n 的文件或目录
2) -user n 所属主名称为 n 的文件或目录
3) -gid n 所属 gid 是 n 的文件或目录
4) -group n 所属组名称为 n 的文件或目录
5) -nouser 匹配无所属主的文件或目录
6) -nogroup 匹配无所属组的文件或目录

3.4 匹配权限的参数

1) -perm /u=n 所属主权限是 n 的文件或目录
2) -perm /u=n 所属组权限是 n 的文件或目录
3) -perm /o=n 所其他的权限是 n 的文件或目录

(补充:在以上 1) 到 3) 参数中 n 可以是 r、w、x 它们分别代表读权限、写权限、执行权限)

4) -perm -n 所属主、所属组、其他的权限是 n 的文件或目录

(补充:在 (4 参数中 n 是可以是 1、2、4)

5) -perm nnn 权限是 nnn 的文件或目录


补充:
在 5) 参数中:
n 是数字
第一个 n 是特殊权限
第二个 n 是所属主的权限
第三个 n 是所属组的权限
第四个 n 是其他的权限
例:600

6) -perm nnnn 权限是 nnnn 的文件或目录


补充:
在 6) 参数中:
n 是数字
第一个 n 是特殊权限
第二个 n 是所属主的权限
第三个 n 是所属组的权限
第四个 n 是其他的权限
例:0600

3.5 匹配时间的参数

1) -amin n 在过去 n 分钟内被读取过的文件或目录
2) -anewer file 比文件 file 更晚被读取过的文件或目录
3) -atime n 在过去 n 天内被读取过的文件或目录
4) -mmin n 在过去 n 分钟内被修改过内容的文件或目录
5) -mnewer file 比文件 file 更晚被修改过内容的文件或目录
6) -mtime n 在过去 n 天内被修改过内容的文件或目录
7) -cmin n 在过去 n 分钟内被修改过属性(比如新建)的文件或目录
8) -cnewer file 比文件 file 更晚被修改过属性(比如新建)的文件或目录
9) -ctime n 在过去 n 天内被修改过属性(比如新建)的文件或目录

(补充:在以上 1) 到 9) 参数中 n 是数字, +n 表示 n 以前,-n 表示 n 以内,n 表示第 n)

3.6 匹配大小的参数

1) -empty 为空的文件或目录
2) -size n 文件大小是 n 的文件或目录

(补充:在 2) 参数中 n 是数字, +n 表示比 n 大,-n 表示比 n 小,单位有 b、m、g 等)

3.7 匹配目录的参数

1) -path ‘n’ 路径名称符合 n 的文件或目录
2) -ipath ‘n’ 路径名称符合 n 的文件或目录,并且忽略大小写
3) -depth n 路径深度为 n 的文件或目录
4) -maxdepth n 最大路劲深度为 n 的文件或目录

(补充:在以上 1) 到 4) 参数中 n 是数字)

3.8 匹配格式化方式的参数

1) -fstype n 匹配硬盘格式为 n 文件或目录

(补充:1) 参数中 n 可以是 ext3、ext4、xfs 等硬盘格式)

2) -mount 是被挂载的文件或目录

3.9 逻辑匹配参数

1) -not 不匹配后面的参数,需要放在其他参数前面
2) ! 不匹配后面的参数,需要放在其他参数前面
3) -a 和,需要放在两个参数之前
4) -and 和,需要放在两个参数之前
5) -o 或,需要放在两个参数之前
6) -or 或,需要放在两个参数之前
7) <parameter> ( <parameter> n <parameter> ) 指定将某两个参数作为一个整体和另一个逻辑参数进行匹配
8) <parameter> -prune -n <parameter> <parameter> 指定某两个参数进行逻辑匹配

(补充:在以上 7) 到 8) 参数中 n 可以是 -a、-and、-o、-or 以上 3) 到 6) 参数)

内容四:find 的使用案例
4.1 案例一:匹配名称的参数

从当前目录开始查找以 txt 结尾的文件和目录

# find . -name "*\.txt"

4.2 案例二:匹配属性的参

从当前目录开始查找目录

# find . -type d

4.3 案例三:匹配所有者的参数
4.3.1 从当前目录开始查找所属主是 root 的文件和目录

# find . -user root

4.3.2 从当前目录开始查找没有所属主和所属组的文件和目录

# find . -nouser -o -nogroup

4.3.3 查找所有所属主是 natasha 的文件并将它们复制到 /root/findfiles 目录下

# find / -user natasha -exec cp -rp {} /root/findfiles/ \;

4.4 案例四:匹配权限的参数
4.4.1 从当前目录开始查找所有权限为 0777 的文件,并将其显示出来

# find . -type f -perm 0777 -exec ls -l {}\;

4.4.2 从当前目录开始查找权限为 222 的文件

# find . -type f -perm -2

4.4.3 从当前目录开始查找有任何执行权限的文件和目录

# find . -perm /a=x

4.4.4 查找所有包含特殊权限的文件和目录

# find / -type f \( -perm -1000 -o -perm -2000 -o -perm -4000 \) -print

4.5 案例五:匹配时间的参数
4.5.1 从当前目录开始查找 10 天内被修改过的文件

# find . -ctime -10

4.5.2 从 /var/log/mysql 目录开始查找在过去 3 天被修过的文件和目录,并在确认后将其删除

# find /var/log/mysql -type f -mtime +3 -ok rm {}\;

4.6 案例六:匹配大小的参数
4.6.1 从当前目录开始查找所有大小为 0 的文件,并将其显示出来

# find . -type f -size 0 -exec ls -l {} \;

4.6.2 从当前目录开始查找所有大小为 0 的文件

# find . -type f -empty

4.7 案例七:匹配目录的参数

从 / 目录和 /proc/ 目录开始查找文件格式为 ext3 无所属主或所属组的文件和目录

# find / -path '/proc/*' -prune -o -fstype ext3 -nouser -o -nogroup

4.8 案例八:匹配格式化方式的参数

从 \ 目录开始查找以

# find . -type f

4.9 案例九:逻辑匹配参数
4.9.1 从当前目录开始查找以 “.txt” 结尾和以 “.dox” 结尾的文件

# find . -type f \( -name "*.txt" -or -name "*.dox" \)

4.9.2 从当前目录开始查找权限不是 777 的文件

# find . -type f ! -perm 777

4.9.3 从当前目录开始查找权限为 2000 和 4000 的文件,并分析文件属性

# find . -type f \( -perm -2000 -o -perm -4000 \) -exec file {} \;