【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第4章——文件的基本管理和XFS文件系统备份恢复

本节所讲内容:
4.1 Linux系统目录结构和相对/绝对路径。
4.2 创建/复制/删除文件,rm -rf / 意外事故
4.3 查看文件内容的命令
4.4 实战:xfs文件系统的备份和恢复

4.1 Linux系统目录结构和相对/绝对路径
4.1.1系统目录结构
在WIN系统中,查看文件先进入相应的盘符,然后进入文件目录
【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第4章——文件的基本管理和XFS文件系统备份恢复_第1张图片
在WIN中,它是多根 c:\ d:\ e:\
Linux只有一个根目录

【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第4章——文件的基本管理和XFS文件系统备份恢复_第2张图片

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

[root@xuegod63 ~]# mount /dev/sr0  /media/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@xuegod63 ~]# rpm -ivh /media/Packages/tree-1.6.0-10.el7.x86_64.rpm

查看/tmp目录结构

[root@xuegod63 ~]# tree  /tmp/

查看根下有哪些文件:
在这里插入图片描述
根下的目录作用说明:
【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第4章——文件的基本管理和XFS文件系统备份恢复_第3张图片【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第4章——文件的基本管理和XFS文件系统备份恢复_第4张图片
【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第4章——文件的基本管理和XFS文件系统备份恢复_第5张图片
【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第4章——文件的基本管理和XFS文件系统备份恢复_第6张图片

4.1.2 绝对路径和相对路径
路径:在我们平时使用计算机时要找到需要的文件就必须知道文件的位置,而表示文件的位置的方式就是路径

绝对路径:在Linux中,绝对路径是从”/”开始的,比如/usr、/etc/passwd。如果一个路径是从根(/)开始的,它一定是绝对路径.
相对路径:相对路径是以 . 或 … 开始的,

 [root@xuegod63 etc]# pwd  #判断用户当前所处的位置

绝对路径: 从/开始的路径 /home/mk
相对路径: 相对于当前目录开始,a.txt ./a.txt …/miao/b.txt 当前目录在/etc

[root@xuegod63 ~]# cd /etc/
[root@xuegod63 etc]# ll passwd 
-rw-r--r-- 1 root root 2116 11月 16 14:57 passwd
[root@xuegod63 etc]# ll /etc/passwd
-rw-r--r-- 1 root root 2116 11月 16 14:57 /etc/passwd

4.2 文件的管理
文件管理方式有多种:

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

4.2.1 创建文件和文件夹
命令之:touch 
作用:常用来创建空文件,如果文件存在,则修改这个文件的时间
补充:文件的三种时间

[root@xuegod63 ~]# ll /etc/passwd  #查看文件修改的时间
-rw-r--r-- 1 root root 2116 11月 16 14:57 /etc/passwd

[root@xuegod63 ~]# stat /etc/passwd  #查看文件属性(其中包括文件时间属性)
  文件:"/etc/passwd"
  大小:2116      	块:8          IO 块:4096   普通文件
设备:803h/2051d	Inode:9401663     硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2017-11-16 14:57:39.923177258 +0800
最近更改:2017-11-16 14:57:39.397177256 +0800
最近改动:2017-11-16 14:57:39.409177256 +0800

注:
访问时间:atime 查看内容 cat a.txt
修改时间:mtime 修改内容 vim a.txt
改变时间:ctime 文件属性,比如权限 change time。 chmod +x a.sh

语法:touch 文件名

[root@xuegod63 ~]# cd /opt/
[root@xuegod63 opt]# touch a.txt
[root@xuegod63 opt]# touch file1 file2
[root@xuegod63 opt]# touch file{6..20}  #创建file6到file20的文件
[root@xuegod63 opt]# ls
a.txt  file10  file12  file14  file16  file18  file2   file6  file8  rh
file1  file11  file13  file15  file17  file19  file20  file7  file9

[root@xuegod63 opt]#  touch -d "20181019 21:30" xuegod.txt
[root@xuegod63 opt]# ll xuegod.txt 
-rw-r--r-- 1 root root 0 10月 19 2018 xuegod.txt

4.2.2 使用vim和重定向创建一个新文件
用vim命令创建一个新文件

[root@xuegod63 mnt]# vim xuegod-1.txt

用重定向创建一新文件

[root@xuegod63 mnt]#echo  aaa > xuegod.txt

4.2.2 命令之:mkdir
作用:创建目录
语法:mkdir (选项) 文件名
例:

[root@xuegod63 opt]# mkdir dir1
[root@xuegod63 opt]# mkdir dir2 dir3 /home/dir4
[root@xuegod63 opt]# ls /home/
dir4  mk
[root@xuegod63 opt]# mkdir /tmp/a/b/c
mkdir: 无法创建目录"/tmp/a/b/c": 没有那个文件或目录
[root@xuegod63 opt]# mkdir -p /tmp/a/b/c  #在创建一个目录的时候,如果这个目录的上一级不存在的话,要加参数-p
[root@xuegod63 opt]# ls /tmp/a/b/
c

4.2.2 删除文件和目录
用到的命令:rm
作用:可以删除一个目录中的一个或多个文件或目录,对于链接文件,只是删除整个链接文件,而原文件保持不变的
语法:rm (选项) 处理对象
选项:
-f 强制删除,没有提示
-r 删除目录
例子:

[root@xuegod63 opt]# rm -rf a.txt 
[root@xuegod63 opt]# rm -rf a.txt dir
[root@xuegod63 opt]# rm -rf file*
rm -rf  (慎用,一定要在删除以前确定一下所在目录,防止误删除重要数据)

4.2.3 复制文件
命令:cp 源文件/目录 目录文件/目录
选项:-R/r:递归处理,将指定目录下的所有文件与子目录一并处理
例子:

[root@xuegod63 ~]# cp /etc/passwd /opt/   #复制文件
[root@xuegod63 ~]# cp -r /boot/grub /opt/  #复制目录

4.2.4 移动文件

[root@xuegod63 opt]# mv passwd  dir1
[root@xuegod63 opt]# mv xuegod.txt dir1/a.txt   #在移动文件的时候支持改名操作

4.3 查看文件
4.3.1 命令之:cat
语法:cat 文件名
作用:查看文件内容,一次显示整个文件的内容

例子: [root@xuegod63 ~]# cat /etc/passwd 

4.3.2 命令之:more
作用:以分页形式显示文件内容

语法:more + 文件名

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

4.3.3 命令之:less
作用:和more功能一样

语法:less +文件名

说明:linux中more与less的区别
more:不支持后退,但几乎不需要加参数,空格键是向下翻页,Enter键是向下翻一行,在不需要后退的情况下比较方便
less:支持前后翻滚,既可以向上翻页(pageup按键),也可以向下翻页(pagedown按键)。,空格键是向下翻页,Enter键是向下翻一行

4.3.4 命令之:head
作用: 用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容
语法:head(选项)文件名
参数: -n 显示从文件头开始的行数

[root@xuegod63 opt]# head /etc/passwd
[root@xuegod63 opt]# head -n 3 /etc/passwd #显示前3行

4.3.5 命令之:tail
作用: 用于显示文件中的尾部内容。默认在屏幕上显示指定文件的末尾10行
语法:tail (选项)文件名
参数:
-n 显示文件尾部多少行的内容(n为数字)
-f 动态显示数据(不关闭),常用来查看日志

[root@xuegod63 ~]# tail -n 3 /var/log/secure  #查看最后3行记录
[root@xuegod63 ~]# tail -f /var/log/secure   #在一个终端执行此命令动态查看文件内容
[root@xuegod63 ~]# ssh [email protected]   #在另一个终端远程登录Linux,登录成功后
[root@xuegod63 ~]# tail -f /var/log/secure  #可以动态查看到登录成功的日志
Nov 17 00:08:32 xuegod63 sshd[2924]: Accepted password for root from 192.168.1.63 port 39904 ssh2

4.4 实战:xfs文件系统的备份和恢复
XFS提供了 xfsdump 和 xfsrestore 工具协助备份XFS文件系统中的数据。xfsdump 按inode顺序备份一个XFS文件系统。
centos7选择xfs格式作为默认文件系统,而且不再使用以前的ext,仍然支持ext4,xfs专为大数据产生,每个单个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump,xfsrestore来备份和恢复。
与传统的UNIX文件系统不同,XFS不需要在备份前被卸载;对使用中的XFS文件系统做备份就可以保证镜像的一致性。XFS的备份和恢复的过程是可以被中断然后继续的,无须冻结文件系统。xfsdump 甚至提供了高性能的多线程备份操作——它把一次dump拆分成多个数据流,每个数据流可以被发往不同的目的地
首先了解一下xfsdump的备份级别有以下两种,默认为0(即完全备份)

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

扩展:

完全备份:每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化;
增量备份:每次将之前(第一次、第二次、直到前一次)做过备份之后有变化的文件进行备份;
差异备份:每次都将第一次完整备份以来有变化的文件进行备份。

4.4.1 环境准备
实验环境:
系统CENTOS7.2 添加一块虚拟硬盘(准备一个测试分区)
正常使用一块磁盘过程如下:
添加磁盘大小:20G 分区格式化挂载
【Linux云计算架构:第一阶段-Linux操作系统入门到精通】第4章——文件的基本管理和XFS文件系统备份恢复_第7张图片
对新添加的硬盘进行格式化:

[root@xuegod63 ~]# fdisk /dev/sdb					#指定分区的设备

欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x06d5a427 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n  #创建一个新的分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p  #创建一个主分区
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G  #指定分区大小
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p  	#打印分区表
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x06d5a427
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
命令(输入 m 获取帮助):w  	#保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。

[root@xuegod63 ~]# ls  /dev/sdb*
/dev/sdb  /dev/sdb1

使用新的分区,格式化分区,并进行挂载
[root@xuegod63 ~]# mkfs.xfs /dev/sdb1
[root@xuegod63 ~]# mkdir /sdb1     #创建挂载点
[root@xuegod63 ~]# mount /dev/sdb1 /sdb1   #挂载

准备备份测试文件
[root@xuegod63 ~]# cd /sdb1/
[root@xuegod63 sdb1]# cp /etc/passwd ./
[root@xuegod63 sdb1]# mkdir test
[root@xuegod63 sdb1]# touch test/a
[root@xuegod63 sdb1]# tree /sdb1/

[root@xuegod63 sdb1]# tree /sdb1/
/sdb1/
├── passwd
└── test
    └── a

4.4.2 备份
1、备份整个分区。 (这个功能就像是虚拟机的快照,服务器被黑后,进行快速恢复)
xfsdump -f 备份存放位置 要备份路径或设备文件
注意:备份的路径这里不能写成/sdb1/。 可以是/dev/sdb1 或/sdb1

[root@xuegod63 sdb1]# xfsdump -f /opt/dump_sdb1  /dev/sdb1

xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control
========== dump label dialog ==============================
please enter label for this dump session (timeout in 300 sec)
 -> dump_sdb1  指定备份会话标签
 
session label entered: "dump_sdb1"
 --------------------------------- end dialog ---------------------------------
xfsdump: level 0 dump of xuegod63.cn:/sdb1
xfsdump: dump date: Fri Nov 17 12:24:53 2017
xfsdump: session id: b5a25fcd-d43d-4308-bf29-142066f89d9a
xfsdump: session label: "dump_sdb1"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25856 bytes
============== media label dialog =============================
please enter label for media in drive 0 (timeout in 300 sec)
 -> sdb1  指定设备标签,就是对要备份的设备做一个描述
 
media label entered: "sdb1"
 --------------------------------- end dialog --------------------------------
xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 24544 bytes
xfsdump: dump size (non-dir files) : 2592 bytes
xfsdump: dump complete: 46 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /opt/dump_sdb1 OK (success)
xfsdump: Dump Status: SUCCESS

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

[root@xuegod63 sdb1]# xfsdump -f /opt/dump_passwd /sdb1 -L dump_passwd -M media1
-L  :xfsdump  纪录每次备份的 session 标头,这里可以填写针对此文件系统的简易说明
-M  :xfsdump 可以纪录储存媒体的标头,这里可以填写此媒体的简易说明

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

[root@xuegod63 sdb1]# xfsdump -f /opt/dump_grub2 -s grub2/grub.cfg /boot -L dump_grub2 -M boot-sda1

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

[root@xuegod63 opt]# xfsdump  -I(字母大写i)

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

[root@xuegod63 sdb1]# ls
passwd  test
[root@xuegod63 sdb1]# pwd
/sdb1
[root@xuegod63 sdb1]# rm -rf ./*

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

[root@xuegod63 opt]# xfsrestore -f /opt/dump_sdb1  /sdb1

查看恢复情况

[root@xuegod63 ~]# ls /sdb1/

恢复单个文件如下:

[root@xuegod63 ~]# mkdir /var/test/ 
[root@xuegod63 ~]# xfsrestore -f /opt/dump_grub2 -s grub2/grub.cfg /var/test/
[root@xuegod63 ~]# 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 的文件系统

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

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

实战: 增量备份文件系统
准备一个备份目录进行备份

[root@xuegod63 sdb1]# tree  /sdb1
/sdb1/
├── passwd
└── test
    └── a

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

[root@xuegod63 sdb1]# xfsdump -f /opt/test-full /sdb1 -L test-full -M media0

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

[root@xuegod63 ~]# touch  /sdb1/1.txt /sdb1/2.txt
[root@xuegod63 ~]# tree  /sdb1/
/sdb1/
├── 1.txt
├── 2.txt
├── passwd
└── test
└── a 
[root@xuegod63 sdb1]# xfsdump -l 1 -f /opt/test-back1 /sdb1 -L test-bak1 -M media0

-l 做一个等级为1的备份
再次增加内容,然后进行level 2级别的增量备

[root@xuegod63 sdb1]# touch  /sdb1/test/a.txt  /sdb1/test/b.txt
[root@xuegod63 ~]# tree /sdb1/
/sdb1/
├── 1.txt
├── 2.txt
├── passwd
└── test
    ├── a
    ├── a.txt
└── b.txt 
[root@xuegod63 sdb1]# xfsdump -l 2 -f /opt/test-back2 /sdb1 -L test-bak2 -M media0

[root@xuegod63 ~]# rm -rf /sdb1/*    #删除所有数据

现在进行恢复,要想恢复全部全部数据,包括新添加的文件,如何恢复?
步骤:
1、先恢复完全备份
2、情况1: 恢复最后一次增量备份(如果两次增量备份都是1级的,所以只需要恢复最后一个增量就可以了。
3、情况2:如果你做的是第一次是1级备,第二次是2级备,那么你在恢复的时候就需要先恢复完全备份,然后是1级备,最后是2级备)

[root@xuegod63 ~]# xfsrestore -f /opt/test-full /sdb1/
[root@xuegod63 ~]# xfsrestore -f /opt/test-back2 /sdb1/  #故意先恢复back2,查看
[root@xuegod63 ~]# tree /sdb1/  #查看,发现没有1.txt ,2.txt 
/sdb1/
├── passwd
└── test
    ├── a
    ├── a.txt
└── b.txt 
[root@xuegod63 ~]# xfsrestore -f /opt/test-back1 /sdb1/   

[root@xuegod63 ~]# tree /sdb1/  

到此,数据恢复成功了。

总结:

4.1  Linux系统目录结构,相对/绝对路径。
4.2  创建/复制/删除文件,rm -rf / 意外事故
4.3  查看文件内容的命令
4.4  实战:xfs文件系统的备份和恢复

你可能感兴趣的:(Linux云计算架构师)