案例需求
以工坊单位为基础,每个工坊设立一个单独共享资源目录,创建FTP虚拟用户名为yunyunwei、dashujv、xiaochengxv;权限限制只有下载没有上传的权限,限制最大带宽60KB;zhang1-6用户的家目录名称对应6个不同的工坊名词缩写;新建的一块20G存储磁盘必须挂载在nfs的共享目录上,每7天晚上21点要求增量备份一次nfs的共享数据,到/backup/weekbackup目录下,存放在以日期命名的目录;每14天清除上上一周的备份数据。
环境准备
| IP | 节点 | 版本 |
|---|---|---|
| 192.168.100.10 | FTP | centos7.5-2003 |
| 192.168.100.20 | NFS | centos7.5-2003 |
实施
FTP配置
基础环境准备
[root@localhost ~]# hostnamectl set-hostname ftp[root@localhost ~]# bash[root@ftp ~]# mv /etc/yum.repos.d/* /media/[root@ftp ~]# mkdir -p /opt/centos[root@ftp ~]# mount /dev/sr0 /opt/centos/mount: /dev/sr0 写保护,将以只读方式挂载[root@ftp ~]# vim /etc/yum.repos.d/local.repo[centos]name=centosbaseurl=file:///opt/centosgpgcheck=0enabled=1[root@ftp ~]# yum repolist已加载插件:fastestmirrorLoading mirror speeds from cached hostfilecentos | 3.6 kB 00:00:00(1/2): centos/group_gz | 153 kB 00:00:00(2/2): centos/primary_db | 3.3 MB 00:00:00源标识 源名称 状态centos centos 4,071repolist: 4,071[root@ftp ~]#
ftp安装配置
[root@ftp ~]# yum install -y vsftpd[root@ftp ~]# systemctl start vsftpd[root@ftp ~]# systemctl enable vsftpdCreated symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
配置用户密码
[root@ftp ~]# vim /etc/vsftpd/users.confyunyunwei123456dashuju123456sxb123456
生成hash文件
[root@ftp ~]# db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
配置权限
[root@ftp ~]# chmod 600 /etc/vsftpd/users.db
创建用户,指定目录
[root@ftp ~]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin[root@ftp ~]#
创建工作目录、授权
[root@ftp ~]# mkdir -p /home/vsftpd/xmcsxy[root@ftp ~]# chmod -R 777 /home/vsftpd[root@ftp ~]#
指定验证文件
[root@ftp ~]# vim /etc/pam.d/vsftpd在第二行插入下面两行auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/usersaccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
修改配置文件、指定子文件
[root@ftp ~]# vim /etc/vsftpd/vsftpd.confanonymous_enable=NOchroot_local_user=yesguest_enable=YESallow_writeable_chroot=YESuser_config_dir=/etc/vsftpd/vsftpd_conf切记不要多打空格
创建子配置文件目录
[root@ftp ~]# mkdir -p /etc/vsftpd/vsftpd_conf[root@ftp ~]# cd !$cd /etc/vsftpd/vsftpd_conf[root@ftp vsftpd_conf]# ls[root@ftp vsftpd_conf]#
创建云运维用户配置文件
[root@ftp vsftpd_conf]# vim yunyunweilocal_root=/home/vsftpd/xmcsxy/yunyunweiwrite_enable=YESanon_upload_enable=NOanon_max_rate=60000[root@ftp vsftpd_conf]# vim dashujulocal_root=/home/vsftpd/xmcsxy/dashujuwrite_enable=YESanon_upload_enable=NOanon_max_rate=60000[root@ftp vsftpd_conf]# vim sxblocal_root=/home/vsftpd/xmcsxy/sxbwrite_enable=YESanon_upload_enable=NOanon_max_rate=60000
创建工作目录
[root@ftp vsftpd_conf]# mkdir -p /home/vsftpd/xmcsxy/yunyunwei[root@ftp vsftpd_conf]# mkdir -p /home/vsftpd/xmcsxy/dashuju[root@ftp vsftpd_conf]# mkdir -p /home/vsftpd/xmcsxy/sxb[root@ftp vsftpd_conf]#
重启生效
[root@ftp vsftpd_conf]# systemctl restart vsftpd[root@ftp vsftpd_conf]#
NFS部署
基本环境准备
[root@localhost ~]# hostnamectl set-hostname nfs[root@localhost ~]# bash[root@nfs ~]#[root@nfs ~]# systemctl stop firewalld[root@nfs ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[root@nfs ~]# setenforce 0[root@nfs ~]# vi /etc/selinux/config[root@nfs ~]# mv /etc/yum.repos.d/* /media/[root@nfs ~]# vim /etc/yum.repos.d/local.repo[centos]name=centosbaseurl=file:///opt/centosgpgcheck=0enabled=1[root@nfs ~]# mkdir -p /opt/centos[root@nfs ~]# mount /dev/sr0 /opt/centos/mount: /dev/sr0 写保护,将以只读方式挂载[root@nfs ~]# yum repolist已加载插件:fastestmirrorDetermining fastest mirrorscentos | 3.6 kB 00:00:00(1/2): centos/group_gz | 153 kB 00:00:00(2/2): centos/primary_db | 3.3 MB 00:00:00源标识 源名称 状态centos centos 4,071repolist: 4,071[root@nfs ~]#
NFS配置
[root@nfs ~]# yum install -y nfs-utils rpcbind
确认是否有这个用户
[root@nfs ~]# id nfsnobodyuid=65534(nfsnobody) gid=65534(nfsnobody) 组=65534(nfsnobody)[root@nfs ~]#
启动服务、开机自启
[root@nfs ~]# systemctl start rpcbind[root@nfs ~]# systemctl enable rpcbind[root@nfs ~]# systemctl start nfs[root@nfs ~]# systemctl enable nfsCreated symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.[root@nfs ~]# netstat -ntlp | grep rpctcp 0 0 0.0.0.0:60417 0.0.0.0:* LISTEN 1863/rpc.statdtcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1805/rpcbindtcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 1882/rpc.mountdtcp6 0 0 :::47791 :::* LISTEN 1863/rpc.statdtcp6 0 0 :::111 :::* LISTEN 1805/rpcbindtcp6 0 0 :::20048 :::* LISTEN 1882/rpc.mountd[root@nfs ~]#
创建存放数据目录
[root@nfs ~]# mkdir /data[root@nfs ~]# chown -R nfsnobody:nfsnobody /data/[root@nfs ~]# chmod 755 -R /data
添加磁盘分区挂载
[root@nfs ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 20G 0 disk├─sda1 8:1 0 1G 0 part /boot└─sda2 8:2 0 19G 0 part├─centos-root 253:0 0 17G 0 lvm /└─centos-swap 253:1 0 2G 0 lvm [SWAP]sdb 8:16 0 20G 0 disksr0 11:0 1 4.5G 0 rom[root@nfs ~]# fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。Device does not contain a recognized partition table使用磁盘标识符 0xcfb070b3 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p):Using default response p分区号 (1-4,默认 1):起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):p磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0xcfb070b3设备 Boot Start End Blocks Id System/dev/sdb1 2048 41943039 20970496 83 Linux命令(输入 m 获取帮助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁盘。[root@nfs ~]#格式化[root@nfs ~]# mkfs.ext4 /dev/sdb1mke2fs 1.42.9 (28-Dec-2013)文件系统标签=OS type: Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks1310720 inodes, 5242624 blocks262131 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=2153775104160 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,4096000Allocating group tables: 完成正在写入inode表: 完成Creating journal (32768 blocks): 完成Writing superblocks and filesystem accounting information: 完成[root@nfs ~]#
写入配置文件自动挂载
[root@nfs ~]# vim /etc/fstab/dev/sdb1 /data ext4 defaults 0 0[root@nfs ~]# mount -a[root@nfs ~]# df -h文件系统 容量 已用 可用 已用% 挂载点devtmpfs 898M 0 898M 0% /devtmpfs 910M 0 910M 0% /dev/shmtmpfs 910M 9.6M 901M 2% /runtmpfs 910M 0 910M 0% /sys/fs/cgroup/dev/mapper/centos-root 17G 1.5G 16G 9% //dev/sda1 1014M 150M 865M 15% /boottmpfs 182M 0 182M 0% /run/user/0/dev/sdb1 20G 45M 19G 1% /data[root@nfs ~]#
配置nfs共享目录
[root@nfs ~]# vim /etc/exports/data 192.168.100.0/24(rw,no_root_squash,async)[root@nfs ~]# exportfs -rvexporting 192.168.100.0/24:/data[root@nfs ~]# showmount -e 192.168.100.20Export list for 192.168.100.20:/data 192.168.100.0/24[root@nfs ~]#
调试配置
ftp节点配置
[root@ftp vsftpd_conf]# yum install -y nfs-utils rpcbind[root@ftp vsftpd_conf]# mount -t nfs 192.168.100.20:/data /home/vsftpd/xmcsxy/[root@ftp vsftpd_conf]# df -h文件系统 容量 已用 可用 已用% 挂载点devtmpfs 898M 0 898M 0% /devtmpfs 910M 0 910M 0% /dev/shmtmpfs 910M 9.6M 901M 2% /runtmpfs 910M 0 910M 0% /sys/fs/cgroup/dev/mapper/centos-root 17G 1.5G 16G 9% //dev/sda1 1014M 150M 865M 15% /boottmpfs 182M 0 182M 0% /run/user/0/dev/sr0 4.5G 4.5G 0 100% /opt/centos192.168.100.20:/data 20G 44M 19G 1% /home/vsftpd/xmcsxy[root@ftp vsftpd_conf]# cd /home/vsftpd/xmcsxy/[root@ftp xmcsxy]# lslost+found[root@ftp xmcsxy]# mkdir yunyunwei dashuju sxb[root@ftp xmcsxy]# lsdashuju lost+found sxb yunyunwei[root@ftp xmcsxy]#
nfs编写脚本
[root@nfs ~]# vim /usr/local/sbin/backup.sha=`date '+%Y%m%d'` #定义时间b=/backup/weekbackup #定义备份目录路径c=/var/log/backup.log #定义输出日志路径pname=$(rpm -qa | grep rsync) #定义rsync安装包检查#判断rsync是否存在if [ $? -eq 0 ]thenecho "软件包rsync已经安装。"elseecho "软件包rsync没有安装"yum -y install rsync >> /dev/nullif [ $? -eq 0 ];thenecho "安装rsync完成。"elseecho "安装rsync失败。"fifi#判断备份目录是否存在,并增量备份。if [ ! -d "$b" ];thenmkdir -p $becho "$a Backup File missing!" >> /var/log/backup.logrsync -rvz /data $b/$aelsersync -rvz /data $b/$aif [ -d $b/$a ];thenecho "$a Backup success." >> /var/log/backup.logfind $b -mtime +14 | xargs rm -rfelseecho "$a Backup failed." >> /var/log/backup.logfifi
执行脚本
[root@nfs ~]# sh -x /usr/local/sbin/backup.sh如果脚本执行错误是因为上面添加了一块硬盘关闭了虚拟机,需要重新挂载即可[root@nfs ~]# mount /dev/sr0 /opt/centos/
定时任务
[root@nfs ~]# crontab -e* 21 */7 * * sh /usr/local/sbin/backup.sh #每7天晚上21点执行一次脚本
至此,完成
