首页 > 技术 > Linux系统 > linux文件的基本管理和 XFS 文件系统备份恢复

linux文件的基本管理和 XFS 文件系统备份恢复

文件的基本管理和 XFS 文件系统备份恢复

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

根下的目录结构说明

目 录 说 明
/          处于 linux 系统树形结构的最顶端,它是 linux 文件系统的入口,所有的目录、文件、设备都在 / 之下
/bin       bin 是 Binary 的缩写。常用的二进制命令目录。比如 ls、 cp、 mkdir、 cut 等;和/usr/bin类似,一些用户级 gnu 工具
/boot      存放的系统启动相关的文件,例如:kernel.grub(引导装载程序)

/dev :  
dev 是 Device 的缩写。设备文件目录,比如声卡、磁盘……在 Linux 中一切都被看做文件。终端设备、磁盘等等都被看做文件设备文件: 
/dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1, /dev/zero,/dev/null, /dev/cdrom
/etc : 常用系统及二进制安装包配置文件默认路径和服务器启动命令目录
     passwd   用户信息文件
     shadow   用户密码文件
     group    存储用户组信息
     fstab 系统开机启动自动挂载分区列表
     hosts 设定用户自己的 IP 与主机名对应的信息

/home 普通用户的家目录默认存放目录
/lib  库文件存放目录,函数库目录

/lost+found    
只在 centos6 中有
默认为空,被 FSCK(file system check 用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,
可利用 fsck 命令对文件系统进行检查)用来放置零散文件(没有名称的文件) 当系统非法关机后,这里就
会存放一些文件。在 centos6 版本下,每个分区的挂载点下会有些目录

/mnt /media     一般用来临时挂载存储设备的挂载目录,比如有 cdrom、 U 盘等目录在 CENTOS7 中会挂载到/run 下面
/opt  表示的是可选择的意思,有些软件包也会被安装在这里

/proc
操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如 cpu、硬盘分区、内
存信息等)存放在这里。 /proc 目录是伪装的文件系统 proc 的挂载目录,proc 并不是真
正的文件系统。因此,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过
直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里
查看咱们的 CPU 信息cat /proc/cpuinfo

/sys 系统目录,存放硬件信息的相关文件
/run 运行目录,存放的是系统运行时的数据,比如进程的 PID 文件
/srv 服务目录,存放的是我们本地服务的相关文件

/sbin
大多数涉及系统管理的命令都存放在该目录中,它是超级权限用户 root 的可执行命令存
放地,普通用户无权限执行这个目录下的命令,凡是目录 sbin 中包含的命令都是 root
权限才能执行的

/tmp
该目录用于存放临时文件,有时用户运行程序的时候,会产生一些临时文件。 /tmp 就是
用来存放临时文件的。 /var/tmp 目录和该目录的作用是相似的,不能存放重要数据,它的
权限比较特殊
[root@xuegod63 ~]# ls –ld /tmp
drwxrwxrwt 10 root root 12288 Oct 3 20:45 /tmp/ à粘滞位(sticky bit)目录的
sticky 位表示这个目录里的文件只能被 owner 和 root 删除

/var
系统运行和软件运行时产生的日志信息,该目录的内容是经常变动的,存放的是一些变化
的文件。比如/var 下有/var/log 目录用来存放系统日志的目录,还有 mail、/var/spool/cron

/usr
存放应用程序和文件,
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
/usr/lib 库文件 Glibc(32 位)
/usr/lib64 库文件 Glibc

/lib  、/lib64
都在/usr/目录下
这个目录里存放着系统最基本的动态链接共享库,包含许多被/bin/和/sbin/中的程序使
用的库文件,目录/usr/lib/中含有更多用于用户程序的库文件。作用类似于 windows
里的 DLL 文件,几乎所有的应用程序都需要用到这些共享库
注:lib***.a 是静态库
lib***.so 是动态库
静态库在编译时被加载到二进制文件中
动态库在运行时加载到进程的内存空间中
简单的说:这些库是为了让你的程序能够正常编译运行的
其实类似于 WIN 中.dll 文件,几乎所有的应用程序都需要用到这些共享库

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

文件的管理

文件管理方式有多种:
改变目录: cd
创建/修改/移动/删除: touch mkdir mv vi rm cp

创建文件和文件夹

命令之: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

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

用 vim 命令创建一个新文件
[root@xuegod63 mnt]# vim xuegod-1.txt
用重定向创建一新文件
[root@xuegod63 mnt]#echo aaa > xuegod.txt

命令之:mkdir

命令之: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

删除文件和目录

用到的命令: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 (慎用,一定要在删除以前确定一下所在目录,防止误删除重要数据)

复制文件

命令:cp 源文件/目录 目录文件/目录
选项:-R/r:递归处理,将指定目录下的所有文件与子目录一并处理
例子:
[root@xuegod63 ~]# cp /etc/passwd /opt/ #复制文件
[root@xuegod63 ~]# cp -r /boot/grub /opt/ #复制目录

 移动文件

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

查看文件

命令之:cat

语法:cat 文件名
作用:查看文件内容,一次显示整个文件的内容
例子: [root@xuegod63 ~]# cat /etc/passwd

命令之:more

作用:以分页形式显示文件内容
语法:more + 文件名
说明: 按下回车刷新一行,按下空格刷新一屏,输入 q 键退出

命令之:less

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

命令之:head

作用: 用于显示文件的开头的内容。在默认情况下,head 命令显示文件的头 10 行内容
语法:head(选项)文件名
参数: -n 显示从文件头开始的行数
[root@xuegod63 opt]# head /etc/passwd
[root@xuegod63 opt]# head -n 3 /etc/passwd #显示前 3 行
 

命令之: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 root@192.168.1.63 #在另一个终端远程登录 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

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 级别代表: 增量备份
扩展:
完全备份:每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化;
增量备份:每次将之前(第一次、第二次、直到前一次)做过备份之后有变化的文件进行备份;
差异备份:每次都将第一次完整备份以来有变化的文件进行备份。
备份演示
使用新的分区,格式化分区,并进行挂载
[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

备份
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 ./*

文件系统恢复
语法: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 的文
件系统

增量备份
增量备份
概念
增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。
这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增
量备份后所产生的增加和修改的文件,以此类推。
优缺点
优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。
缺点:数据恢复相对比较麻烦,它需要上一次全备份和所有增量备份的内容才能够完全恢复成功,并且它们必须沿着从
全备份到依次增量备份的时间顺序逐个反推恢复,因此可能会延长的恢复时间

实战: 增量备份文件系统
准备一个备份目录进行备份
[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 <level> 做一个等级为 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/
到此,数据恢复成功了。


  •   正在提交中,请稍候...
      评论提交成功
    回复 的评论,点击取消回复。