第三单元 文件压缩与磁盘管理
3.1 Linux文件压缩
3.1.1 压缩文件的用途与技术
你是否有过文件文件太大,导致无法以正常的 email 方式发送出去 (很多 email 都有容量大约 25MB 每封信的限制啊!)
还有,你是否有过要备份某些重要数据,偏偏这些数据量太大了,耗掉了你很多的磁盘空间呢? 这个时候,那个好用的“文件压缩”技术可就派的上用场了!
压缩文件的好处主要有节省空间和方便传输两个。
3.1.2 Linux**系统常见的压缩命令**
在Linux的环境中,压缩文件的扩展名大多是:“.tar, .tar.gz, .tgz, .gz, .Z, .bz2, *.xz”,为什么会有这样的扩展名呢?
这是因为 Linux 支持的压缩指令非常多,且不同的指令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件啰。 下面我们就列出几个常见的压缩文件扩展名吧:
Linux上常见的压缩指令就是 gzip, bzip2 以及最新的 xz。还有 tar 可以将很多文件“打包”成为一个文件!如此一来提供使用者更方便并且更强大的压缩与打包功能!
3.1.3 压缩命令之gzip
gzip 可以说是应用度最广的压缩指令了!目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件。 至于 gzip 所创建的压缩文件为 *.gz 的文件名!让我们来看看这个指令的语法吧:
语法: gzip [OPTION]... [FILE]...
选项:
-c 将压缩数据输出到标准输出中,并保留源文件。
-d 对压缩文件进行解压缩,与gunzip相同
-r 递归压缩指定目录下以及子目录下的所有文件。
-v 对于每个压缩和解压缩的文件,显示相应的文件名和压缩比。
-l 对每一个压缩文件,显示以下字段:
压缩文件的大小;
未压缩文件的大小;
压缩比;
未压缩文件的名称。
-数字 用于指定压缩等级,-1 压缩等级最低,压缩比最差;-9 压缩比最高。默认压缩比是 -6。
示例:
1、压缩文件:
# gzip test1.txt
2、解压缩文件:
# gzip -d test1.txt.gz
3.1.4 压缩命令之bzip2
若说 gzip 是为了取代 compress 并提供更好的压缩比而成立的,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的。 bzip2 真是很不错用的东西~这玩意的压缩比竟然比 gzip 还要好~至于 bzip2 的用法几乎与 gzip 相同!
语法: bzip2 [OPTION]... [FILE]...
选项:
-k(keep) 在压缩或解压时,保留输入文件。
-d(decompress) 将压缩文件进行解压缩,与gunzip功能相同
3.1.5 压缩命令之xz
虽然 bzip2 已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了 xz 这个压缩比更高的软件!
用法: xz [OPTION]... [FILE]...
选项:
-d 解压缩
-k 保留(不要删除)输入文件
-l 列出有关.xz文件的信息
3.1.6 压缩命令之tar
前一小节谈到的指令大多仅能针对单一文件来进行压缩,虽然 gzip, bzip2, xz 也能够针对目录来进行压缩,不过, 这两个指令对目录的压缩指的是“将目录内的所有文件 "分别" 进行压缩”的动作!而不像在 Windows 的系统,可以使用类似
这种将多个文件或目录包成一个大文件的指令功能,我们可以称呼他是一种“打包指令”啦! 那 Linux 有没有这种打包指令呢?是有的!那就是鼎鼎大名的 tar 这个玩意儿了! tar 可以将多个目录或文件打包成一个大文件,同时还可以通过 gzip/bzip2/xz 的支持,将该文件同时进行压缩! 更有趣的是,由于 tar 的使用太广泛了,目前 Windows 的 WinRAR 也支持 .tar.gz 文件名的解压缩呢! 很不错吧!所以下面我们就来玩一玩这个咚咚!
用法: tar [选项...] [FILE]...
选项:
-j, --bzip2 通过 bzip2 过滤归档
-c, --create 创建一个新归档
-x, --extract, --get 从归档中解出文件
-f, --file=ARCHIVE 使用归档文件或 ARCHIVE 设备
-z, --gzip, --gunzip, --ungzip 通过 gzip 过滤归档
-C, --directory=DIR 改变至目录 DIR
-v, --verbose 详细地列出处理的文件
-t, --list 列出归档内容
示例:
对目录进行压缩
# tar -zcvf jiyun.tar.gz jiyun
查看目录压缩内容
# tar -tvf jiyun.tar.gz
3.2Linux磁盘与文件系统管理
3.2.1磁盘特点
磁盘(disk)是指利用磁记录技术存储数据的存储器。
磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。
3.2.2 磁盘与目录的容量
查看磁盘使用情况:df命令
语法:df [选项] [目录或文件名]
选项:
-a:列出所有的文件系统,包括系统特有的 /proc 等文件系统;
-k:以 KBytes 的容量显示各文件系统;
-m:以 MBytes 的容量显示各文件系统;
-h:以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-H:以 M=1000K 取代 M=1024K 的进位方式;
-T:连同该 partition 的 filesystem 名称 (例如 xfs) 也列出;
-i:不用磁盘容量,而以 inode 的数量来显示
命令输出显示说明:
-
Filesystem:代表该文件系统是在哪个 partition ,所以列出设备名称;
-
1k-blocks:说明下面的数字单位是 1KB !可利用 -h 或 -m 来改变容量;
-
Used:顾名思义,就是使用掉的磁盘空间
-
Available:也就是剩下的磁盘空间大小;
-
Use%:就是磁盘的使用率
-
Mounted on:就是磁盘挂载的目录所在
查看文件或目录大小:du命令
du [选项] 文件或目录名称
选项:
-a:列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已。
-h:以人们较易读的容量格式 (G/M) 显示;
-s:列出总量而已,而不列出每个各别的目录占用容量;
-S:不包括子目录下的总计,与 -s 有点差别。
-k:以 KBytes 列出容量显示;
-m:以 MBytes 列出容量显示;
3.2.3 磁盘的分区、格式化、校验与挂载**
磁盘分区:主分区、扩展分区、逻辑分区概念
主分区
主分区数量至少1个,最多4个(如果存在扩展分区,则最多3个)。主分区可以直接使用,主分区本身不能继续分区,一个主分区就是一个逻辑磁盘。
扩展分区
扩展分区0个或1个,会占用一个主分区号,不能直接使用,必须在其上建立逻辑分区后才能用。 其实就是把1个主分区拿过来进行分区扩展了。
逻辑分区
逻辑分区可以若干个,通过扩展分区建立,可以直接使用,扩展分区的容量是所有逻辑分区容量之和(如果扩展分区被完全使用的话)
对磁盘进行分区
查看当前磁盘列表
# fdisk -l
对新磁盘进行分区操作
# fdisk /dev/sda
p: 显示当前硬件的分区,包括没保存的
n:创建新分区
d:删除一个分区
w:保存退出
q:不保存退出
t:修改分区类型
l:显示所有支持的所有文件系统类型
查看新磁盘分区是否加载
# cat /proc/partitions
新磁盘分区刷新加载(因为有可能内核没有识别到)
# partprobe /dev/sdb 或 #partx
对分区磁盘进行格式化
mkfs
语法:mkfs [选项] [-t <类型>] [文件系统选项] <设备> [<大小>]
选项:
-t, --type=<类型> 文件系统类型;若不指定,将使用 ext2
mke2fs
选项:
-j:创建ext3类型文件系统
-b:指定块大小,默认为4096;可用取值为1024/2048或4096
-L:指定分区卷标
-m:指定预留给超级用户的块数百分比
-i:用于指定为多少字节的用户空间创建一个inode,默认为8192,这里给出的数值应该为块大小的2n倍
blkid:查询或查看磁盘设备的相关属性
UUID
TYPE
LABLE
fsck:检查并修复Linux文件系统
-a:自动修复
挂载和卸载文件系统
语法:mount 设备 挂载点
设备:
设备文件:/dev/sda5
卷标:LABEL=""
UUID:UUID=""
挂载点:必须是目录
要求:
1、此目录没有被其他进程使用
2、目录必须存在
3、目录中的原有文件内容将会暂时隐藏
选项:
-a:表示挂载/etc/fstab文件中定义的所有文件系统
-t:指定正在挂载设备上的文件系统类型,不使用时,mount会调用blkid命令获取对应文件系统的类型
-r:只读挂载,挂载光盘是常用此选项
-w:读写挂载
umount:卸载文件系统
umount 挂载点或设备
卸载注意事项:
挂载的设备没有进程使用
fuser:在卸载国产中可以通过fuser查看进程占用情况
fuser -v 挂载点
fuser -km 挂载点 #取消挂载点的所有进程
3.2.4 内存交换分区创建
1、fdisk创建磁盘分区,磁盘分区类型为swap类型
2、格式化交换分区
# mkswap [选项] 设备
3、启动、关闭swap分区
# swapon 设备 #开启swap
# swapoff 设备 #关闭swap
3.2.5 free命令&dd命令
dd命令:
if:数据来源
of:数据存储目录
bs
count
3.2.6 设置磁盘开机自动挂载
文件系统的配置文件/etc/fstab,配置参数说明:
# cat /etc/fstab
/dev/mapper/centos-root / xfs defaults 0 0
从内容来看一共六列,分别是:
第一列 Device:磁盘设备文件或者该设备的Label或者UUID
第二列 Mount point:挂载的设备点,就是你要挂载到那个目录下
第三列 filesystem:磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等
第四列 parameters:文件系统的参数,使用defaults就可以,只有光盘选择ro
第五列:能否被dump备份命令作用,0:代表不要做dump备份;1:代表要每天进行dump的操作 2:代表不定日期的进行dump操作
第六列:是否检验扇区,开机的过程中,系统默认会以fsck检验我们系统是否为完整;0:不要检验;1:
最早检验(一般根目录会选择)2:1级别检验完成之后进行检验
3.3 crontab**计划任务**
3.3.1 crontab是什么?
crontab是一个用于设置周期性被执行的任务的工具。
由于各字段的作用不同,其取值范围也不一样,当使用“*”时表示取值范围中的任意时间。Crontab任务配置记录中所设置的命令操作将在”分钟”+“小时”+“日期”+“月份”+“星期”都满足的条件下执行。
除了“*”以外,还可以使用“-”减号、“,”逗号,“/”斜杠与数字构成表达式来表示较复杂的时间关系
3.3.3crontab命令管理用户的计划任务
crontab 命令的选项
选项:
-u指定一个用户
-l列出某个用户的任务计划
-r删除某个用户的任务(不添加用户即删除所有的任务)
-e编辑某个用户的任务
示例:
1、编辑一个任务,每天的9:01把/home/test目录复制到/opt目录下,编辑好以后保存退出,用crontab -l查看任务。
1 9 * * * /usr/bin/cp -ra /home/test /opt
2、在编辑一个任务,每隔五天备份/etc目录中的所有文件到/opt目录中,压缩包名称是bak.tar.gz。同样,用crontab -l查看任务。
0 * */5 * * /usr/bin/tar -zcvf /opt/bak.tar.gz /etc/*
3、每月1、10、22日的4 : 45重启apache
4、每一小时重启apache