分享页面

Centos系统文件归档与压缩(tar)

发布时间:2021-07-12 09:19

centos系统如何文件归档与压缩?本教程以centos7系统为例

本配置适用于centos67版本

1.tar

1.1命令与参数

用法:tar [参数] [压缩文件名] [要压缩的文件]
使用参数时,可以不使用

-c create,创建文件

-x extract,提取解压还原文件

-v 显示执行显示过程

-f 指定备份文件

-t 列出备份文件内容,不解包查看包中的内容

-C 指定解包位置

-z --gzip,以gzip方式压缩 扩展名:tar.gz

-j 以bz2方式压缩 扩展名:tar.bz2

-J 以xz方式压缩 扩展名:tar.xz

1.2归档例子

打包/etc/hosts文件

[root@liang ~]# tar cvf hosts.tar /etc/hosts

tar: Removing leading `/' from member names

/etc/hosts

[root@liang ~]# ll hosts.tar

-rw-r--r--. 1 root root 10240 Sep 14 20:16 hosts.tar

在使用绝对路径进行压缩时,将默认从文件名中删除该路径中前面的/符号,这样揭阳时,会直接解压到当前目录,不然会覆盖掉原系统中的路径文件。

指定路径解包

[root@liang ~]# tar xvf hosts.tar -C /opt/

etc/hosts

[root@liang ~]# ll /opt/etc/

total 4

-rw-r--r--. 1 root root 158 Jun 7 2013 hosts

打包多个文件

[root@liang ~]# tar cvf all.tar /etc/hosts /opt/etc/ /etc/passwd

tar: Removing leading `/' from member names

/etc/hosts

/opt/etc/

/opt/etc/hosts

/etc/passwd

[root@liang ~]# ll all.tar

-rw-r--r--. 1 root root 10240 Sep 14 20:25 all.tar

不解包文件的情况下,查看包有什么文件

[root@liang ~]# tar -tvf all.tar

-rw-r--r-- root/root 158 2013-06-07 10:31 etc/hosts

drwxr-xr-x root/root 0 2018-09-14 20:23 opt/etc/

-rw-r--r-- root/root 158 2013-06-07 10:31 opt/etc/hosts

-rw-r--r-- root/root 1040 2018-08-15 13:36 etc/passwd

打包多目录

[root@liang ~]# tar cvf dir.tar /etc/ /var/

[root@liang ~]# ll dir.tar

-rw-r--r--. 1 root root 149657600 Sep 14 20:29 dir.tar

1.3打包加压缩

1:以gzip进行压缩

[root@liang ~]# tar zcvf hosts.tar.gz /etc/hosts

tar: Removing leading `/' from member names

/etc/hosts

对比不压缩的包大小

[root@liang ~]# du -h hosts.*

12K hosts.tar

4.0K hosts.tar.gz

解压

[root@liang ~]# tar zxvf hosts.tar.gz

etc/hosts

2:以bz2方式压缩

[root@liang ~]# tar jcvf hosts.tar.bz2 /etc/hosts

tar: Removing leading `/' from member names

/etc/hosts

tar (child): bzip2: Cannot exec: No such file or directory

tar (child): Error is not recoverable: exiting now

tar: Child returned status 2

tar: Error is not recoverable: exiting now

报错:是因为没有bzip2的解压工具,需要安装

解决 yum install bzip2 -y

[root@liang ~]# tar jcvf hosts.tar.bz2 /etc/hosts

tar: Removing leading `/' from member names

/etc/hosts

解压

[root@liang ~]# tar jxvf hosts.tar.bz2

etc/hosts

例3:以xz方式压缩

[root@liang ~]# tar Jcvf hosts.tar.xz /etc/hosts

tar: Removing leading `/' from member names

/etc/hosts

解压

[root@liang ~]# tar Jxvf hosts.tar.xz

etc/hosts

1.4对比三种打包方式的大小与速度

对比速度

[root@liang ~]# time tar zcvf etc.tar.gz /etc/

real 0m0.868s

user 0m0.740s

sys 0m0.099s

[root@liang ~]# time tar jcvf etc.tar.bz2 /etc/

real 0m2.037s

user 0m1.933s

sys 0m0.078s

[root@liang ~]# time tar Jcvf etc.tar.xz /etc/

real 0m9.828s

user 0m9.577s

sys 0m0.193s

time命令输入解释

real: 表示程序整个的运行耗时。可以理解为命令运行开始时刻你看了一下手表,命令运行结束时,你又看了一下手表,两次时间的差值就是本次real 代表的值

user:这个时间代表的是命令运行在用户态的cpu时间

sys: 这个时间代表的命令是运行在核心态的cpu时间

%cpu_usage = (user_time   sys_time)/real_time * 100%

我们这里只看速度的话,tar.gz最快,bz2次之。

对比大小

[root@liang ~]# du -sh /etc/

22M /etc/

[root@liang ~]# du -h etc*

6.0M etc.tar.bz2

6.9M etc.tar.gz

5.0M etc.tar.xz

压缩时间越久,效率就越高。

2.zip

2.1命令参数

需要安装

[root@liang ~]# yum install zip unzip -y
zip 压缩命令
unzip 解压命令

参数:
-r
递归压缩,压缩目录
-d
指定加压位置

2.1例子

压缩hosts

[root@liang ~]# zip hosts.zip /etc/hosts

adding: etc/hosts (deflated 65%)

[root@liang ~]# du -h hosts.zip

4.0K hosts.zip

解压

[root@liang ~]# unzip hosts.zip

Archive: hosts.zip

inflating: etc/hosts

3.gzip、bzip2、xz压缩工具



3.1gzip、bzip2、xz的使用

[root@liang test]# touch test01

[root@liang test]# gzip test01

[root@liang test]# ls

test01.gz

解压

[root@liang test]# gzip -d test01.gz

[root@liang test]# ls

test01

只能对文件进行压缩,且压缩后源文件会消失,一般不适用

bzip2,xz这两个工具可以通过添加参数-k来保留源文件

bzip2

[root@liang test]# touch test02

[root@liang test]# bzip2 -k test02

test01.gz test02 test02.bz2

解压

[root@liang test]# rm -f test02

[root@liang test]# ls

test01 test02.bz2

[root@liang test]# bzip2 -d test02.bz2 -k

[root@liang test]# ls

test01 test02 test02.bz2

xz

[root@liang test]# xz -k test03

[root@liang test]# ls

test01 test02 test02.bz2 test03 test03.xz

[root@liang test]# rm -f test03

[root@liang test]# xz -d test03.xz -k

[root@liang test]# ls

test01 test02 test02.bz2 test03 test03.xz

本文导读