目录
rsync同步操作
rsync基本使用
- 命令用法:rsync [选项] 源目录 目标目录
- 同步与复制的差异:
复制:完全拷贝源到目标
同步:增量拷贝,只传输变化过程(第一次传输的时候会自动记住源目录和目标目录的校验值,以后每次只传输变化的值)
- rsync选项:
-a:归档模式,相当于-rlptgoD
-n:测试同步过程,不做实际修改
-v:显示详细操作信息
-z:传输过程中启用压缩/解压缩
--delete:删除目标文件夹内多余的文档
执行rsync命令时,源目录后面如果不加/,则默认把目录本身以及目录下面的内容一同传输到目标目录
rsync命令只是单方向,目标数据自己多出来的数据
[root@svr7 ~]# mkdir /nsd01 /todir
[root@svr7 ~]# cp /etc/passwd /etc/shadow /nsd01
[root@svr7 ~]# ls /nsd01
passwd shadow
[root@svr7 ~]# rsync -av /nsd01 /todir
sending incremental file list
nsd01/
nsd01/passwd
nsd01/shadow
[root@svr7 ~]# rsync -av /nsd01/ /todir
sending incremental file list
./
passwd
shadow
[root@svr7 ~]# rsync --delete -av --delete /nsd01/ /todir
sending incremental file list
deleting nsd01/shadow
deleting nsd01/passwd
deleting nsd01/
./
[root@svr7 ~]# ls /todir
passwd shadow
[root@svr7 ~]# touch /nsd01/1.txt
[root@svr7 ~]# rsync --delete -av --delete /nsd01/ /todir
sending incremental file list
deleting nsd01/shadow
deleting nsd01/passwd
deleting nsd01/
./
1.txt
[root@svr7 ~]# ls /todir
1.txt passwd shadow
rsync+ssh同步:远程同步
- 列出ssh服务端资源
rsync user@host :远程 目录/
- 与远程的ssh目录保持同步
下行(下载):rsync [....] user@host:远程目录 本地目录
上行(上传):rsync [....] 本地目录 user@host:远程目录
[root@svr7 ~]# rsync -av --delete /todir/ root@192.168.4.207:/opt
[root@pc207 ~]# ls /opt
1.txt passwd shadow
[root@svr7 ~]# touch /todir/3.txt
[root@svr7 ~]# rsync -av --delete /todir/ root@192.168.4.207:/opt
[root@pc207 ~]# ls /opt
1.txt 3.txt passwd shadow
[root@svr7 ~]# touch /todir/4.txt
[root@svr7 ~]# rsync -av --delete /todir/ root@192.168.4.207:/opt
[root@pc207 ~]# ls /opt
1.txt 3.txt 4.txt passwd shadow
实时同步
- 虚拟机A:生成公钥与私钥,取消密码验证
[root@svr7 ~]# ssh-keygen #一路回车 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:w7qmLC4X9KOR0jsTYe9bmNfHey23UPOPdJ2OnlTZxKw root@svr7.tedu.cn The key's randomart image is: +---[RSA 2048]----+ | | | o | | +| | + . oo| | + = S Eo.| |. * +o o o ..oo| | . Bo.+ . o .o..+| |. B..o.. . .+o*o.| | +.+++. ...*oo.| +----[SHA256]-----+ [root@svr7 ~]# ls /root/.ssh authorized_keys id_rsa(私钥) id_rsa.pub(公钥) known_hosts(记录曾经远程管理过的机器)
- 将公钥传递给对方
[root@svr7 ~]# ssh-copy-id root@192.168.4.207 [root@pc207 ~]# ls /root/.ssh authorized_keys (别的机器传递过来的公钥) [root@svr7 ~]# rsync -av --delete /todir/ root@192.168.4.207:/opt
inotify实时同步
安装inotity-tools工具软件,监控目录内容
- 1.真机上传数据到虚拟机A
[student@room9pc01 ~]$ ls /linux-soft/
01 02 03 04 05
[student@room9pc01 ~]$ ls /linux-soft/01
Cobbler.zip tools.tar.gz
[student@room9pc01 ~]$ scp /linux-soft/01/tools.tar.gz root@192.168.4.7:/tmp
tools.tar.gz 100% 766KB 2.3MB/s 00:00
- 2.用虚拟机A查看是否上传成功
[root@svr7 ~]# ls /tmp #查看tmp目录下是否有该压缩包(虚拟机)
systemd-private-8baf54c5b1c04ba3a5f3525818b9c081-chronyd.service-Jon8iZ tools.tar.gz
systemd-private-b4e3a5aa0fe14eb493d2b5bed82bbce7-chronyd.service-1X4Kli
[root@svr7 ~]# tar -xf /tmp/tools.tar.gz -C / #将源码包释放到根
[root@svr7 ~]# ls /
bin dev home lib64 mnt opt root sbin sys todir tpdir var
boot etc lib media nsd01 proc run srv tmp tools usr
[root@svr7 ~]# ls /tools
inotify-tools-3.13.tar.gz other
- 3.tar解包
[root@svr7 ~]# tar -xf /tools/inotify-tools-3.13.tar.gz -C /usr/local/
[root@svr7 ~]# ls /usr/local/
bin etc games include inotify-tools-3.13 lib lib64 libexec sbin share src
- 4.进行源码包编译安装
1)下载gcc和make软件
[root@svr7 ~]# yum -y install gcc make
2)./configure配置,指定安装目录/功能模块等选项
[root@svr7 ~]# cd /usr/local/inotify-tools-3.13/
[root@svr7 inotify-tools-3.13]# ./configure
3)make编译,生成可执行的二进制文件
[root@svr7 inotify-tools-3.13]# make
4)make install 安装,将编译好的文件复制到安装目录
[root@svr7 inotify-tools-3.13]# make install
[root@svr7 inotify-tools-3.13]# ls /usr/local/bin/inotifywait
/usr/local/bin/inotifywait #查看是否有该程序
inotifywait监控
- 基本用法
inotifywait [选项] 目标文件夹
- 常用命令选项
-m:持续监控(捕获一个事件后不退出)
-r:递归监控,包括子目录及文件
-q:减少屏幕输出的信息
-e:指定监视的modify.move.create.delete.attrib等事件类别
三.书写一个shell脚本
循环解决重复性的操作
for 循环:适合书写有次数的循环
while 循环:适合书写不限次数的循环
[root@svr7 ~]# vim /root/rsync.sh
#!/bin/bash
while inotifywait -rqq /todir/
do
rsync -a --delete /todir/ root@192.168.4.207:/opt
done
[root@svr7 ~]# chmod +x /root/rsync.sh
[root@svr7 ~]# /root/rsync.sh &
[1] 6113
[root@svr7 ~]# jobs -l
[1]+ 6113 运行中 /root/rsync.sh &
cobbler装机平台
前提:建立一个支持图形化的虚拟机
1.操作系统为:CentOs7.5
2.内存大小为:2G
3.磁盘空间为:50G
4.虚拟网络类型为:private1
5.软件包选择"带GUI的服务器"
6.分区选择"自动分区"
7.管理员root密码为1
8.创建普通用户lisi,密码为1
cobbler简介
基本概念:
- cobbler是一款快速的网络系统部署工具
- 集中管理所需服务,如DHCP.DNS.TFTP.WEB
- cobbler内部集成了一个镜像版文件仓库
- cobbler内部集成了一个ks应答文件仓库
- cobbler还提供了包括yum源管理,web界面管理,API接口,电源管理等功能
装机步骤
- 一.具备一个CentOs虚拟机
- 二.虚拟机设置防火墙为trusted,selinux设置为宽松模式,IP地址为192.168.4.123/24,主机名为cobbler.tedu.cn,构建yum源:
[root@cobbler ~]# cd /etc/yum.repos.d/
[root@cobbler yum.repos.d]# mkdir repo
[root@cobbler yum.repos.d]# mv *.repo repo
[root@cobbler yum.repos.d]# ls
repo
[root@cobbler yum.repos.d]# vim zz.repo
[aaa]
name=sss
baseurl=ftp://192.168.4.254/centos-1804
enabled=1
gpgcheck=0
[root@cobbler yum.repos.d]# yum repolist
- 三.利用scp真机传递cobbler.zip包到虚拟机192.168.4.123中
[student@room9pc01 ~]$ scp /home/student/桌面/cobbler.zip root@192.168.4.123:/root
- 四.搭建cobbler装机平台
cobbler概述软件,管理dhcp.TFTP.web服务
自由的导入镜像与ks应答文件
- 解压cobbler.zip软件包
[root@cobbler ~]# yum -y install unzip [root@cobbler ~]# unzip /root/cobbler.zip -d / [root@cobbler ~]# ls /cobbler cobbler_boot.tar.gz cobbler_rpm.zip cobbler_web.png [root@cobbler ~]# unzip /cobbler/cobbler_rpm.zip -d /opt [root@cobbler ~]# ls /opt/cobbler/ cobbler-2.8.2-1.el7.x86_64.rpm python-cheetah-2.4.4-5.el7.centos.x86_64.rpm cobbler-web-2.8.2-1.el7.noarch.rpm python-django-bash-completion-1.6.11.6-16.el7.noarch.rpm dhclient-4.2.5-58.el7.centos.1.x86_64.rpm python-markdown-2.4.1-2.el7.noarch.rpm libyaml-0.1.4-11.el7_0.x86_64.rpm python-pillow-2.0.0-19.gitd1c6db8.el7.x86_64.rpm mod_wsgi-3.4-12.el7_0.x86_64.rpm python-pygments-1.4-10.el7.noarch.rpm python2-django-1.6.11.6-16.el7.noarch.rpm PyYAML-3.10-11.el7.x86_64.rpm python2-simplejson-3.10.0-1.el7.x86_64.rpm tftp-server-5.2-13.el7.x86_64.rpm
- 五.安装cobbler主程序.工具包等
[root@cobbler ~]# yum -y install dhcp httpd mod_ssl
[root@cobbler ~]# yum -y install /opt/cobbler/*.rpm
[root@cobbler ~]# rpm -q cobbler
cobbler-2.8.2-1.el7.x86_64
cobbler装机部署
- 1.安装软件cobbler cobbler-web dhcp tftp-server pykickstart httpd
cobbler #cobbler程序包
cobbler-web #cobbler的web程序包
pykickstart #cobbler检查kickstart应答文件语法错误
httpd #dhcp服务
tftp-server #tftp服务
- 2.配置cobbler的dhcp
[root@cobbler ~]# vim /etc/cobbler/settings
272 next_server: 192.168.4.123 #设置下一个服务器还为本机
384 server: 192.168.4.123 #设置本机为cobbler服务器
242 manage_dhcp: 1 #设置cobbler管理dhcp服务
292 pxe_just_once: 1 #防止客户端重复安装操作系统
#冒号后面要有空格!!!!!!!!
开机启动选项:匹配即停止
- 硬盘启动
- 光驱设备
- U盘
- 网络引导
- 3.配置cobbler的dhcp
[root@cobbler ~]# vim /etc/cobbler/dhcp.template
:%s /旧/新/g #全文替换
:%s /192.168.1/192.168.4/g
- 4.绝对路径解压cobbler_boot.tar.gz #众多的引导文件
[root@cobbler ~]# tar -tf /cobbler/cobbler_boot.tar.gz #查看包里面的内容
[root@cobbler ~]# tar -xPf /cobbler/cobbler_boot.tar.gz #绝对路径释放(选项+P,无需指定释放路径)
[root@cobbler ~]# ls /var/lib/cobbler/loaders/
COPYING.elilo COPYING.yaboot grub-x86_64.efi menu.c32 README
COPYING.syslinux elilo-ia64.efi grub-x86.efi pxelinux.0 yaboot
- 5.启动相关服务
[root@cobbler ~]# systemctl restart cobblerd
[root@cobbler ~]# systemctl enable cobblerd
[root@cobbler ~]# systemctl restart httpd
[root@cobbler ~]# systemctl enable httpd
[root@cobbler ~]# systemctl restart rsyncd
[root@cobbler ~]# systemctl enable rsyncd
- 6.同步刷新cobbler配置
[root@cobbler ~]# cobbler sync #检查所有配置是否正确
*** TASK COMPLETE *** #出现此行则证明正确
[root@cobbler ~]# firefox https://192.168.4.123/cobbler_web
用户名:cobbler
密码:cobbler
cobbler应用
cobbler import --path=挂载点 --name=导入系统命名(随意起)
- 导入安装镜像数据
[root@cobbler ~]# mkdir /dvd
[root@cobbler ~]# mount /dev/cdrom /dvd #一定要提前加光驱设备
[root@cobbler ~]# ls /dvd
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@cobbler ~]# cobbler import --path=/dvd --name=Centos7
#cobbler导入的镜像在/var/www/cobbler/ks_mirror
[root@cobbler ~]# cobbler list #查看有哪些系统
distros:
Centos7-x86_64 #安装客户端至少要2G内存
profiles:
Centos7-x86_64
- 删除
[root@cobbler ~]# cobbler profile remove --name=centos7-x86_64 #删除菜单信息
[root@cobbler ~]# cobbler distro remove --name=centos7-x86_64 #删除镜像信息
[root@cobbler ~]# umount /dvd
[root@cobbler ~]# mount /dev/cdrom /dvd
mount: /dev/sr0 写保护,将以只读方式挂载
[root@cobbler ~]# ls /dvd
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
自定义应答文件:开头注释行删除
[root@cobbler ~]# yum -y install system-config-kickstart
[root@cobbler ~]# system-config-kickstart #进入图形化界面,生成ks文件
必须默认kickstart文件存放的位置:/var/lib/cobbler/kickstarts
[root@cobbler ~]# cobbler list
修改kickstart文件:
[root@cobbler ~]# cobbler profile edit --name=Centos7 --kickstart=/var/lib/cobbler/kickstarts/自定义.cfg
[root@cobbler ~]# cobbler profile report
[root@cobbler ~]# cobbler sync #同步设置
DNS服务器的主从结构
备份主服务器的数据,解决单点故障
准备三台虚拟机:1.虚拟机A:主DNS服务器 192.168.4.7
2.虚拟机B:从DNS服务器 192.168.4.207
3.虚拟机C:客户端测试 192.168.4.10
主DNS服务器
- 1.安装软件包:
[root@svr7 ~]# yum -y install bind bind-chroot
- 2.修改配置文件:
[root@svr7 ~]# cp /etc/named.conf /etc/named.bak
[root@svr7 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
- 3.建立地址库文件:
[root@svr7 ~]# cd /var/named
[root@svr7 named]# cp -p named.localhost tedu.cn.zone
[root@svr7 named]# vim tedu.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
tedu.cn. NS svr7
svr7 A 192.168.4.7
www A 1.2.3.4
- 4.重起服务:
[root@svr7 named]# systemctl restart named
- 5.修改主配置文件,指定从服务器IP地址
options {
directory "/var/named";
allow-transfer { 192.168.4.207; }; #指定从服务器IP地址
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
- 6.修改地址库文件进行声明
[root@svr7 named]# vim tedu.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
tedu.cn. NS svr7
tedu.cn. NS pc207
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 1.2.3.4
- 7.再次重启服务
[root@svr7 named]# systemctl restart named
从DNS服务器
- 1.安装软件包:
[root@pc207 ~]# yum -y install bind bind-chroot
- 2.修改主配置文件:
[root@pc207 ~]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "tedu.cn" IN {
type slave;
file "/var/named/slaves/tedu.cn.slave"; #原则named用户对该目录具备写入权限
masters { 192.168.4.7; }; #指定主DNS服务器名字
};
- 3.重起服务:
[root@pc207 ~]# systemctl restart named
[root@pc207 ~]# ls /var/named/slaves
tedu.cn.slave
客户端测试
- 1.指定DNS服务器
[root@C ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf
[root@C ~]# echo nameserver 192.168.4.207 >> /etc/resolv.conf
#先写主DNS再写从DNS
- 2.解析,当主DNS服务器停止时,会自动找到从DNS服务器解析
[root@C ~]# nslookup www.tedu.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.tedu.cn
Address: 1.2.3.4
[root@svr7 named]# systemctl stop named
[root@C ~]# nslookup www.tedu.cn
Server: 192.168.4.207
Address: 192.168.4.207#53
Name: www.tedu.cn
Address: 1.2.3.4
主从DNS服务器同步数据
- 1.修改数据必须是在主DNS服务器上完成
地址库文件内容:
(
0 ; serial #数据版本号由10个数字组成
1D ; refresh #代表每隔一天,主从会进行数据同步
1H ; retry #每隔一个小时,重试时间间隔
1W ; expire #失效时间,一个星期
3H ) ; minimum #无效记录的缓存时间,3个小时
- 2.必须手动修改数据的版本号,往大的方向修改
[root@svr7 named]# vim tedu.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
2019122301 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
tedu.cn. NS svr7
tedu.cn. NS pc207
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 15.20.25.26
[root@C ~]# nslookup www.tedu.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.tedu.cn
Address: 15.20.25.26
-------------------------------------------------------------------------------------------------------
[root@svr7 named]# vim tedu.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
2019122302 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
tedu.cn. NS svr7
tedu.cn. NS pc207
svr7 A 192.168.4.7
pc207 A 192.168.4.207
www A 45.46.50.25
[root@svr7 named]# systemctl restart named
[root@C ~]# nslookup www.tedu.cn
Server: 192.168.4.7
Address: 192.168.4.7#53
Name: www.tedu.cn
Address: 45.46.50.25