2018-04-25 《鸟哥的Linux私房菜 基础学习篇(第四版)》 第20章 基础系统设定与备份策略

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018-04-25 《鸟哥的Linux私房菜 基础学习篇(第四版)》 第20章 基础系统设定与备份策略相关的知识,希望对你有一定的参考价值。

命令目录
1、ifconfig -a                    #列出所有网卡
2、nmcli                        #设定网络参数
3、timedatectl [commamd]                #时区的显示与设定
4、ntpdate 网络上的时间服务器            #手动网络校时
4、hwclock -w                    #订正 Bios 记录的时间
5、locale                        #查询目前的语系数据与变量
5、localectl                        #查询目前的语系数据与变量
6、firewall                        #防火墙的操作命令
7、dmidecode -t type                #解析硬件配备
8、lspci [-vvn]                    #列出整个 PC 系统的 PCI 接口装置
9、lsusb [-t]                    #USB端口状态
10、iostat [-c|-d] [-k|-m] [-t] [间隔秒数] [侦测次数]    #磁盘由开机到现在,已经存取多少数据
11、smartctl                        #了解磁盘的健康状态。
备份
dd
cpio
tar
xfsdump
rsync



系统基本设定和服务器硬件数据的收集命令
1、ifconfig -a                    #列出所有网卡


2、nmcli                        #设定网络参数


2.1、nmcli connection show            #显示所有网卡
显示数据列的含义:
    # NAME 联机代号,通常与后面的网卡 DEVICE 会一样。
    # UUID 特殊的装置识别,保留就好不要理它。
    # TYPE 网卡的类型,通常是以太网卡。
    # DEVICE 网卡名称。

2.2、nmcli connection show [网卡代号]        #显示“网卡代号”对应的网络参数
最底下的大写的 IP4, IP6 指的是目前的实际使用的网络参数,最上面的 connection开头的部份则指的是联机的状态。其他比较重要的参数:
? connection.autoconnect [yes|no] :是否于开机时启动这个联机,预设通常是yes 。
? ipv4.method [auto|manual] :自动还是手动设定网络参数的意思
? ipv4.dns [dns_server_ip] :DNS 的 IP 地址~
? ipv4.addresses [IP/Netmask] :IP 与 netmask 的集合,中间用斜线 / 来隔开~
? ipv4.gateway [gw_ip] :gateway 的 IP 地址。

2.3、[root[email protected] ~]# nmcli connection modify eth0 \
> connection.autoconnect yes \
> ipv4.method manual \
> ipv4.addresses 172.16.1.1/16 \
> ipv4.gateway 172.16.200.254 \
> ipv4.dns 172.16.200.254            #自定义网络参数
[[email protected] ~]# nmcli connection up eth0
[[email protected] ~]# nmcli connection show eth0

2.4、[[email protected] ~]# nmcli connection modify eth0 \
> connection.autoconnect yes \
> ipv4.method auto                #设置IP参数为自动获取
[[email protected] ~]# nmcli connection up eth0


3、timedatectl [commamd]                #时区的显示与设定
commamd:
    空:显示目前的时区与时间等信息
    list-timezones :列出系统上所有支持的时区名称
    set-timezone :设定时区位置
    set-time "yyyy-mm-dd HH:MM":设定时间
    set-ntp :设定网络校时系统

4、ntpdate 网络上的时间服务器            #手动网络校时
hwclock -w                        #订正 BIOS 记录的时间


5、locale                        #查询目前的语系数据与变量
/etc/locale.conf                    #语系的配置文件LANG=zh_CN.UTF8(中文的万国码)、en_US.utf8(英文的万国码)
localectl                        #查询目前的语系数据与变量
例,将整个系统语言改为英文:
[[email protected] ~]# localectl set-locale LANG=en_US.utf8
[[email protected] ~]# systemctl isolate multi-user.target
[[email protected] ~]# systemctl isolate graphical.target


6、firewall                        #防火墙的操作命令


7、dmidecode -t type                #解析硬件配备
选项与参数:
详细的 type 项目请 man dmidecode 查询更多的数据,这里仅列出比较常用的项目:
1 :详细的系统数据,含主板的型号与硬件的基础数据等
4 :CPU 的相关资料,包括倍频、外频、核心数、核心绪数等
9 :系统的相关插槽格式,包括 PCI, PCI-E 等等的插槽规格说明
17:每一个内存插槽的规格,若内有内存,则列出该内存的容量与型号

硬件资源的收集与分析
核心所侦测到的各项硬件装置,会被记录在 /proc 与 /sys 当中。包括 /proc/cpuinfo, /proc/partitions,/proc/interrupts 等等
除了直接呼叫出 /proc 目录下的文件内容之外,Linux 还提供其他命令将核心所侦测到的硬件显示出来:
    ? gdisk:第七章曾经谈过,可以使用 gdisk -l 将分区表列出;
    ? dmesg:第十六章谈过, 观察核心运作过程当中所显示的各项讯息记录;
    ? vmstat:第十六章谈过,可分析系统 (CPU/RAM/IO) 目前的状态;
    ? lspci:列出整个 PC 系统的 PCI 接口装置。很有用的指令;
    ? lsusb:列出目前系统上面各个 USB 端口口的状态,与连接的 USB 装置;
    ? iostat:与 vmstat 类似,可实时列出整个 CPU 与接口设备的 Input/Output 状态。

8、lspci [-vvn]                    #列出整个 PC 系统的 PCI 接口装置
选项与参数:
空:显示系统内的PCI总线相关装置。/proc/bus/pci/ 目录下的数据。
-v:显示更多的 PCI 接口装置的详细信息;
-vv :比 -v 还要更详细的细部信息;
-n:直接观察 PCI 的 ID 而不是厂商名称
实例:
[[email protected] ~]# lspci -s 00:03.0 -vv        #显示以太网络卡更详细的信息,-s 后面接的是每个设备的总线、插槽与相关函数功能,与/usr/share/hwdata/pci.ids文件相关
[[email protected] ~]# update-pciids            #更新/usr/share/hwdata/[[email protected] ~]# pci.ids文件


9、lsusb [-t]                    #USB端口状态
选项与参数:
空:列出目前主机 USB 各端口口状态
-t:使用类似树状目录来显示各个 USB 端口口的相关性

10、iostat [-c|-d] [-k|-m] [-t] [间隔秒数] [侦测次数]    #磁盘由开机到现在,已经存取多少数据
选项与参数:
空 :显示目前整个系统的 CPU 与储存设备的状态
-c :仅显示 CPU 的状态
-d :仅显示储存设备的状态,不可与 -c 一起用
-k :默认显示的是 block ,这里可以改成 K bytes 的大小来显示
-m :与 -k 类似,只是以 MB 的单位来显示结果
-t :显示日期出来
# 显示数据总共分为上下两部分,上半部显示的是 CPU 的当下信息;
# 下面数据则是显示储存装置包括 /dev/vda 的相关数据,他的数据意义:
# tps :平均每秒钟的传送次数。与数据传输『次数』有关,非容量。
# kB_read/s :开机到现在平均的读取单位;
# kB_wrtn/s :开机到现在平均的写入单位;
# kB_read :开机到现在,总共读出来的文件单位;
# kB_wrtn :开机到现在,总共写入的文件单位;
实例:
[[email protected] ~]# iostat -d 2 3 sda        #仅针对 sda ,每两秒钟侦测一次,并且共侦测三次储存装置

11、了解磁盘的健康状态。SMART 主要用来监测目前常见的 ATA 与 SCSI 界面的磁盘。“Self-Monitoring, Analysis and Reporting Technology System”的缩写
[[email protected] ~]# smartctl -a /dev/sda        #显示完整的 /dev/sda 的信息
[[email protected] ~]# smartctl -t short /dev/sda    #命令磁盘进行一次自我检测的动作


三、备份
备份原因:由于计算机 (尤其是目前的计算机,操作频率太高、硬件良率太差、使用者操作习惯不良、“某些”操作系统的当机率太高......) 的稳定性较差。
备份可以分为“完整备份”或“关键数据备份”。
也可以分为“累积备份”与“差异备份”。差异备份所使用的磁盘容量会比累积备份来的大,但是差异备份的还原较快,因为只需要还原完整备份与最近一次的差异备份即可。
备份还可以通过“异地备援系统”定期传输备份好的数据到其他地方。
3.1、完整备份:将根目录 (/) 整个系统全部备份下来。
完整备份常用的工具:
工具1、 dd 命令。不理会文件系统直接读取磁盘的扇区 (sector) ,相当良好的备份工具。缺点是很慢。
# 实例:用 dd 来将 /dev/sda 完整备份到完全一模一样的 /dev/sdb 硬盘上:
[[email protected] ~]# dd if=/dev/sda of=/dev/sdb
# 由于 dd 是读取扇区,所以 /dev/sdb 这颗磁盘可以不必格式化。非常的方便!

工具2、 cpio 命令。备份所有文件名,不过得要配合 find 或其他找文件名的指令才能够妥当处理。
# 实例:使用 cpio 来完整备份与还原整个系统,假设储存媒体为 SATA 磁带机:
[[email protected] ~]# find / -print | cpio -covB > /dev/st0 <==备份到磁带机
[[email protected] ~]# cpio -iduv < /dev/st0 <==还原

工具3、tar 命令。
#实例:/backupdata 是个独立的文件系统, 不备份不必要的 /proc, /mnt, /tmp 等目录,其他的数据完整备份:
[[email protected] ~]# tar --exclude /proc --exclude /mnt --exclude /tmp  --exclude /backupdata -jcvp -f /backupdata/system.tar.bz2 /
以上三个都是进行完整备份, 但累积备份就得要额外使用脚本程序来处理。

3.2、完整备份之累积备份:系统在进行完第一次完整备份后,经过一段时间的运作, 比较系统与备份文件之间的差异,第一次累积备份是仅对有差异的文件进行备份。第二次累积备份是与第一次累积备份的数据比较,也是仅对有差异的数据进行备份。以此类推。
假设星期一作好完整备份,系统在星期五的时候挂点。累积备份还原:必须要还原星期一的完整备份,然后还原星期二的累积备份, 再依序还原星期三、星期四的累积备份才算完全复原。
xfsdump 命令进行备份。
xfsdump: usage: xfsdump [ -a (dump DMF dualstate files as offline) ]
                        [ -b <blocksize> ]
                        [ -c <media change alert program>  ]
                        [ -d <dump media file size>  ]
                        [ -e (allow files to be excluded) ]
                        [ -f <destination> ... ]
                        [ -h (help) ]
                        [ -l <level> ]
                        [ -m (force usage of minimal rmt) ]
                        [ -o (overwrite tape) ]
                        [ -p <seconds between progress reports> ]
                        [ -q <use QIC tape settings> ]
                        [ -s <subtree> ... ]
                        [ -t <file> (use file mtime for dump time ]
                        [ -v <verbosity {silent, verbose, trace}> ]
                        [ -z <maximum file size> ]
                        [ -A (don‘t dump extended file attributes) ]
                        [ -B <base dump session id> ]
                        [ -D (skip unchanged directories) ]
                        [ -E (pre-erase media) ]
                        [ -F (don‘t prompt) ]
                        [ -I (display dump inventory) ]
                        [ -J (inhibit inventory update) ]
                        [ -K (generate format 2 dump) ]
                        [ -L <session label> ]
                        [ -M <media label> ... ]
                        [ -O <options file> ]
                        [ -R (resume) ]
                        [ -T (don‘t timeout dialogs) ]
                        [ -Y <I/O buffer ring length> ]
                        [ - (stdout) ]
                        [ <source (mntpnt|device)> ]
实例,/home 为一个独立的文件系统,而 /backupdata 也是一个独立的用来备份的文件系统,下面使用 dump 将 /home 完整的备份到 /backupdata 上:
[[email protected] ~]# xfsdump -l 0 -L ‘full‘ -M ‘full‘ -f /backupdata/home.dump /home <==完整备份
[[email protected] ~]# xfsdump -l 1 -L ‘full-1‘ -M ‘full-1‘ -f /backupdata/home.dump1 /home <==第一次进行累积备份

3.3、完整备份之差异备份:系统在进行完第一次完整备份后,经过一段时间的运作, 每次的备份都是与原始的完整备份比较的结果。系统运作的越久,离完整备份时间越长, 那么该次的差异备份数据会越大。
还原:将完整备份复原, 将最后一次的差异备份复原。
备份工具:
工具1、xfsdump 命令进行。和完整备份之累积备份的区别是:每次备份的等级 (level) 都是 level 1 。
工具2、透过 tar 的 -N 选项备份。
[[email protected] ~]# tar -N ‘2015-09-01‘ -jpcv -f /backupdata/home.tar.bz2 /home
# 只有在比 2015-09-01 还要新的文件,在 /home 底下的文件才会被打包进 home.bz2 中。
# 有点奇怪的是,目录还是会被记录下来,只是目录内的旧文件没有备份。
工具3、透过 rsync 来进行镜像备份。rsync 可以对两个目录进行镜像 (mirror) ,算是一个非常快速的备份工具!
rsync 语法:rsync -av 来源目录 目标目录
[[email protected] ~]# rsync -av /home /backupdata/    #完整备份。将 /home/ 镜像到 /backupdata/home/ 去,此时会在 /backupdata 底下产生 home 这个目录来。
[[email protected] ~]# rsync -av /home /backupdata/    #再次备份。再次进行会快很多。如果数据没有更动,几乎不会进行任何动作。

3.4、关键数据备份
推荐需要备份的目录:
? /etc
? /home
? /root
? /var/spool/mail/, /var/spool/cron/, /var/spool/at/
? /var/lib/
不需要备份的目录:
? /dev :这个随便你要不要备份。
? /proc, /sys, /run:记录目前系统上面正在跑的程序,这个真的不需要备份。
? /mnt, /media:挂载了其他的硬盘装置、光驱、软盘驱动器等等,如果你没有在这个目录内放置你自己系统的东西,也不需要备份。
? /tmp :存暂存档,不需要备份。
工具:使用 tar 来进行关键数据备份,配合 date 指令可以分门别类的将各种不同的服务在不同的时间备份使用不同文件名。
实例,依据日期来备份 mariadb 的数据库:
[[email protected] ~]# tar -jpcvf mysql.`date +%Y-%m-%d`.tar.bz2 /var/lib/mysql
还原:捉取最新的 Linux distribution ,安装, 将系统数据 (如账号/密码与家目录等等) 与服务数据 (如www/email/crontab/ftp 等等) 一个一个的填回去。

3.5、鸟哥的『鸟站』的备份策略:
1. 主机硬件:使用一个独立的 filesystem 来储存备份数据,此 filesystem 挂载到 /backup 当中;
2. 每日进行:目前仅备份 MySQL 数据库;
3. 每周进行:包括 /home, /var, /etc, /boot, /usr/local 等目录与特殊服务的目录;
4. 自动处理:这方面利用 /etc/crontab 来自动提供备份的进行;
5. 异地备援:每月定期的将数据分别 (a)刻录到光盘上面 (b)使用网络传输到另一部机器上面。

3.6、需要还原系统的情况分类及解决办法。
类型1、硬件损毁,且具有完整备份的数据时。
类型2、由于软件的问题产生的被攻破安全事件:
1. 先拔除网络线,最好将系统进行完整备份到其他媒体上,以备未来查验。而且如果被追踪到你的主机曾经攻击过别人的话,可以拿出备份数据来左证说,自己是被攻击者,而不是主动攻击别人的坏人。
2. 查阅日志文件,尝试找出各种可能的问题
3. 安装新系统 (最好找最新的 distribution)
4. 进行系统的升级,且进行防火墙相关机制的制订
5. 根据 2 的错误,在安装完成新系统后,将那些 bug 修复
6. 进行各项服务与相关数据的恢复
7. 正式上线提供服务,并且开始测试

























































































































































































































































以上是关于2018-04-25 《鸟哥的Linux私房菜 基础学习篇(第四版)》 第20章 基础系统设定与备份策略的主要内容,如果未能解决你的问题,请参考以下文章

求鸟哥的linux私房菜全部视频教程 百度网盘资源

求鸟哥的linux私房菜全部视频教程 百度网盘资源

鸟哥的Linux私房菜-----10学习Bash

刘遄:读完《鸟哥的Linux私房菜》的感受。

2018-04-10 《鸟哥的Linux私房菜 基础学习篇(第四版)》 下载方式

鸟哥的Linux私房菜——第八章