首先,我们需要3台RHEL6搭建实验所需要的环境。

第1台RHEL6:作为samba服务器,并且作为rsync+inotify的发起端。

第2台RHEL6:作为vsftp服务器,并且作为rsync+inotify的发起端。

第3台RHEL6:作为rsync+inotify的备份源。

大致步骤:

1.配置每台服务器的IP地址,使其物理通信没有问题。

2.配置samba服务器以及ftp 服务器,每台服务器新加一块硬盘,要求本地账户的基本验证(为了实现用户的quota配额)。

3.配置备份源,在samba ftp 服务器上安装inotify 以及ssh密钥,使其与备份源能无交互式登陆。

4.在ftp samba服务器上编写inotify触发式脚本,使其能正常实时将数据备份到备份源。

5.使用quota 对用户进行配额。

实现要求:ftp+samba+quota+rsync+inotify(实现FTP+SAMBA用户相互访问,用户限额,并实时备份)。

1.配置samba服务器

IP复制为 192.168.10.200

开始部署samba服务器,

首先,我们需要新添加一块硬盘,在生产环境中samba服务器肯定是需要一块独立的硬盘,这样方便数据的备份。

ftp+samba+quota+rsync+inotify_ftp

查看我们新添加的第二块硬盘,然后使用fdisk 进行分区。

ftp+samba+quota+rsync+inotify_光盘_02

创建一个主分区即可,

ftp+samba+quota+rsync+inotify_linux_03

查看一下创建好的分区

ftp+samba+quota+rsync+inotify_quota_04

最后使用w 保存退出。

ftp+samba+quota+rsync+inotify_ftp_05

进行格式化分区,使分区有ext4的文件系统。

ftp+samba+quota+rsync+inotify_quota_06

最后新建一个目录 mkdir /samba 并将分区挂载到 /samba 目录上,为了方便起见,我们可以设置自动挂载。

ftp+samba+quota+rsync+inotify_linux_07

ftp+samba+quota+rsync+inotify_ftp_08

进入RHEL6光盘挂载点,

ftp+samba+quota+rsync+inotify_linux_09

安装samba软件包。

ftp+samba+quota+rsync+inotify_quota_10

查看一下软件包的安装情况。

ftp+samba+quota+rsync+inotify_ftp_11

所有包安装完毕,那么修改一下samba的主配置文件基于系统账户登录samba服务器

ftp+samba+quota+rsync+inotify_linux_12

但是samba主配置文件里的注释和空行比较多,我们可以利用grep 将其过滤掉,过滤之前务必要将原配置文件做一个备份,以免在生产环境中配置文件被破坏影响服务。

ftp+samba+quota+rsync+inotify_linux_13

如上图所示,进入到samba目录下对主配置文件进行备份。

ftp+samba+quota+rsync+inotify_quota_14

通过grep 命令,对主配置文件进行过滤。

ftp+samba+quota+rsync+inotify_光盘_15

ftp+samba+quota+rsync+inotify_光盘_16

确保 security = user,目的是为了提高安全级别,使用系统账户访问samba服务,

将/samba目录以samba共享名共享给其他用户。

ftp+samba+quota+rsync+inotify_ftp_17

ftp+samba+quota+rsync+inotify_linux_18

ftp+samba+quota+rsync+inotify_linux_19

从第2台RHEL服务器上进行访问测试,测试OK

PS:访问samba服务器时一定要注意iptables 防火墙,要允许 samba服务端口通信。

ftp+samba+quota+rsync+inotify_ftp_20

如果出现smbclient 错误“tree connect failed: NT_STATUS_BAD_NETWORK_NAME”

1、快速关闭SElinux,使用如下命令就可以:

/usr/sbin/setenforce 0 立刻关闭 SELINUX

/usr/sbin/setenforce 1 立刻启用 SELINUX

2、加到系统默认启动里面

echo "/usr/sbin/setenforce 0" >> /etc/rc.local

    3、可以编辑配置文件达到同样的目的

     vi /etc/selinux/conf

     SELINUX=disabled

2.配置ftp服务器

IP地址为192.168.100.201

开始部署FTP服务器,

首先,我们需要新添加一块硬盘,在生产环境中samba服务器肯定是需要一块独立的硬盘,这样方便数据的备份。

ftp+samba+quota+rsync+inotify_linux_21

查看我们新添加的第二块硬盘,然后使用fdisk 进行分区。

ftp+samba+quota+rsync+inotify_ftp_22

创建一个主分区即可,

ftp+samba+quota+rsync+inotify_linux_23

查看一下创建好的分区

ftp+samba+quota+rsync+inotify_linux_24

最后使用w 保存退出。

ftp+samba+quota+rsync+inotify_linux_25

进行格式化分区,使分区有ext4的文件系统。

ftp+samba+quota+rsync+inotify_linux_26

最后新建一个目录 mkdir / 并将分区挂载到 /ftp 目录上,为了方便起见,我们可以设置自动挂载。

ftp+samba+quota+rsync+inotify_ftp_27

进入RHEL6光盘挂载点,进行安装vsftpd 软件包。

ftp+samba+quota+rsync+inotify_quota_28

新建一个ftp测试用户 ftptest

ftp+samba+quota+rsync+inotify_ftp_29

ftp+samba+quota+rsync+inotify_ftp_30

修改配置文件,要求使用本地用户的基本验证。

ftp+samba+quota+rsync+inotify_linux_31

确保这几条存在。

ftp+samba+quota+rsync+inotify_linux_32

ftp+samba+quota+rsync+inotify_光盘_33

在samba服务器上安装ftp客户端软件,然后测试FTP是否能正常登陆。

ftp+samba+quota+rsync+inotify_ftp_34

验证成功!

同样需要注意iptables 防火墙,允许TCP 21端口的通信。

如果出现新建的系统账户无法登陆FTP的话需要注意selinux的配置。

1、快速关闭SElinux,使用如下命令就可以:

/usr/sbin/setenforce 0 立刻关闭 SELINUX

/usr/sbin/setenforce 1 立刻启用 SELINUX

2、加到系统默认启动里面

echo "/usr/sbin/setenforce 0" >> /etc/rc.local

    3、可以编辑配置文件达到同样的目的

     vi /etc/selinux/conf

     SELINUX=disabled

3配置备份源。

IP地址为192.168.100.202

我们需要创建一个rput 用户来实现上传的操作。

ftp+samba+quota+rsync+inotify_ftp_35

但是对于rput用户来说,要能够写入才有权限做上行备份,建议使用ACL访问控制机制设置用户rput对/var/www/html的写入权限。

ftp+samba+quota+rsync+inotify_linux_36

其中”-R”选项表示递归操作,”-m”选项表示修改权限,default表示在html/目录新建的文档用户rput也具有rwx权限。当需要清除所设置的ACL属性时,setfacl命令的-x或-b选项,分别表示用来个别删除和全部删除。到此SSH备份源配置完毕。

有了备份源服务器以后,就可以使用rsync工具来执行远程同步了。本文讲解的备份操作均在客户机(发起端,IP为:192.168.0.3)执行。实际上备份源与发起端可以是同一台主机,其效果相当于本地备份而不是异地备份。

rsync命令的基本用法:

格式:rsync 【选项】 源文件 目标文件

常见的选项:

-a,--archive 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于-rlptgoD

-r,–recursive 对子目录以递归模式处理

-l,--links 表示拷贝链接文件

-p , --perms 表示保持文件原有权限

-t , --times 表示保持文件原有时间

-g , --group 表示保持文件原有属用户组

-o , --owner 表示保持文件原有属主

-D , --devices 表示块设备文件信息

-z , --compress 表示压缩传输

-H 表示硬连接文件

-A 保留ACL属性信息

-P 显示传输进度

-u, --update 仅仅进行更新,也就是跳过所有已经存在于目标位置,并且文件时间晚于要备份的文件。(不覆盖更新的文件)

--port=PORT 指定其他的rsync服务端口

--delete 删除那些目标位置有而原始位置没有的文件

--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes /second

--filter “- 文件名”需要过滤的文件

--exclude= :需要过滤的文件

-v 显示同步过程的详细信息

4.实现rsync+inotify实时备份。

分别在samba服务器 和ftp服务器上安装私钥文件,以便于后面使用脚本不需要交互式输入密码验证身份。

在客户机上创建密钥对:

ftp+samba+quota+rsync+inotify_ftp_37

将公钥文件分发给服务器:

ftp+samba+quota+rsync+inotify_linux_38

在客户机测试SSH的密钥验证:

ftp+samba+quota+rsync+inotify_quota_39

成功实现免交互自动登录后,再次使用rsync访问SSH备份源时,也就不再提示需要密码验证了,注意,执行脚本的必须是在客户机中创创建密钥对的用户。

安装inotify-tools工具,使用inotify机制还需要安装inotify-tools,以便提供inotifywait、inotifywatch辅助工具程序,用来监控、汇总改动情况。

编译安装inotify-tools软件包:

ftp+samba+quota+rsync+inotify_linux_40

ftp+samba+quota+rsync+inotify_quota_41

ftp+samba+quota+rsync+inotify_quota_42

以监控网站目录/var/www/html为例,可以先执行inotifywait命令,然后在另一个终端向/var/www/html目录下添加文件、移动文件,跟踪屏幕输出结果。其中选项”-e”用来指定要监控哪些事件(create,move,delete,modify,attrib 是指监听”创建 移动 删除 写入 属性更改” 事件),选项”-m”表示持续监控,”-r”表示递归整个目录,”-q”表示简化输出信息。

其他选项的含义:

-a 存档模式
-h 保存硬连接
-z 压缩文件数据在传输
-t 维护修改时间
--delete 删除于多余文件

在192.168.0.1服务器上执行下面的命令,监控/var/www/html的变化情况:

ftp+samba+quota+rsync+inotify_光盘_43

在另一个终端登录,在/var/www/html目录进行相关的操作,回到原来的终端查看监控变化情况。

ftp+samba+quota+rsync+inotify_linux_44

使用inotifywait输出的监控结果中,每行记录中依次包括目录、事件、文件。据此可以识别变动情况。

编写触发式同步脚本:

为了简单起见,只要检测到变动时执行rsync上行同步操作即可。需要注意的是,当更新较频繁时,应避免并发执行rsync备份(当rsync进程已经存在则忽略本次同步,或根据rsync进程数量来决定是否同步)

先配置好基于密钥身份验证的SSH服务,确保在服务器192.168.0.1主机上使用adminput用户能无交互式远程登录备份主机192.168.0.3(在192.168.0.3主机上创建adminput用户并确保adminput用户拥有对目标目录/wwwroot属主和属组权限。chown adminput:adminput /wwwroot),设置adminput用户针对/wwwroot的acl权限。

ftp+samba+quota+rsync+inotify_linux_45

ftp+samba+quota+rsync+inotify_linux_46

脚本内容如下:

ftp+samba+quota+rsync+inotify_光盘_47

ftp+samba+quota+rsync+inotify_光盘_48

ftp+samba+quota+rsync+inotify_linux_49

验证实时同步的效果。

5.使用quota 实现用户配额。

先对samba服务器进行配置。

首先查看一下quota软件包以及管理程序是否存在。

ftp+samba+quota+rsync+inotify_linux_50

修改磁盘自动挂载的文件,用来支持磁盘配额。

ftp+samba+quota+rsync+inotify_ftp_51

使用mount 命令,查看当前分区是否支持quota配额,

ftp+samba+quota+rsync+inotify_quota_52

若没有,则手动执行命令即可。

ftp+samba+quota+rsync+inotify_linux_53

使用edquota -u sambatest 对测试用户进行磁盘配额

ftp+samba+quota+rsync+inotify_linux_54

使用quotacheck -augcv 创建磁盘配额文件。

filesystem:表示本行配置记录对应的文件系统、分区,即配额的作用范围。

blocks:表示当前用户已使用的磁盘容量,默认单位为KB,该数值由edquota程序自动计算,无需修改。

inodes:表示当湖当前已经拥有的文件数量,也是由edquota程序自动计算。

soft:第3列的soft对应为磁盘容量的软限制数值,默认单位KB,第6列的soft对应为文件数量的软限制值,默认单位为个。

hard:第4列的soft对应为磁盘容量的软限制数值,默认单位KB,第7列的soft对应为文件数量的软限制值,默认单位为个。

启动文件系统的磁盘配额功能

ftp+samba+quota+rsync+inotify_ftp_55

最后验证磁盘配额功能

ftp+samba+quota+rsync+inotify_quota_56