• 第三单元 文件压缩与磁盘管理 摩天居士


    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
     

     

  • 相关阅读:
    ImportError: cannot import name 'render_to_response' 解决方法
    python 操作zookeeper详解
    Appium swipe实现屏幕滑动
    Appium 环境配置
    pytest 常用方法介绍
    Allure+pytest 生成测试报告
    Pytest 使用简介
    python 实现线程之间的通信
    python 使用 thrift 教程
    nginx 配置简单反向代理
  • 原文地址:https://www.cnblogs.com/weidongliu/p/16701844.html
Copyright © 2020-2023  润新知