Linux系统文件的压缩与打包详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统文件的压缩与打包详解相关的知识,希望对你有一定的参考价值。

一、Linux系统常见的压缩指令

Linux系统中常见的压缩文件格式:

*.z                 compress程序压缩的文件;
*.zip              zip程序压缩的文件;
*.gz               gzip程序压缩的文件;
*.bz2             bzip2程序压缩的文件;
*.xz               xz程序压缩的文件;
*.tar               tar程序打包的数据,并没有压缩;
*.tar.gz          tar程序打包的数据,并且经过gzip的压缩;
*.tar.bz2        tar程序打包的数据,并且经过bzip2的压缩;
*.tar.xz          tar程序打包的数据,并且经过xz的压缩;

Linux系统常见的压缩指令——gzip

选项和参数:

-c:将压缩的数据输出到屏幕上,可通过数据流量重导向来处理;
-d:解压缩的参数;
-t:可以用来检验一个压缩文件的一致性~看看文件有无错误;
-v:可以显示出原文件/压缩文件的压缩比等信息;
-#:#为数字的意思,代表压缩等级,-1最快,但是压缩比最差,-9最慢,但是压缩比最好,默认是-6。

举例说明:
1.压缩

[root@localhost ~]# cp /etc/passwd /mnt
[root@localhost ~]# gzip -v /mnt/passwd 
/mnt/passwd:     61.1% -- replaced with /mnt/passwd.gz
[root@localhost ~]# ll /etc/passwd /mnt/passwd*
-rw-r--r--. 1 root root 2311 7月  14 19:02 /etc/passwd
-rw-r--r--. 1 root root  923 8月  20 22:34 /mnt/passwd.gz

2查看

[root@localhost ~]# zcat /mnt/passwd.gz 
//将文件信息输出在屏幕上

3.解压

[root@localhost ~]# gzip -d /mnt/passwd.gz 
[root@localhost ~]# ls /mnt
passwd

Linux系统常见的压缩指令——bzip

选项和参数:

-c:将压缩的过程产生的数据输出到屏幕上的;
-d:解压缩的参数;
-k:保留原始文件,而不会删除原始的文件;
-z:压缩的参数(默认值,可以不加)。
-v:可以显示出原文件/压缩文件的压缩比等信息;
-#:#为数字的意思,代表压缩等级,-1最快,但是压缩比最差,-9最慢,但是压缩比最好,默认是-6。

举例说明:
1.压缩

[root@localhost ~]# bzip2 -v /mnt/passwd- 
[root@localhost ~]# ls /mnt
passwd-.bz2

2.查看

[root@localhost ~]# bzcat /mnt/passwd-.bz2 
//将文件信息输出在屏幕上

3.解压

[root@localhost ~]# bzip2 -d /mnt/passwd-.bz2 
[root@localhost ~]# ls /mnt
passwd-

Linux系统常见的压缩指令——xz

选项和参数:

-d:解压缩的参数;
-t:测试压缩文件的完整性,看看有没有错误;
-l:列出压缩文件的相关信息;
-k:保留原本的文件不删除;
-c:将数据由屏幕输出的意思;
-#:#为数字的意思,代表压缩等级,-1最快,但是压缩比最差,-9最慢,但是压缩比最好,默认是-6。

举例说明:
1.压缩

[root@localhost ~]# xz -v /mnt/passwd- 
[root@localhost ~]# ls /mnt
passwd-.xz

2.查看

[root@localhost ~]# xz -l /mnt/passwd-.xz 
//查看文件压缩前后的大小
[root@localhost ~]# xzcat /mnt/passwd-.xz 
//将文件信息显示在屏幕上

3.解压

[root@localhost ~]# xz -d /mnt/passwd-.xz 
[root@localhost ~]# ls /mnt
passwd-

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

dd命令

选项和参数:

if:input file(原文件)也可以是设备;
of:output file(备份后的文件)也可以是设备;
bs:规划的一个block(块)的大小,若未指定则默认是512Bytes(字节);
count:多少块的意思。

举例说明:

[root@localhost ~]# dd if=/dev/zero of=/a/123.txt bs=10M count=5
//将/dev/zero文件中的信息复制到/a目录下创建一个123.txt的文件,一次10M,5次。

cpio命令

备份会用到的选项和参数:

-o:将数据copy输出到文件或设备上;
-B:让默认的Blocks可以增加到5120字节,默认是512字节;
(这样的好处是可以让大文件的储存速度加快)。

还原会使用到的选项和参数:

-i:将数据自文件或设备copy到系统中;
-d:自动创建目录!;
(使用cpio所备份的数据内容不一定会在同一层目录下,因此我们必须要让cpio在还原时可以自动创建新目录,就必须使用“-d”选项);
-u:自动的比较新文件覆盖旧文件;
-t:需结合“-i”选项,可用在查看创建的文件或设备内容时。

一些课共享的选项和参数:

-v:让储存的过程中文件名称可以在屏幕上显示;
-c:一种较新的protable format方式储存。

举例说明:
1.备份

[root@localhost ~]# find /boot | cpio -ocvB > /mnt/boot.cpio
[root@localhost ~]# ls -lh /mnt/boot.cpio 
-rw-r--r--. 1 0 root 140M 8月  20 23:30 /mnt/boot.cpio
//将/boot目录下的所有文件使用cpio的命令复制到/mnt目录下,命名为boot.cpio

2.还原

[root@localhost ~]# cpio -idvc < /mnt/boot.cpio 
//将压缩文件还原到原本的目录中
[root@localhost ~]# find / | cpio -ocvB > /dev/st0      //备份
[root@localhost ~]# cpio -idvc < /dev/st0                  //还原

二、Linux常用的打包命令——tar命令

选项和参数:

-c:创建打包文件,可搭配-v来查看过程中被打包的文件名;
-C:解压时指定释放的目标文件夹。
-f:表示使用归档文件,一般后面要跟被处理的文件名。
-j:调用bzip2程序进行压缩或解压缩。
-p:打包时保留文件及目录的权限。
-P:打包时保留文件和目录的绝对路径。
-t: 列表查看包内的文件。
-v:输出解压/压缩过程的详细信息。
-x:解开.tar格式的包文件。
-z:调用gzip程序进行压缩或解压缩。

关于tar命令的使用说明可以参考博文:使用tar命令进行备份和恢复文档

三、XFS文件系统的备份与还原;

xfs文件系统的备份与还原——xfsdump命令:

xfsdump不支持没有挂载的文件系统,所以只能备份已挂载的;
Xfsdump必须使用root的权限才能操作(涉及文件系统的关系);
Xfsdump只能备份xfs文件系统;
Xfsdump备份下来的数据(文件或存储媒体)只能让xfsrestore解压;
Xfsdump是通过文件系统的UUID来分辨各个备份文件的,因此不能备份两个具有相同UUID的文件系统。

选项和参数:

-L:xfsdump会记录每次备份的session标头,这里可以填写针对此文件系统的简易说明;
-M:xfsdump可以记录存储媒体的标头,这里可以填写此媒体的简易说明。
-l:是L的小写,就是指定等级,有0~9共10个等级,默认为0,即完整备份。
-f:有点类似tar,后面接产生的文件,也可以接例如/dev/st0设备文件名或其他一般文件文件名;
-I:大写的“i”,从/var/lib/xfsdump/inventory 列出目前备份的信息状态。

举例说明:

[root@localhost ~]# xfsdump -l O -L boot_all -Mboot_all -f /srv/boot.dump /boot
//将完整备份的文件名记录成为/srv/boot.dump
//如果不加-L和-M选项进入互动模式
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control
xfsdump: WARNING: most recent level 0 dump was interrupted, but not resuming that dump since resume (-R) option not specified
xfsdump: level 0 dump of localhost.localdomain:/boot
//开始备份本机的/boot系统
xfsdump: dump date: Wed Aug 21 00:04:00 2019
//备份的时间
xfsdump: session id: 2ab52f27-54d8-4cb3-b99f-5f78601afeed
//这次dump的ID
xfsdump: session label: "boot_all"
//简单给予一个名字记忆
//开始备份程序
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: 146934272 bytes
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 146605160 bytes
xfsdump: dump size (non-dir files) : 146370000 bytes
xfsdump: dump complete: 1 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /srv/boot.dump OK (success)
xfsdump: Dump Status: SUCCESS
[root@localhost ~]# xfsdump -I
//查看有没有文件被xfsdump备份过的数据

xfs文件系统的备份与还原——xfsrestore命令:

选项和参数:

-I:大写的“i”跟xfsdump相同的输出!可查询备份数据,包括Label名称和备份时间等;
-f:后面接的就是备份文件!企业中很有可能会接/dev/st0等磁带机!
-L:可用“-I”查询到的数据。在这个选项后输入;
-s:需要接某特定目录,也能复原某一文件或目录;
-r:如果是用文件来存储备份数据,那这个就不需要使用。如果是一个磁盘内有多个文件,需要使用它来达成累积复原;
-i:进入互动模式(一般不需要)
[root@localhost ~]# xfsrestore -I
//查看备份文件数据
[root@localhost ~]# xfsrestore -f /srv/boot.dump -L boot_all /boot
//直接将备份数据覆盖回去

以上是关于Linux系统文件的压缩与打包详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux 系统常用命令汇总 文件打包与压缩

Linux文件系统的压缩与打包

Linux学习笔记—文件与文件系统的压缩与打包(转载)

Linux学习笔记文件与文件系统的压缩与打包

关于文件与文件系统的压缩与打包命令-Linux(笔记)

Linux学习之三:档案与文件系统的压缩与打包