linux基础之文件管理

2018-07-25  本文已影响0人  ivan_cq

一、文件与文件系统的打包与压缩

压缩技术的原理:我们知道计算机中存储的单位最小的是bit,而我们常用的是byte,而1byte=8bit。那么当我们存储一个数字1时,计算机会以字节的形式存储,那么用二进制表示00000001,我们发现0不起任何作用,那么压缩技术就是把这些没有用到的空间利用起来。
注意:压缩的后的文件是无法被操作系统直接使用的,需要解压缩

**压缩比:压缩前与压缩后的文件所占

.gz gzip程序压缩的文件
.bz2 bzip2程序压缩的文件
.tar tar程序打包的数据,并没有被压缩过
.tar,gz tar程序打包后的文件,经过gzip的压缩
.tar.bz2 tar程序打包后的文件,经过bzip2程序的压缩
tar程序仅仅是将很多文件打包成一个文件,本来没有压缩的功能,后来在GNU计划中加入了压缩的功能。


注意:可以解压zip,compress,gzip压缩过的文件,也可以使用gzip压缩文件,在windows中可以用winrar解压。使用cat可以读取纯文本文件,而使用zcat可以读取纯文本文件压缩后的文件。

gzip +(-cdtv#) 文件名
zcat 文件名.gz

使用gzip 加文件名默认直接压缩成文件名.gz格式。

[root@localhost tmp]# ls
1  cq  nn.gz

使用gzip -d 文件名.gz,解压文件

[root@localhost tmp]# ls
1  cq  nn
[root@localhost tmp]# gzip nn
[root@localhost tmp]# ls
1  cq  nn.gz
[root@localhost tmp]# gzip -d nn.gz 
[root@localhost tmp]# ls
1  cq  nn

使用gzip -v 文件名,显示压缩比并且压缩文件生成文件名.gz

[root@localhost tmp]# gzip -v nn 
nn:  61.9% -- replaced with nn.gz
[root@localhost tmp]# ls
1  cq  nn.gz

使用zcat +文件名.gz,查看已经压缩的文件。

[root@localhost tmp]# zcat nn.gz 
# 
#
# This file is used by the man-db package to configure the man and cat paths.
# It is also used to provide a manpath for those without one by examining
# their PATH environment variable. For details see the manpath(5) man page.

gzip + -num(1-9) -c 文件名 > 文件名.gz
用指定的压缩比压缩文件并且保留原来的文件。-c表示将压缩的数据输出到屏幕。
1-9为压缩的等级,1是最快的压缩方式,而9是最佳的压缩方式。

[root@localhost tmp]# ls
1  cq  nn.gz
[root@localhost tmp]# gzip -9 -c cq > cq.gz
[root@localhost tmp]# ls
1  cq  cq.gz  nn.gz

也可以使用gunzip +文件名.gz解压文件


bzip2 + -z 文件名 表示压缩一个文件
bzip2 + -d 文件名.bz2 表示解压一个文件

[root@localhost tmp]# ls
passwd
[root@localhost tmp]# bzip2 -z passwd 
[root@localhost tmp]# ls
passwd.bz2
[root@localhost tmp]# bzip2 -d passwd.bz2 
[root@localhost tmp]# ls
passwd

bzip2 +-k +文件名 表示不删除原文件压缩,保留原文件压缩。

[root@localhost tmp]# bzip2 -k passwd 
[root@localhost tmp]# ls
passwd  passwd.bz2

使用bzip2 + -9 + -c 文件名 > 文件名.gz
用指定的压缩比压缩并且保留原文件。

[root@localhost tmp]# ls
passwd
[root@localhost tmp]# bzip2 -1 -c passwd  > passwd.bz2
[root@localhost tmp]# ls
passwd  passwd.bz2
[root@localhost tmp]# du -h passwd.bz2 
4.0K    passwd.bz2
[root@localhost tmp]# du -h passwd
4.0K    passwd
[root@localhost tmp]# bzip2 -9 -c passwd  > passwd1.bz2
[root@localhost tmp]# ls
passwd  passwd1.bz2  passwd.bz2
[root@localhost tmp]# du -h passwd1.bz2 
4.0K    passwd1.bz2

使用bzcat+文件名.bz2,查看压缩文件

[root@localhost tmp]# bzcat passwd.bz2 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

使用bunzip2 文件名.bz2代替bzip2 -d 文件名.bz2

[root@localhost tmp]# ls
passwd  passwd1.bz2  passwd.bz2
[root@localhost tmp]# rm -rf passwd
[root@localhost tmp]# bunzip2 passwd.bz2 
[root@localhost tmp]# ls
passwd  passwd1.bz2


首先,需要了解几个重要的参数
[-j | -z] -j表示bzip2的支持,-z表示gzip的支持。
-c,表示打包文件,x表示解压缩。


我们常用tar -zxf 文件名.tar.gz
解压文件,z表示gzip支持,保留原压缩文件进行解压。而使用tar -zxvf ,则会在解压的过程中显示操作的文件名。
使用tar -zxf .tar.gz -C 文件名,解压到指定的地方。
而把z换成j那么就可以用到bzip2支持的文件格式,那么怎样将文件打包压缩成bzip2,gzip支持的文件格式。
注意:使用tar打包压缩文件,默认会保留原文件*

[root@localhost tmp]# tar -jcvf cq.bz2 etc/
[root@localhost tmp]# tar -zcvf cq.tar.gz etc/
注意,压缩后文件名为我们自己创造的需要放在原文件名的前面

综上:
几种常用的解压压缩方式
[root@localhost tmp]# tar -jcf cq.bz2 etc/
[root@localhost tmp]# tar -zcf cq.tar.gz etc/
[root@localhost tmp]# tar -zxf cq.tar.gz
[root@localhost tmp]# tar -zxf cq.tar.gz -C /tmp/
[root@localhost tmp]# tar -jxf cq.bz2

查看压缩文件中的文件名,加上-v会显示具体文件的属性和权限,而只有t的话只会显示压缩操作的文件名。
[root@localhost tmp]# tar -jtvf cq.bz2
[root@localhost tmp]# tar -ztvf cq.bz2

保留文件的属性和权限进行备份
tar -zpcvf /root/etc.tar.gz /etc

特别注意:我们在备份一些重要的文件的时候,打包压缩后的文件路径往往不会带根路径,可以观察我们在打包压缩一个目录的时候会有提示

[root@localhost tmp]# tar -jcvf  /tmp/cq.bz2 /etc/*
tar: 从成员名中删除开头的“/”

此时,解压生成的文件的路径为当前解压后文件所在的目录。

由于我们备份的文件很有可能会被再次使用,如果没有去掉根目录,那么,解压压缩后的文件会自动变成绝对路径,如此一来,你的当前目录的原文件会备覆盖的。
-P参数会使得压缩的文件不删除根目录。


[root@localhost tmp]# dd if=/etc/passwd of=/tmp/passwd
记录了3+1 的读入
记录了3+1 的写出
2005字节(2.0 kB)已复制,0.000168052 秒,11.9 MB/秒
[root@localhost tmp]# ls
cq.bz2  passwd

备份磁盘的第一块扇区

[root@localhost tmp]# dd if=/dev/vda1 of=/tmp/mbr.back bs=512 Count=1

由于很少使用dd,我们仅仅需要了解dd这个命令可以直接从磁盘上备份。
如果我们想要构建两块一样的磁盘的时候,我们可以从旧的分区将所有数据通过dd复制过来,连同各种块一起复制过来。
dd if=/dev/sda of=/dev/sdb完整的复制一块磁盘


上一篇下一篇

猜你喜欢

热点阅读