Linux(6):文件与文件系统的压缩,打包与备份

压缩文件的用途与技术

由于 1 byte = 8 bits ,所以每个byte当中会有8个空格,而每个空格可以是0,1

其实文件里面有相当多的『空间』存在,并不是完全填满的,而『压缩』的技术就是将这些『空间』填满,以让整个文件占用的容量下降。
『压缩过的文件]并无法直接被操作系统所使用的,因此,若要使用这些被压缩过的文件数据,则必须解压缩』将他『还原』回来未压缩前的模样。

压缩比等于压缩后与压缩的文件所占用的磁盘空间大小的比值。

Linux 系统常见的压缩指令

常见的几个压缩拓展名:
Linux(6):文件与文件系统的压缩,打包与备份_第1张图片

gzip,zcat/zmore/zless/zgrep

gzip 可以解开:compress,zip 与 gzip 等软件所压缩的文件。gzip 所建立的压缩文件为 *.gz。

gzip [-cdtc#] 档名

Linux(6):文件与文件系统的压缩,打包与备份_第2张图片可以使用 zcat 读取压缩文件

zcat 档名

cat/more/less 可以使用不同的方式来读取纯文本档;
zcat/zmore/zless 则可以对应于 cat/more/less 的方式来读取纯文本档被压缩后的压缩文件;
由于 gzip这个压缩指令主要想要用来取代compress 的,所以不但 compress 的压缩文件案可以使用gzip 来解开,同时 zcat这个指令可以同时读取compress 与gzip 的压缩文件。
egrep可以用来搜寻关键词:从文字压缩文件当中找数据

bzip2,bzcat/bzmore/bzless/bzgrep

bzip2 [-cdkzv#] 档名
bzcat 档名.bz2

Linux(6):文件与文件系统的压缩,打包与备份_第3张图片
bzip2 压缩时间比 gzip 久,压缩率高。

xz,xzcat/xzmore/xzless/xzgrep

xz [-dtlkc#] 档名
xcat 档名.xz

Linux(6):文件与文件系统的压缩,打包与备份_第4张图片
它可以将 gzip压缩比的21% 进一步优化到 15%。时间久。。。。

打包指令:tar

打包与压缩:

tar [-zl-jl-I] [cv] [-f 待建立的新档名] filename...

查看档名:

tar [-zl-jl-I] [tv] [-f 已有档名]

解压缩:

tar [-zl-jl-I] [xv] [-f 已有档名] [-C 目录]

Linux(6):文件与文件系统的压缩,打包与备份_第5张图片
仅解开单一文件:使用 -jtv 找到要的档名,将该档名解开

tar -jtv -f /root/etc.tar.bz2|gep '要的文档名'
## 找到后,解开
tar -jxv -f 压缩包.tar.baz2 待解开的文档名

打包某目录,但不含某些文件:使用 --exclude

tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc*

仅备份比某个时刻新的文件:使用 --newer-mtime

tar -jcv -f /root/etc.newer.then.paswd.tar.bz2 --newer-mtime="2015/06/17" /etc/*

tar 打包出来的文件有没有进行压缩所得到文件称呼不同:
如果仅是打包而已,就是[tar -cv -f file.tar]而已,这个文件我们称呼为 tarfile
如果还有进行压缩的支持,例如[tar-jcv -f file.tar.bz2]时,称呼为 tarball

在 tar 的使用中,有一种方式最特殊,那就是透过标准输入输出的数据流重导向(standard input/standard output),以及管线命令(pipe)的方式,将待处理的文件一边打包一边解压缩到目标目录去。

tar -cvf - /etc | tar -xvf -
#这个动作有点像是cp -r /etc /tmp
#要注意的地方在于输出档变成-而输入档也变成-,又有一个Ⅰ存在~
#一这分别代表standard output , standard input与管线命令
#简单的想法中,可以将 – 想成是在内存中的一个装置(缓冲区)。

XFS 文件系统的备份与还原

xfsdump 除了可以进行文件系统的完整备份外,还可以进行累积备份。
累积备份:在第一次使用xfsdump进行完整备份后,等过一段时间的文件系统自然运作后,再进行第二次xfsdump时,就可以选择累积备份了,此时新备份的数据只会记录与第一次完整备份所有差异的文件。
第一份备份一定是完整备份,完整备份在 xfsdump 当中被定义为 level 0。第二次备份时,被定义为 level1,比较过后,备份有变化的文件。。。

xfsdump 限制:
1.xfsdump 不支援没有挂载的文件系统备份,所以只能备份已挂载的;
2.xfsdump 必须使用root的权限才能操作(涉及文件系统的关系);
3.xfsdump 只能备份XFS 文件系统;
4.xfsdump 备份下来的数据文件或储存媒体)只能让 xfsrestore 解析
5.xfsdump 是透过文件系统的UUID来分辨各个备份档的,因此不能备份两个具有相同UUID 的文件系统

xfsdump [-L S_label] [-M M_label] [-1 #] [-f 备份档] 待备份资料

Linux(6):文件与文件系统的压缩,打包与备份_第6张图片
特别注意,xfsdump 预设仅支持文件系统的备份,并不支持特定目录的备份
所以不能用 xfsdump去 备份/etc,因为 /etc 从来就不是一个独立的文件系统。

xfsrestore文件系统还原

xfsrestore -I
xfsrestore [-f 备份档] [-L S_label] [-s] 待复原目录
xfsrestore [-f 备份文件] -r 待复原目录
xfsrestore [-f 备份文件] -i 待复原目录

Linux(6):文件与文件系统的压缩,打包与备份_第7张图片

光盘写入工具

文本模式的刻录行为:
1.先将所需要备份的数据建置成为一个映像档(iso),利用 mkisofs 指令来处理;
2.将该映像文件刻录至光盘或 DVD 当中,利用 cdrecord 指令来处理。

mkisofs:建立映像档

mkisofs [-o 映像档] [-Jrv] [-V vol] [-m file] 待备份文件... -graft-point isodir=systemdir ...

Linux(6):文件与文件系统的压缩,打包与备份_第8张图片
光盘的格式一般称为 iso9660,这种格式一般仅支持旧版的 DOS 档名,亦即档名只能以8.3(文件名8个字符,扩展名3个字符)的方式存在。
如果加上 -r 的选项之后,那么文件信息能够被记录的比较完整,可包括 UID/GID 与权限等等。

一般预设的情况下,所有要被加到映像档中的文件都会被放置到映象文件中的根目录,如此一来可能会造成刻录后的文件分类不易的情况。所以,可以使用-graft-point这个选项,当你使用这个选项之后,可以定义位于映像文件中的目录。

可透过wodim来写入CD或DVD 刻录机

其他常见的压缩与备份工具

dd

dd 可以读取磁盘装置的内容(几乎是直接读取扇区"sector"),然后将整个装置备份成一个文件。

dd if="input_file" of="output_file" bs="block size" count="number"

Linux(6):文件与文件系统的压缩,打包与备份_第9张图片

默认 dd 是一个一个扇区去读/写的,而且即使没有用到的扇区也会倍写入备份档中。因此这个文件会变得跟原本的磁盘一模一样大。

dd 可备份完整的 partition 或 disk ,因为 dd 可读取磁盘的 sector 表面数据。

cpio

cpio 可以备份任何东西,包括装置设备文件

cpio -ovcB > [file|device] <=备份
cpio -ivcdu < [file|device] <=还原
cpio -ivct < [file|device] <=察看

Linux(6):文件与文件系统的压缩,打包与备份_第10张图片

cipo 必须要搭配类似 find 指令来读入欲备份的文件名数据

《鸟哥的Linux私房菜-基础篇》学习笔记

你可能感兴趣的:(操作系统,linux,数据库,网络)