文章目录
- 注:Linux底下的扩展名是没有什么特殊意义的。
- gzip,bzip2,xz:压缩文件;tar:压缩文件和目录。
- 一、压缩文件的用途与技术
- 二、Linux 系统常见的压缩指令:eg.tar.gz与eg.gz文件的解压指令是不同的
- 三、打包指令: tar
- 四、XFS文件系统的备份与还原
- 五、光盘写入工具——有需要的时候再补充上
- 六、其他常见的压缩与备份工具
- 七、重点回顾
- 八、关键习题
注:Linux底下的扩展名是没有什么特殊意义的。
gzip,bzip2,xz:压缩文件;tar:压缩文件和目录。
一、压缩文件的用途与技术
(1)压缩技术是啥?
解释1:
解释2:
(2)压缩比
压缩后与压缩的文件所占用的磁盘空间大小, 就可以被称为是『压缩比』。
二、Linux 系统常见的压缩指令:eg.tar.gz与eg.gz文件的解压指令是不同的
(1) Linux 文件的属性基本上是与文件名没有绝对关系的。
(2)Linux 上常见的压缩指令就是 gzip, bzip2 以及最新的 xz
1.gzip:能解开eg.zip和eg.gz
(1)没有-k选项,所以压缩和解压的时候不能保留源文件
(2)指令的语法如下:
(3)压缩:gzip 文件名;解压:gzip -d 文件名
说明:
(a)当你使用 gzip 进行压缩时, 在预设的状态下原本的文件会被压缩成为 .gz 的档名,源文件就不再存在了。
(b)使用 gzip 压缩的文件在 Windows 系统中,竟然可以被 WinRAR/7zip 这个软件解压缩呢!
(c)虽然 gzip 提供 1~9 的压缩等级,不过使用默认的 6 就非常好用了!
(4)zcat/zmore/zless/zgrep的使用
说明:
(a)读取压缩文件里面的内容
cat/more/less 可以使用不同的方式来读取纯文本档,那个 zcat/zmore/zless 则可以对应于cat/more/less 的方式来读取纯文本档被压缩后的压缩文件!
(b)从压缩文件中查找数据
如果你还想要从文字压缩文件当中找数据的话, 可以透过 egrep 来搜寻关键词喔!而不需要将压缩文件解开才以 grep 进行! 这对查询备份中的文本文件数据相当有用!
2.bzip2, 能解开eg.bz2文件
(1)有-k选项,所以压缩和解压的时候能保留源文件
(2)指令的用法
(3)压缩:bzip2 -k 文件名;解压缩:bzip2 -d -k 文件名
(4)bzcat/bzmore/bzless/bzgrep
3.xz,能解开eg.xz文件
(1)有-k选项,所以压缩和解压的时候能保留源文件
(2)指令介绍如下
(2)压缩:xz -k 文件名;解压缩:xz -d -k 文件名
(3)xzcat/xzmore/xzless/xzgrep
xz 最大的问题是…时间花太久了!如果你曾经使用过 xz 的话,应该会有发现,他的运算时间真的比 gzip 久很多喔!
三、打包指令: tar
- tar 可以将多个目录或文件打包成一个大文件
- 还可以透过 gzip/bzip2/xz 的支持,将该文件同时进行压缩!
- 目前 Windows 的 WinRAR 也支持 .tar.gz 档名的解压缩呢!
2.压缩和解压能保留原始文件
3.指令介绍如下
4.记忆tar指令
(1)压 缩: tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
(2)查 询: tar -jtv -f filename.tar.bz2
(3)解压缩: tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
(4)
- 那个 filename.tar.bz2 是我们自己取的档名, tar 并不会主动的产生建立的档名喔!
- 如果不加 [-z|-j|-J] 的话,档名最好取为 *.tar 即可。
- 如果是 -j 选项,因此档名最好就取为 *.tar.bz2 ;如果是 -z 选项,那档名最好取为 *.tar.gz 喔!
- 建议您在学习 tar 时,将『-f filename 』与其他选项独立出来,会比较不容易发生问题。
5.使用 tar备份 /etc/ 目录:一定要root权限
(1)-z选项
(2)-j选项
(3)-J选项
说明:加上『-p 』这个选项的原因是为了保存原本文件的权限与属性!
同样的,在备份重要的系统数据时,这些原本文件的权限需要做完整的备份比较好。
(4)查看目录是多少Mbit:du -sm /etc
6.查阅 tar 文件的数据内容
(1)eg
(2)从上面的数据我们可以发现一件很有趣的事情,那就是每个文件名都没了根目录了!?
7.将tar解压到特定的目录:-C选项
(1)本目录下进行解压缩
(2)解压到特定的目录
如果要删除这两个目录
8.仅解开单一文件的方法
(1)很简单的,你只要使用 -jtv 找到你要的档名,然后将该档名解开即可。
9.打包某目录,但不含该目录下的某些文件:–exclude
(1)假设我们想要打包 /etc/ /root 这几个重要的目录,但却不想要打包 /root/etc* 开头的文件,而且假设这个新的打包文件要放置成为 /root/system.tar.bz2 。
说明:
(a)上面的指令是一整列的~其实你可以打成:『tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* --exclude=/root/system.tar.bz2 /etc /root』。
(b)如果想要两行输入时,最后面加上反斜杠 () 并立刻按下[enter] , 就能够到第二行继续输入了。
(c)–exclude=“file” 的动作,我们可以将几个特殊的文件或目录移除在打包之列。
10.仅备份比某个时刻还要新的文件: --newer-mtime
(1)某些情况下你会想要备份新的文件而已,并不想要备份旧文件!此时 --newer-mtime 这个选项就粉重要啦!–newer-mtime 则仅是 mtime 而已!
(2)
说明:
如果我在一个月前才进行过一次完整的数据备份, 那么这个月想要备份时,当然可以仅备份上个月进行备份的那个时间点之后的更新的文件即可!
11.基本名称: tarfile, tarball
(1)如果仅是打包而已,就是『tar -cv -f file.tar 』而已,这个文件我们称呼为 tarfile 。
(2)如果还有进行压缩的支持,例如『tar -jcv -f file.tar.bz2 』时,我们就称呼为 tarball
(3)此外, tar 除了可以将资料打包成为文件之外,还能够将文件打包到某些特别的装置去.
eg:
磁带机由于是一次性读取/写入的装置,因此我们不能够使用类似cp 等指令来复制的! 那如果想要将 /home, /root, /etc 备份到磁带机 (/dev/st0) 时,就可以使用:『tar -cv -f /dev/st0 /home /root /etc』
12.利用管线命令与数据流
(1)在 tar 的使用中,有一种方式最特殊,那就是透过标准输入输出的数据流重导向(standard input/standard output), 以及管线命令 (pipe) 的方式,将待处理的文件一边打包一边解压缩到目标目录去。
说明:
13.如何建立一个备份文件夹
要求如下:
/home/loop* 不需要备份,而且 /root 底下的压缩文件也不需要备份,另外假设你要将备份的数据放置到 /backups ,并且该目录仅有 root 有权限进入!此外,每次备份的档名都希望不相同,例如使用: backup-system-20150701.tar.bz2 之类的
档名来处理。
14.解压缩后的 SELinux 问题
(1)出现的问题是
(2)解决办法
四、XFS文件系统的备份与还原
1.XFS文件系统备份:xfsdump
(1)CentOS 7 已经使用 XFS 文件系统作为默认值
(2)xfsdump:
- 可以进行文件系统的完整备份 (full backup)
- 还可以进行累积备份 (Incremental backup)
(3)第一次备份一定是完整备份
实时文件系统的eg
(4) 使用xfsdump 的限制
(5)sfxdump选项
注意:
(i)所以你不能用 xfsdump去备份 /etc !
-
因为 /etc 从来就不是一个独立的文件系统!xfsdump 预设仅支持文件系统的备份,并不支持特定目录的备份~
-
如何区别文件系统和目录?
注意文件系统一定是个挂载点
(ii)用 xfsdump 备份完整的文件系统
说明:
- 这样很简单的就建立起来 /srv/boot.dump 文件,该文件将整个 /boot/ 文件系统都备份下来了!
- 备份的相关信息 (文件系统/时间/session ID 等等) 写入 /var/lib/xfsdump/inventory 中
(iii)用 xfsdump 进行累积备份 (Incremental backups)
你一定得要进行过完整备份后 (-l 0) 才能够继续有其他累积备份 (-l 1~9) 的能耐。
注:上面的-l不是-1
在下面,可以清楚的看到仅仅备份的是差异文件。
2.XFS 文件系统还原 xfsrestore
(1)xfsrestore指令的选项:
(2)用 xfsrestore 观察 xfsdump 后的备份数据内容
-
要找出 xfsdump 的内容就使用 xfsrestore -I 来查阅即可!不需要加任何参数!
-
因为 xfsdump 与xfsrestore 都会到 /var/lib/xfsdump/inventory/ 里面去捞数据来显示的!
-
这个查询重点是找出到底哪个文件是哪个挂载点?而该备份档又是什么 level 等等的!
(3)简单复原 level 0 的文件系统
(i)如何将/boot整个复原到最原本的状态?
其实很简单,我们只要知道想要被复原的那个文件, 以及该文件的 session label name,就可以复原啦!
(ii)我们从上面的观察已经知道 level 0 的 session label 是『boot_all』啰!
那整个流程是这样:
(iii)将备份资料在 /tmp/boot 底下解开!diff -r 可以比较两个目录内的文件差异!
说明:
- 因为原本 /boot 里面的东西我们没有删除,直接复原的结果就是:『同名的文件会被覆盖,其他系统内新的文件会被保留』喔!所以, 那个 /boot/testing.img 就会一直在里头。
- diff -r 可以比较两个目录内的文件差异!
(iii)仅复原备份档内的 grub2 到 /tmp/boot2/ 里头去:-s选项的使用
(iiii)复原累积备份资料
如果备份数据是由 level 0 -> level 1 -> level 2… 去进行的:
**当然复原就得要相同的流程来复原!**因此当我们复原了 level 0 之后,接下来当然就要复原level 1 到系统内啊!
(iiii)仅还原部分文件的 xfsrestore 互动模式:-i选项
举例来说,我们想要知道 level 0 的备份数据里面有哪些东西,然后再少量的还原回来的话!
五、光盘写入工具——有需要的时候再补充上
1.mkisofs:建立映像档
2.cdrecord:光盘刻录工具
六、其他常见的压缩与备份工具
1.dd:可以对文件,文件系统,分区sector进行备份
(1)dd指令除了制作一个文件外,最大的功效是:备份。
因为 dd 可以读取磁盘装置的内容(几乎是直接读取扇区"sector"),然后将整个装置备份成一个文件呢!
(2)指令选项
(3)
(4)
(5)利用USB安装Linux要强调!!!
(6)将你的 /boot 整个文件系统透过 dd 备份下来
(7)dd与sfxdump备份文件系统的区别
- 因为默认 dd 是一个一个扇区去读/写的,而且即使没有用到的扇区也会倍写入备份档中! 因此这个文件会变得跟原本的磁盘一模一样大!不像使用xfsdump 只备份文件系统中有使用到的部份。
- dd 就是因为不理会文件系统, 单纯有啥纪录啥,因此不论该磁盘内的文件系统你是否认识,它都可以备份、还原的!
(8)用dd将/dev/vda2的所有数据复制到一个新建的分区上面
说明:
2.cpio:可以备份任何东西,包括设备文件
(1)指令介绍如下:
因为 cpio 会将数据整个显示到屏幕上,因此我们可以透过将这些屏幕的数据重新导向 (>) 一个新的文件!
(2)cpio 得要配合类似 find 等可以找到文件名的指令来告知 cpio 该被备份的数据在哪里啊!
说明:为啥鸟哥要先转换目录到 / 再去找 boot 呢?
强调:cd /root也就是cd ~,这是最底层的目录。cd /才是常用的目录树!!!
eg:cd ~完了之后,再cd /,就进入了常用的目录树了。鸟哥也没有抓取cd ~下的root,也怕出问题,抓取的是cd /下的root相关文件
(3)将刚刚的文件给他在 /root/ 目录下解开
(4)其实系统里面已经含有一个使用 cpio 建立的文件喔!
那就是 /boot/initramfs-xxx 这个文件啦!现在让我们来将这个文件解压缩看看,看你能不能发现该文件的内容为何?
七、重点回顾
(1)压缩指令为透过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁盘容量。 压缩前与压缩后的文件所占用的磁盘容量比值, 就可以被称为是『压缩比』
(2) 压缩的好处是可以减少磁盘容量的浪费,在 WWW 网站也可以利用文件压缩的技术来进行数据的传送,好让网站带宽的可利用率上升喔
(3)压缩文件案的扩展名大多是:『*.gz, *.bz2, *.xz, *.tar, *.tar.gz, *.tar.bz2, *.tar.xz』
(4)常见的压缩指令有 gzip, bzip2, xz。压缩率最佳的是 xz,若可以不计时间成本,建议使用 xz 进行压缩。
(5)tar 可以用来进行文件打包,并可支持 gzip, bzip2, xz 的压缩。
(6)压 缩: tar -Jcv -f filename.tar.xz 要被压缩的文件或目录名称
(7)查 询: tar -Jtv -f filename.tar.xz
(8)解压缩: tar -Jxv -f filename.tar.xz -C 欲解压缩的目录
(9) xfsdump 指令可备份文件系统或单一目录
(10)xfsdump 的备份若针对文件系统时,可进行 0-9 的 level 差异备份!其中 level 0 为完整备份;
(11)xfsrestore 指令可还原被 xfsdump 建置的备份档;
(12)要建立光盘刻录数据时,可透过 mkisofs 指令来建置;
(13)可透过 wodim 来写入 CD 或 DVD 刻录机
(14) dd 可备份完整的 partition 或 disk ,因为 dd 可读取磁盘的 sector 表面数据
(15)cpio 为相当优秀的备份指令,不过必须要搭配类似 find 指令来读入欲备份的文件名数据,方可进行备份动作。
八、关键习题