rpm -qf /usr/bin/vim
文件的基本管理和XFS文件系统备份恢复
-
使用tree命令查看linux目录结构,这个命令默认没有安装,自己手动安装一下
mount /dev/sr0 /media/
rpm -ivh /media/Packages/tree-1.6.0-10.el7.x86_64.rpm
-
tree /tmp/
#查看tmp下目录 -
跟下目录作用说明
目 录 说 明 / 处于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文件,几乎所有的应用程序都需要用到这些共享库 -
ll /etc/passwd
#查看文件修改的时间stat /etc/passwd
#查看文件属性(其中包括文件时间熟悉)访问时间:atime 查看内容 cat a.txt 修改时间:mtime 修改内容 vim a.txt 改变时间:ctime 文件属性,比如权限 change time。 chmod +x a.sh //其它参数介绍 File:"/etc/passwd" Size:2116 Blocks:8 IO Block:4096 regular file Device:803h/2051d Inode:9401663 Links(硬链接):1 Access(权限):(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
-
touch命令
touch a.txt
touch file1 file2
touch file{6..20}
#创建file6到file20的文件touch -d "20200720 22:00" zz.txt
#可以设置创建文件的时间
-
使用vim或者重定向创建一个新文件
vim zz.txt
echo aaa > zz.txt
-
mkdir dir1
mkdir dir2 dir3 /home/dir4
mkdir -p /home/a/b/zz.txt
#在创建一个目录的时候,如果这个目录的上一级不存在的话,要加参数-p -
rm -rf a.txt
rm -rf b.txt dir1
rm -rf file*
-f 强制删除,没有提示
-r 删除目录
-
复制
命令:cp 源文件/目录 目录文件/目录
选项:-R/r:递归处理,将指定目录下的所有文件与子目录一并处理
-
移动
mv
#既可以移动,也可以改名 -
查看文件
cat
more
#空格键向下翻页,enter键向下翻一行less
#支持前后翻滚,pageup/pagedownhead /etc/passwd
#显示头10行head -n 3 /etc/passwd
#显示头3行tail -n 3 /etc/passwd
#显示尾3行的内容tail -f /var/log/secure
#在一个终端执行此命令,然后打开一个新终端登录root,可以在前者打开的文件内容里动态看到登录成功的日志
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级别代表: 增量备份
扩展:
完全备份:每次都把指定的备份目录完整的复制一遍,不管目录下的文件有没有变化;
增量备份:每次将之前(第一次、第二次、直到前一次)做过备份之后有变化的文件进行备份;
差异备份:每次都将第一次完整备份以来有变化的文件进行备份。
*/
-
环境准备
先关机,然后在系统CentOS7中添加一块虚拟硬盘(即我们的测试分区)
正常使用一块磁盘过程如下:
20G --> 分区 --> 格式化 --> 挂载
-
对新添加的硬盘进行格式化
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. 正在同步磁盘。
-
ls /dev/sdb*
-
-
使用新的分区,格式化分区,并进行挂载
mkfs.xfs /dev/sdb1
mkdir /sdb1
#创建挂载点mount /dev/sdb1 /sdb1
#挂载
-
准备测试环境
cd /sdb1/
cp /etc.passwd ./
mkdir test
touch test/a
tree /sdb1/
-
备份
-
xfsdump -f 备份存放位置 要备份路径或设备文件
xfxdump -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
-
也可以指定备份时免交互操作,方便后期做定时备份
xfsdump -f /opt/dump_passwd /sdb1 -L dump_passwd -M media1
-L :xfsdump 纪录每次备份的 session 标头,这里可以填写针对此文件系统的简易说明
-M :xfsdump 可以纪录储存媒体的标头,这里可以填写此媒体的简易说明
-
指定只备份分区中某个目录
xfsdump -f /opt/dump_grub2 -s grub2/grub.cfg /boot -L dump_grub2 -M boot-sda1
参数:-s 文件路径 只对指定的文件进行备份,-s指定时,路径写的是相对路径(-s可以是文件或目录)
-
查看备份信息和内容
备份成功后,我们就可以在/var/lib/xfsdump/inventory目录下看到生成的档案信息
xfsdump -I
#字母大写I
-
-
测试恢复
-
先删除之前创建的内容
cd /sdb1
ls
pwd
rm -rf ./*
-
文件系统恢复
语法:xfsrestore -f 指定恢复文件的位置 指定存放恢复后的文件的路径
xfsrestore -f /opt/dump_sdb1 /sdb1
-
查看回复情况
ls /sdb1/
-
恢复单个文件如下
mkdir /var/test
xfsrestore -f /opt/dump_grup2 -s grup2/grup.cfg /var/test
xfsrestore -f /opt/dump_grup2 -s grup2 /var/test
#恢复目录 -
注意事项
/* 使用 xfsdump 时,请注意下面下面的几个限制: 1、xfsdump 不支持没有挂载的文件系统备份!所以只能备份已挂载的! 2、xfsdump 必须使用 root 的权限才能操作 (涉及文件系统的关系) 3、xfsdump 只能备份 XFS 文件系统 4、xfsdump 备份下来的数据 (档案或储存媒体) 只能让 xfsrestore 解析 5、xfsdump 是透过文件系统的 UUID 来分辨各个备份档的,因此不能备份两个具有相同 UUID 的文件系统 */
-
-
增量备份
/* 概念 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,以此类推。 优缺点 优点:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。 缺点:数据恢复相对比较麻烦,它需要上一次全备份和所有增量备份的内容才能够完全恢复成功,并且它们必须沿着从全备份到依次增量备份的时间顺序逐个反推恢复,因此可能会延长的恢复时间 */
-
准备一个目录进行备份
tree /sdb1
/sdb1/
├── passwd
└── test
└── a
对上面的内容进行一次全备
xfsdump -f /opt/test-full /sdb1 -L test-full -M media0
增加一些内容,然后进行第一次增量备份
touch /sdb1/1.txt /sdb1/2.txt
tree /sdb1
//sdb1/
├── 1.txt
├── 2.txt
├── passwd
└── test
└── a
xfsdump -l 1 -f /opt/test-back1 /sdb1 -L test-back1 -M media0
-l 做一个等级为1的备份
再次增加内容,然后进行level 2级别的增量备
touch /sdb1/test/a.txt /sdb1/test/b.txt
tree /sdb1
/sdb1/
├── 1.txt
├── 2.txt
├── passwd
└── test
├── a
├── a.txt
└── b.txt
xfsdump -l 2 -f /opt/test-back2 /sdb1 -L test-back2 -M media0
-
删除所有数据
rm -rf /sdb1/*
#删除所有数据 -
现在进行恢复,要想恢复全部全部数据,包括新添加的文件,如何恢复?
/* 步骤: 1、先恢复完全备份 2、情况1: 恢复最后一次增量备份(如果两次增量备份都是1级的,所以只需要恢复最后一个增量就可以了。 3、情况2:如果你做的是第一次是1级备,第二次是2级备,那么你在恢复的时候就需要先恢复完全备份,然后是1级备,最后是2级备) */
xfsrestore -f /opt/test-full /sdb1/
xfsrestore -f /opt/test-back1 /sdb1/
xfsrestore -f /opt/test-back2 /sdb1/
tree /sdb1/
-