第三单元 文件压缩与磁盘管理

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 的系统,可以使用类似 WinRAR 这一类的压缩软件来将好多数据“包成一个文件”的样式。

这种将多个文件或目录包成一个大文件的指令功能,我们可以称呼他是一种“打包指令”啦! 那 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.2 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
 

 

posted @ 2022-09-17 08:11  摩天居士-谢烟客  阅读(126)  评论(0编辑  收藏  举报