[1]## 1.VMware正确的关机

执行命令:

init 0

2.桥接模式

虚拟机ip地址需要与主机在同一网段,如果需要联网,则网关于DNS需要与主机网卡一致

3.NAT( 地址转换模式)

在 NAT模式下,虚拟主机需要借助虚拟 NAT设备和虚拟DHCP服务器,使得虚拟机可以联网,虚拟机和物理机共有一个IP地址。

注:虚拟机使用NAT模式时,Linux系统要配置成动态获取IP

4.Host-Only模式

讲虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯,相当于NAT模式去除了虚拟NAT地址转换功能。

注:虚拟机使用Host-Only模式时,Linux系统要配置成动态获取IP

ifconfig命令使用方法

注意:下面操作 使用root(动态修改)

ifconfig

作用:用来配置网络或显示当前网络接口的状态

第一行:up-->网卡开启状态

RUNNING-->网线处理连接状态

MULTICAST-->支持组播

mtu1500-->(Maximum Transmission Unit)

第二行:该网卡 的IP地址,子网掩码,广播地址

第三行:IPV6的配置信息

第四行:网卡的MAC地址

ether表示连接类型 为以太网

txqueuelen 1000-->>传输队列的长度

第五六行:网卡接收数据包的统计信息和接收错误的统计信息

第七八行:网卡发送数据包的统计信息和发送错误的统计信息

方法1:临时修改网卡IP地址

ifconfig+网卡名称+IP地址 ------直接修改网卡的IP地址,重启失效

列如:

ifconfig ens33 192.168.1.110 netmask 255.255.255.0

说明:修改后当前终端会终端,需要重新使用新的IP地址进行连接

CentOS7的网卡重启方法

systemctl restart network

CentOS6的网卡重启方法

service network restart

方法2:添加多个临时IP地址

ifconfig 网卡名称0:第一个IP地址(netmask子网掩码) ---增加一个IP

ifconfig网卡名称1:第二个IP地址(netmask子网掩码) ---增加一个IP

列如

ifconfig ens33:0 192.168.1.110 netmask 255.255.255.0

删除临时IP

列如

ifconfig ens33:0 del 192.168.1.110

NetworkManager概述

NetworkManager服务是管理和监控网络设置的守护进程,CentOS7后更加注重使用NetworkManager服务来实现网络的配置管理,7.0以前是通过network服务管理网络,以后的版本,所有的网络管理和设置统一由NetworkManager服务来维护,他是一个动态的,事件驱动的网络服务管理。

RHEL/CentOS Linux网络相关的配置文件

RHEL/CentOS网络相关的配置文件路径

IP地址,子网掩码等配置文件:

ls /etc/sysconfig/network-scripts/ifcfg-ens33

网卡回环地址:

ls /etc/sysconfig/network-scripts/ifcfg-lo

DNS配置文件

cat /etc/resolv.conf

设置主机名与IP绑定信息

cat /etc/hosts

设置主机名

cat /etc/hostname

通过修改网卡配置文件修改IP地址为静态

vim /etc/sysconfig/network-scripts/ifcfg-ens33

会出现这些内容

image-20201013211827642.png

BOOTPROTO=none

dhcp表示动态获取IP地址,static表示静态IP,none表示不指定,默认是静态IP

关闭防火墙并设置开机不启动

查看firewalled状态

systemctl status firewalld.servcice

关闭

systemctl stop firewalld

开启

systemctl start firewalld

开机自动关闭

systemctl disable firewalld

开机自动启动

systemctl enable firewalld

临时和永久关闭Selinux

查看Selinux状态

getenforce

临时关闭Selinux

setenforce 0

永久关闭

vim /etc/selinux/config

SELINUX=enforcing    #改为disable

关闭以后请重启服务

reboot

设置光盘开机启动自动挂载

在文档的最后,添加以下内容

vim /etc/fstab
/dev/cdrom                        /mnt        iso9660 defaults        0 0

验证挂载是否成功
image-20201013211918051.png

mount -a
mount:/dev/sro写保护,讲以只读方式挂载
ls /mnt/   #可以查看到此目录下有内容,说明挂载成功

配置本地YUM源

yum的一切配置信息都储存在一个叫yum.repos.d目录下的配置文件中

查看YUM文件
cd /etc/yum.repos.d/
ls
删除所有repo文件
rm - rf ./*
或者直接输入
rm-rf /etc/yum.repos.d/*
创建一个新的yum源配置文件,yum源配置文件的结尾必须是.repo
写CentOS.repo #写入以下内容
[CentOS7]
name=CentOS-server
baseurl=file://mnt
enabled=1
gpgcheck=0

参数说明:

[CentOS7] --->yum的ID,必须唯一

name=CentOS-server --->描述信息

baseurl=file:///mnt --->mnt表示的是光盘的挂载点,前两个//表示的是协议,后面表示/mnt文件

enabled=1 --->启用

gpgcheck=0 --->取消验证

清空yum缓存
yum clean all
生成缓存列表
yum list
验证一下
yum -y install httpd

登陆LINUX终端

两种终端仿真器:1.GNOME桌面的GHOME Teminal;2.KDE桌面的Konsole Terminal

远程连接终端工具:Xshell,CTR

例一:通过tty命令看到当前所属的虚拟终端
tty
注:shift+ctrl+N 快速 打开一个终端,终端字体大小:shift+ctrl++,字体缩小:ctrl+-.
例二:不同虚拟终端之间的通讯
例如:同时打开两终端,第一个终端执行:
echo hello > /dev/pts/1
在第二个终端就可以看见hello输出了

例三:对所有终端广播消息:系统10分钟后关机

shutdown +10            #执行此命令后,在其他终端都会收到关机的消息
shutdown -c                #取消关机
或者
wall ''                    #广播,所有终端都能收到                

认识SHELL

Shell俗称壳,它提供了用户与内核进行交互操作的一种接口,它接受用户输入的命令并把它送入内核去执行,Shell实际上是一个命令解释器,它通过解释用户输入的命令并把传输给系统内核去执行。

Shell有自己的编程语言用于对命令的编译,它允许用户编写由Shell命令组成的程序,Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

内存命令:在系统启动时,时常驻内存的,所以执行效率高。

外部命令:是系统软件的功能,用户需要时才从硬盘中读入内存。

如何区别内外命令?

使用type命令,例如:

type pwd

总结:通过SHELL,我们可以对LINUX实现哪些操作或者管理:

例如:

1:对文件的管理(创建,删除,复制,修改)

2:对用户的管理(添加,删除)

3:相关权限的管理(授权用户对相关文件的管理,比如增删改查)

4:对磁盘的管控(分区,raid,lvm)

5:对软件的管理

6:对网络的管理

shell提示符“#”号与“$”号的区别

表示root用户登录,管理员账号登录

$表示普通用户登录

各位置对于的信息如下

用户名----@----主机名----当前所在的目录(~表示当前用户的家目录)----(#root管理员/$普通用户)

认识Bash Shell

查看所有shell类型

cat /etc/shells

具体你使用的是哪一个,取决于你的用户配置,也就说你可以看一下/etc/passwd文件的每一行的最后一个字段

head -1 /etc/passwd

也可以查看全部

vim /etc/passwd

基本命令操作

在LINUX中使用一个命令,命令格式如下:

命令【选项】【参数】

命令:具体执行的命令,比如pwd,head

选项:会影响到命令的一些行为操作,通常以---实现

参数:命令作用的对象

基本命令之--ls

作用:查看当前目录下有哪些文件(list)

语法:ls目录/文件,如果什么也不加,那么查看的是当前目录下的内容

常用选项:命令后面不加任何选项

-l 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等,长列表

例如

drwxr-xr-x.4 root root 4096 Mar 26 00:32 xdg

d:文件类型

rwxr-xr-x.:文件的权限

4:链接个数

root:文件所有者

root:用户所属组名

4096:文件大小

Mar 26 00:32:文件上次修复的日期时间

xdg:文件名称

字符文件类型中

d:目录文件

l:链接文件

b:块设备文件

c:字符设备文件

p:管道文件

-:表示普通文件

-a 列出目录下的所有文件,包括以"."开头的隐藏文件(Linux下隐藏文件是以.开头的,如果存在2个点,则代表存在父目录,1个点表示当前目录)

ls -a

-d 查看目录(不查看里面的内容)

ls -ld /root/

-S 以文件的大小进行排序

ls -lS /root/

ls -l和ll这两个命令是等价的,可以使用

type ll
别名的使用

定义一个别名,使用alias:

alias vimens33='vim /etc/sysconfig/network-scripts/ifcfg-ens33'

这样vimens33就成为别名了

删除别名:

unalias vimens33

设置别名永久生效:

当前用户:

vim /root/.bashrc

插入一下内容

alias vimens33='vim /etc/sysconfig/network-scripts/ifcfg-ens33'

再重新加载下.bashrc

source /root/.bashrc

全局用户

vim /etc/bashrc

在文件的最后面插入:

alias vimens33='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
基本命令之--cd

作用:切换目录(change directory)

语法:cd+目录,例如:

cd /etc/sysconfig/network-scripts/

说明:直接输入cd命令表示回到当前用户的宿主(家)目录

返回上级目录位置,也就是父目录

cd ..

切换到之前你所在的目录

cd -
历史命令之history

命令:history,就可以找出你以往所使用的命令,并且一次排序标号

4个快速查找Linux历史命令的方法:

方法1:光标上下移动

方法2:ctrl+r+输入某条命令的关键字,当找到对应的命令,按左光标键

方法3:!数字,执行history历史命令中的第N条命令,例如

!123

方法4:!字符串,搜索历史命令中最近的以*字符开头的命令,但不建议使用,因为只搜索最近的,例如搜索cd,会很不稳,例如

!cd
Linux下的快捷键

都是Ctrl+下面的单词,^表示Ctrl

终止前台运行的程序,如:ping.g.cn后,想停止,按下Crtl+c

^c

退出终端,等价于exit

^d

清屏与clear功能一样

^l

跳到命令的开头

^a

跳到命令的行尾

^e

将光标处到命令开头的内容删除

^u

将光标到命令行末尾的内容删除

^k

搜索历史命令,可以利用好关键词

^r

引用上一个命令的最后一个参数

!$

例子:先用了

cat /etc/hosts

你想编辑这个文件,你可以直接

vim !$

补全命令使用tab 键,tab只能补全命令与文件

系统时间管理

在Linux中有硬件时钟与系统时钟两种时钟,硬件时钟是指主板上的时钟设备,也就是通常可以在BIOS画面设定的时钟,系统时钟是指Kernel中的时钟,所有的Linux相关指令与函数都是读取系统时钟的设定,当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟独立运行。

两种时间:

查看硬件时间:

hwclock

查看系统时间:

date

时区:

UTC(Universal Time Coordinated):世界标准时间

GMT:(Greenwich Mean Time):格林尼治时间

CST(China Standard Time):中国标准时间

如何修改时间

date命令相关参数:

date -h

或者

date --help

-s,--set=STRING 把时间设置为字符串所描述的时间,例如

date -s "2020-10-12"

%F 完整的日期格式,等价于%Y-%m-%d,例子:

date "+%F"

%y 年份最后两位数(00-99)

%Y 年份

%m month(01,02....12)

%d 按月计的日期(例如:01)

%M minute(00....59)

%H 小时(00-23)

%S 秒(00-60)

例子:

date "+%Y%m%d"
date "+%y-%m-%d %H:%M:%S"
date "+%Y/%m/%d %H:%M:%S" 
date "+%Y%m%d %h:%M:%S"

在年月日之间可以添加自己想要的符号

-d,--date=STRING #显示由字符串描述的时间,而不是"当前时间",例如:

date -d "+1 months" +%F
使用time 命令测试一个命令运行的时间

time作用:一般用来测量一个命令的运行时间

使用方法:time在后来直接跟上命令和参数,例如:

time ls -l /etc/

出现

real 0m0.56s
user0m0.016s
sys 0m0.040s

说明:

real:实际使用时间

user:用户状态使用的时间

sys:内核状态使用的时间

帮助命令使用

遇到命令不知道添加哪个参数,可以使用命令帮助查看相关命令介绍,常用的查看帮助信息命令有如下几种:

man 命令 :查看手册页或命令描述,例如:

man find

man命令查看帮助时,支持它上下翻动,搜索(直接输入斜线),退出用q

使用-h或者--help查看命令选项,例如:

find -h
find --help
开关机命令及7个启动级别

常用的几个关机,重启命令:

shutdown
init
reboot
poweroff

关机命令之--shutdown

作用:关机,重启,定时关机

语法:shutdown [选项]

参数:

-r =>重新启动计算机

-h =>关机

-h 时间 =>定时关机

例如:

10分钟之后关机

shutdown -h +10

指定具体的时间进行关机

shutdown -h 23:30

立刻关机

shutdown -h now

22:22以后重启

shutdown -r 22:22
7个启动级别

作用:切换系统运行的级别

Linux7个启动级别:

0 系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器是关的

1 单用户模式,root权限,用于系统维护,禁止远程登录,就像windows下的安全模式登录

2 多用户模式,没有NFS和网络支持

3 完整的多用户文本模式,有NFS和网络,登录后可以进入控制台命令行模式

4 系统未使用,保留一般不用的,在一些特殊情况下可以用它来做一下事情,例如在笔记本电脑的电池用尽时,可以切换到这个模式来进行一些设置

5 图形化模式,登录后进入图形GUI模式,xwindows系

6 重启模式,默认运行级别不能设置为6,否则不能正常启动,运行init6机器就会重启

例:

关机

init 0

进入3级别字符界面

init 3

进入5级别图形界面

init 5
设置默认的运行级别

centos7不在使用/etc/inittab文件进行默认的启动级别配置,而是使用比sysvinit的运行级更为自由的target替代

第3运行级别用multi-user.target替代

systemctl set-default multi-user.target

第5运行级别用graphical.target替代

systemctl set-default graphical.target

查看当前默认的启动级别

runlevel

或者

systemctl get-default
Linux系统目录结构和相对/绝对路径

系统目录结构

在win系统中,查看文件先进入相应的盘符,再进入文件目录,在WIn中,它是多根 c: d: e:,根再加路径:C:Program Files

Linux只有一个根目录

使用tree命令查看Linux目录结构,这个命令默认是没有安装的,需要手动安装一下

mount:/dev/sr0 写保护,将以只读的方式挂载

 mount /dev/sr0 /media/

安装tree

rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm

就可以使用tree命令了,例如:查看/tmp/目录结构

tree /tmp/

根下的目录作用说明:

image-20201013211737167.png

  • bin :存放普通用户可执行的指令,即使在单用户模式下也能够执行处理
  • boot :开机引导目录,包括Linux内核文件与开机所需要的文件
  • dev :设备目录,所有的硬件设备及周边均放置在这个设备目录中
  • etc:各种配置文件目录,大部分配置属性均存放在这里
  • home:这里主要存放你的个人数据,具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。
  • lib:开机时常用的动态链接库,bin及sbin指令也会调用对应的lib库
  • lib64:开机时常用的动态链接库64位,bin及sbin指令也会调用对应的lib库
  • lost+found:是一个特殊目录,用途是用来存放文件系统错误导致文件丢失后找回数据的;如果你不小心删除了lost+found目录,不用使用mkdir命令创建lost+found目录,应该使用 mklost+found命令创建lost+found目录。
  • media:可移除设备挂载目录,类似软盘 U盘 光盘等临时挂放目录
  • mnt:用户临时挂载其他的文件系统,额外的设备可挂载在这里,相对临时而言
  • opt:第三方软件安装目录,现在习惯性的放置在/usr/local中
  • proc:虚拟文件系统,通常是内存中的映射,特别注意在误删除数据文件后,比如DB,只要系 统不重启,还是有很大几率能将数据找回来
  • root:系统管理员主目录,除root之外,其他用户均放置在/home目录下
  • run:系统运行是所需文件,以前防止在/var/run中,后来拆分成独立的/run目录。重启后重新生成对应的目录数据
  • sbin:只有root才能运行的管理指令,跟bin类似,但只属于root管理员
  • srv:服务启动后需要访问的数据目录,
  • sys:跟proc一样虚拟文件系统,记录核心系统硬件信息
  • tmp:存放临时文件目录,所有用户对该目录均可读写
  • usr:应用程序放置目录,
  • var :存放系统执行过程经常改变的文件,
  • vmlinuz : 是可引导的,压缩的linux内核,“vm”代表的“virtual memory”,一般是一个软连接.

还有一个重要的目录就是:/var/log/目录,主要存放的是系统日志文件

绝对路径与相对路径

绝对路径:在我们平时使用计算机要找到需要的文件就必须知道文件的位置,而表示文件的位置的方法就是路径,绝对路径:在Linux中,绝对路径就是从"/"开始的,比如/usr、/etc/passwd,如果一个路径是从跟(/)开始的,它一定是绝对路径。

相对路径:相对于当前路径,或者是以.或..开始的。

文件的管理

文件管理方式有多种:

改变目录:cd

创建/修改/移动/删除:touch mkdir mv vi rm cp

创建文件和文件夹

命令:

touch

作用:常用来创建文件,如果文件存在,则修改这个文件的时间

查看文件的修改时间:

ll /etc/passwd

查看文件属性(其中包括文件时间属性)

stat /etc/passwd

查看时间.png

注:

访问时间:atime 查看内容,例如 cat a.txt

修改时间: mtime 修改时间 vim a.txt

改变时间:ctime 文件属性,比如权限 chmod +x a.sh

语法:touch 文件名

例如:创建a.txt文件

touch a.txt

创建2个文件

touch file1 file2

创建多个file,file4 file5 ...file15

touch file{4..15}

指定一个文件的创建时间

touch -d '20201018 09:59'hello.txt
ll hello.txt

指定hello.txt是在2020年10月18日早上9:59创建,ll显示这文件时间也是这个时间

使用vim和重定向创建一个新的文件

用vim命令创建一个新文件

vim hello.txt

用重定向创建一个新文件

echo aaa>hello.txt

创建新的目录:mkdir

语法:mkdir (选项)文件名

例如:

mkdir dir1

创建多个和创建到home下

mkdir dir2 dir3 /home/dir4

创建多个目录中有目录,在创建一个目录的时候,如果这个目录的上一级不存在的话,就加个参数-p

mkdir -p /tmp/a/b/c

删除文件和目录

用到的命令:rm

作用:可以删除一个目录中的一个或多个文件或目录,对于链接文件,只是删除整个链接文件,而原文件保持不变。

语法:rm (选项)处理对象

选项:

-f 强制删除,没有提示

-r 删除目录

例子:

删除a.txt文件

rm -rf a.txt

删除a.txt 目录

rm -rf a.txt dir

删除以file开头的文件,如file1

rm -rf file*

rm -rf (慎用,一定要在删除前确定一下所在的目录,防止误删除重要的数据)

复制文件

命令:cp 源文件/目录 目标文件/目录

选项:-R/r:递归处理,将指定目录下的所有文件与子目录一并处理,复制目录时使用

例子:

复制文件

cp /etc/passwd /opt/

复制目录

cp -r /boot/grab /opt/

查看文件

命令:cat

语法:cat 文件名

作用:查看文件内容,一次性显示整个文件的内容

例子:

cat /etc/passwd

命令:more

作用:以分页形式显示文件内容

语法:more 文件名

说明:按下回车刷新一行,按下空格刷新一屏,输入q键退出

more /etc/passwd

命令:less

作用:和more功能一样

语法:less 文件名

说明:Linux中more与less的区别

more:不支持后退,但几乎不需要加参数,空格键是向下翻页,enter键是向下翻一行,在不需要后退的情况下比较方便

less:支持前后翻滚,既可以向上翻页(pageup按键),也可以向下翻页(pagedown按键),空格键是向下翻页,enter键是向下翻一行,输入q键退出

例子:

less /etc/passwd

命令:head

作用:用于显示文件的开头的内容,在默认情况下,head命令显示文件的头10行内容

语法:head (选项) 文件名

参数:-n显示从文件头开始的行数

例子:

head /etc/passwd

显示前3行

head -n 3 /etc/passwd

命令:tail

作用:用于显示文件中的尾部内容,默认在屏幕上显示指定文件的末尾10行

语法:tail (选项) 文件名

参数:

-n 显示文件尾部多少行的内容(n为数字)

-f 动态显示数据(不关闭),常用来查看日志

例子:

查看最后3行记录

tail -n 3 /var/log/secure

在一个终端执行此命令动态查看文件内容

tail -f /var/log/secure

在另一个终端远程登录Linux,登录用户为root用户

ssh root@192.168.153.50

可以动态查看到登录成功的日志

tail -f /var/log/secure

移动文件

命令:mv

语法:mv 文件名

作用:将某个文件移动到某一个目录下

例子:

将passwd文件移动到dir1目录下

mv passwd dir1

在移动文件的时候支持改名操作

mv hello.txt dir1/a.txt

实战:xfs文件系统的备份与恢复

XFS提供了xfsdump和xfsrestore工具协助备份XFS文件系统中的数据,xfsdump按inode顺序备份了一个XFS文件系统

Centos7选择xfs格式作为默认文件系统,而且不再使用以前的ext,仍然支持ext4,xfs专为大数据产生,每个单个文件系统最大可以支持8EB,单个文件可以支持16TB,不仅数据量大,而且扩展性高,还可以通过xfsdump,xfsrestore来备份和恢复。而原始备份数据方法:cp

与传统的UNIX文件系统不同,XFS不需要在备份前被卸载,对使用中的XFS文件系统做备份就可以保证镜像的一致性,XFS的备份和恢复的过程是可以被中断然后继续的,无需冻结文件系统,xfsdump甚至提供了高性能的多线程备份操作----它把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地

首先了解一下xfsdump的备份级别有以下两种,默认为0(即完全备份)

0 级别代表: 完全备份

1 到9级别代表: 增量备份

扩展:

完全备份:每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化

增量备份:每次将之前(第一次,第二次,直到前一次)做过备份后有变化的文件进行备份

差异备份:每次都将第一次完整备份以来有变化的文件进行备份

环境准备:

实验环境:

系统Centos7.4添加一块虚拟磁盘(准备一个测试分区)

正常使用一块磁盘过程如下:

添加内存.png

添加磁盘大小:20G-->分区-->格式化-->挂载

对新添加的硬盘进行格式化:

指定分区的设备

fdisk /dev/sdb

命令(输入m获取帮助): //创建一个新的分区

n

Select(default p): //创建一个主分区

p

Last扇区,+扇区 or +size{K,M,G}(2048-41943039,默认为41943039): //分一个G

+1G

命令(输入m获取帮助): //打印分区表

p

命令(输入m获取帮助): //保存

w

输入

ls /dev/sdb*

显示,就成功分区了

/dev/sdb    /dev/sdb1

使用新的分区,格式化分区,并进行挂载

格式化新分区:

mkfs.xfs /dev/sdb1

创建挂载点:

mkdir /sdb1

挂载:

mount /dev/sdb1 /sdb1

准备备份测试文件

cd /sdb1/

复制etc下的passwd文件,也可以复制其他的

cp /etc/passwd ./
mkdir test
touch test/a
tree /sdb1/

备份

1.备份整个分区(这个功能就像虚拟机的快照,服务器被黑后,进行快速恢复)

xfsdump -f 备份存放位置,要备份路径或者设备文件

注意:备份的路径这里不能写成/sdb1/,可以使/dev/sdb1或者/sdb1

xfsdump -f /opt/dump_sdb1 /dev/sdb1
please enter label for this dump session(timeout in 300 sec)

指定备份会话标签

->dump_sdb1
please enter label for media in drive 0(timeout in 300 sec)

指定设备标签

->sdb1

当出现以SUCCESS代表成功

xfsdump:Dump Status:SUCCESS

指定备份时免交互操作,方便后期做定时备份

xfsdump -f /opt/dump_passwd /sdb1 -L dump_passwd -M media1

-L :xfsdump 记录每次备份的session标头,这里可以填写针对此文件系统的简易说明

-M : xfsdump 记录储存媒体的标头,这里可以填写此媒体的简易说明

指定只备份分区中某个目录

参数:-s 文件路径 只对指定的文件进行备份,-s指定时,路径写的是相对路径(-s可以是文件或目录)

例子:对/boot/grub2进行备份

xfsdump -f /opt/dump_grub2 -s grub2/grub.cfg /boot -L dump_grub2 -M boot-sda1

查看备份信息与内容

备份成功后,我们就可以在/var/lib/xfsdump/inventory目录下看到生成的档案信息

ls /var/lib/xfsdump/inventory/

想要详细的查看备份信息,可以通过命令查看:

xfsdump -I

测试恢复:先删除之前创建的内容

pwd /sdb1
rm -rf ./*

文件系统恢复

语法:xfsrestore -f 指定恢复文件的位置 指定存放恢复后的文件的路径

例子:已经将/sdb1删除了,但可以将/opt/dump_sdb1这个位置的文件恢复

xfsrestore -f /opt/dump_sdb1 /sdb1

查看恢复情况:

ls /sdb1/

恢复单个文件如下:

mkdir /var/test/

在/opt/dump_grub2下恢复grub2/grub.cfg

xfsrestore -f /opt/dump_grub2 -s grub2/grub.cfg /var/test

也可以直接恢复grub2目录

xfsrestore -f /opt/dump_grub2 -s grub2 /var/test/

使用xfsdump时,请注意下面的几个限制:

1.xfsdump不支持没有挂载的文件系统备份,所以只能备份已经挂载的

2.xfsdump必须使用root的权限才能操作(涉及文件系统的关系)

3.xfsdump只能备份XFS文件系统

4.xfsdump备份下来的数据(档案或存储媒体)只能让xfsrestore解析

5.xfsdump是通过文件系统的UUID来分辨各个备份档的,因此不能备份具有相同UUID的文件系统

实战:增量备份

增量备份的概念:

增量备份是指在一次完全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件,这就意味着,第一次增量备份的对象是进行完全备份后所产生的增加或修改的文件,第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,以此类推。

优缺点:

优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间缩短

缺点:数据恢复相对比较麻烦,它需要上一次完全备份和所有增量备份的内容才能够完全恢复成功,并且它们必须沿着从完全备份到依次增量备份的时间顺序逐个反推恢复,因此可能会延长恢复的时间。

首先准备一个备份目录进行备份

tree /sdb1

对上面的内容进行第一次完全备份

例子:对/sdb1进行备份,存放到/opt/test-full下

xfsdump -f /opt/test-full /sdb1 -L test-full -M media0

增加一些内容,然后进行第一次增量备份

在/sdb1下创建1.txt和2.txt

touch /sdb1/1.txt /sdb1/2.txt

然后再tree一下/sdb1/,就可以看多了1.txt和2.txt

tree /sdb1/

然后进行增量备份,记得-l 1,-l意思是<level>,默认值为0,意思是完全备份,我们进行增量备份,所以值是1

xfsdump -l 1 -f /opt/test-back1 /sdb1 -L test-back1 -M media0

再次增加内容,然后进行level2级别的增量备份

先再次创建新的test目录在sdb1下,再在test中创建a.test与b.test

touch /sdb1/test/a.txt /sdb1/test/b.txt

再tree查看一下

tree /sdb1/

然后进行第二次增量备份

xfsdump -l 2 -f /opt/test-back2 /sdb1 -L test-back2 -M media0

进行备份恢复:

先删除/sdb1/原有数据:

rm -rf /sdb1/*

恢复步骤:

1.先恢复完全备份

2.情况1:恢复最后一次增量备份(如果两次增量备份都是1级别,所以只需要恢复到最后一个增量就可以了)

3.情况2:如果你做的第一次是第1级别备份,第二次是2级别备份,那么你在恢复的时候就需要先恢复完全备份,然后是1级别,最后是2级别

恢复完全备份

xfsrestore -f /opt/test-full /sdb1/

先故意恢复back2,查看

xfsrestore -f /opt/test-back2 /sdb1/
tree /sdb1/

发现只有a.txt与b.txt,并没有1.txt与2.txt,说明增量备份恢复只能恢复相对于上次多的或者修改的文件与目录,back2相对于back1来说,只多了a.txt与b.txt,说要只在完全备份上只恢复了这两个

正确操作应该是:

先恢复1级别,再2级别

xfsrestore -f /opt/test-back1 /sdb1/
xfsrestore -f /opt/test-back2 /sdb1/

到此数据就恢复成功了

总结:

1:Linux系统目录结构,相对/绝对路径

2:创建/复制/删除文件,rm -rf/意外事故

3:查看文件内容的命令

4:实战:xfs文件系统的备份与恢复

vim编辑器的使用和恢复ext4下误删的文件

vim主要模式介绍,vim命令模式

确保系统已经安装了VIM工具

rpm -qf `which vim`
rpm -qf `which vi`

vim是vi的增强版,最明显的区别就是vim可以语法加亮,它完全兼容vi

vim编辑器模式

首次进入文件 ----命令模式

出现"Insert" ----编辑模式

输入: ----命令行模式

编辑模式操作:aio AIO

说明:

i 当前字符之前插入(光标前)

I 行首插入(行首)

a 当前字符之后插入(光标后)

A 行尾插入(行尾)

o 下一行插入(另起一行)

O 上一行插入(另起一行)

x 向后删除一个字符,等同于delete

X 向前删除一个字符

u 撤销一步,每按一次就撤销一次

r 替换

在命令模式下作的操作:

光标定位

h 向左 j 向下 k向上 l 向右

0与home键表示切换到行首,$和end键表示切换到行尾

gg快速定位到文档的首行,G快速定位到文档的末行

想快速定位到某行,例如定位到第6行,可以6gg或者6G

/string(字符串) 查找关键字 --------找到或定位你要找的单词或者内容,如果相符的内容比较多,我们可以通过N向上翻,n向下翻来进行查找,并且vim会对查找到的内容进行高亮显示,取消用:noh

如何对文本进行编辑

删除、复制、粘贴、撤销

复制

y 表示对单个字符进行复制,如果要复制整行,用yy(以行为单位)

复制N行:Nyy,例如:3yy,复制3行

删除

dd 删除,以行为单位,删除当前光标所在的行

删除N行:Ndd,例如:3dd,表示删除3行

x 删除光标所在位置的字符

D 从光标处删除到行尾

粘贴

p 按p就进行粘贴

撤销操作

u 按一次u后就撤销操作,下面有还需进行多少次撤销才能恢复原状的计数器

恢复

ctrl+r 还原撤销过的操作,将做过的撤销操作再还原回去,也就是说撤销前是什么样,就还原成什么样

替换

r 或者说用来修改一个字符

总结:vim如何进入其它模式
a A o O i I 都是可以进行插入,编辑模式

: 进入命令行模式

v 进入可视模式

ctrl+v 进入可视块模式

V 进入可视行模式

R 擦拭,改写,进入替换模式

你进入以上模式后,想要退出,按esc

V模式(列)

进入v模式,移动光标选择区域

可视模式.png

在编程的时候需要进行多行注释:

1:ctrl+v进入列编辑模式

2:向下或向上移动光标,把需要注释、编辑的行开头选中

3:然后按大写的I

4:再插入注释符或者你需要插入的符号,比如'#'

5:再按ESC,就会全部注释或者添加了

删除:

再按ctrl+v,进入列编辑模式,向上或向下移动光标,选中注释或者想删除的部分,然后按d,就会删除注释符号或者想删除的内容

命令行模式操作

:w 保存save

:w! 强制保存

:q 没有进行任何修改,退出quit

:wq 保存并退出

:wq! 强制保存并退出

:x 保存退出

在什么情况下需要用到:wq! 或 :w! 这种强制行为,例如在对这种对所有用户都没有权限修改的文件就需要用到,如图:

wq!.png

修改shadow.png

前面全部都是----------表示对所有用户都没权限修改,但是你是root登录,是超级管理员,所以还是有权限修改的,就需要用到强制保存退出

调用外部文件或者命令

假设:我们在编写/etc/passwd文件时,想要写入我得网卡MAC地址,我要查看一下,当前是在vim编辑文档,但又不想退出passwd,可以在命令行模式下操作:

: ! 调用命令,例如:

:!ifconfig

想看ens33

:!ifconfig ens33

而我们想直接读取其他文件(直接把其他文件的内容追加到当前文件下,相当于直接复制过来)

: r 命令,例如:

:r /etc/hosts

就直接把hosts文件的内容复制到当前文件中了

文本替换

格式:范围(其中%所有内容) s分割符 旧的内容 分隔符 新的内容 (分隔符可以自定义) 默认是每一行的第一个符合要求的词(/g全部),后面加i表示不分大小写

例子:

替换第一行到第三行中出现的第一个bin进行替换为YQHP

1,3 s/bin/YQHP

替换第一行到第三行中查找到的所有bin进行替换为YQHP

1,3 s/bin/YQHP/g

只把第三行第一个bin替换为YQHP

3 s/bin/YQHP

将第三行中所有的bin都替换为YQHP

3 s/bin/YQHP/g

将文本中所有的do替换成YQHP

% s/do/YQHP/g

将文本中所有的do替换成YQHP,并且忽略do的大小写

% s/do/YQHP/gi

自定义分隔符,将文本中所有的a替换成b

% s@a@b@g

自定义vim使用环境

临时环境:

设置行号

:set nu

不区分大小写

:set ic

显示控制字符

:set list

取消设置行号

:set nonu

取消

:set noic

自动缩进,比如换行操作,设置这个功能后,可以在下次操作时进行自动换行

:set ai

取消高亮显示

:noh

永久设置环境

设置后会影响到系统所有的用户

vim /etc/vimrc

直接在文件末尾提添加即可

set nu

在用户的家目录下,创建一个.vimrc,这样只会影响到当前用户,没有自己创建一个

~/.vimrc

例子:

pwd

显示在/root下,然后创建.vimrc文件

vim .vimrc

在里面写上,然后保存退出

set nu

在此用户下vim文件就都有行号了

显示行号.png

vim打开多个文件

要想在两个文件中进行切换,ctrl+w+光标键,或者ctrl+w+w,而对文件的保存或退出是根据你光标所在的文件进行操作,如果两个都想退

:qa

两个都不保存强制退出

:qa!

方法1:以上下形式,打开两个文档,例子

vim -o /etc/passwd /etc/hosts

上下形式打开.png

方法2:以左右方式打开两个文档,例子

vim -O /etc/passwd /etc/vimrc

左右方式打开.png

比较两个文件内容

方法1:

diff /etc/passwd /etc/hosts

diff.png

方法二:推荐

vimdiff /etc/passwd /etc/hosts

vimdiff.png

其他编辑器:

nano编辑器

emacs编辑器

图形界面下的gedit编辑器

gedit /etc/passwd
Last modification:January 2nd, 2021 at 09:14 am