Linux磁盘管理

mac2022-06-30  183

磁盘管理

一. 文件系统挂载

二. 查看磁盘空间

三. 逻辑卷管理

五. 制作镜像文件

六. 磁盘配额

七. 数据打包与压缩

 

磁盘接口:IDESCSISATA

文件系统:是一种对物理空间的组织方式,通常在格式化硬盘时创建。它定义了储存文件的方法和数据结构。

Windows:FAT16FAT32 NTFS

Swap:交换分区,大小取决于物理内存和硬盘空间。一般应大于物理内存,但目前不能超过2GB

 

一. 文件系统挂载: mountumount

1mount命令(手动挂载)

语法mount  [选项]  [设备]  [挂载点]     例子:mount  /dev/sdb  /my/usb

功能:将设备挂载到挂载点处,设备是指要挂载的设备名称,挂载点是指文件系统中已经存在的一个目录名。mount命令的选项及其含义见下表。

-t <文件系统>

-o <选项>

Ext4/xfs

Linux目前常用的文件系统

ro

以只读方式挂载

msdos

Ms-dos的文件系统,即FAT16

rw

以读写方式挂载

vfat

FAT32

Remount

重新挂载已挂载的设备

Iso9660

CD-ROM光盘标准文件系统

User

允许一般用户挂载设备

ntfs

NTFS文件系统

nouser

不允许一般用户挂载设备

atuo

自动检测文件系统

codepage=xxx

代码页

swap

交换分区文件系统

iocharset=xxx

字符集

实例4-1  文件系统挂载

第1步:使用fdisk命令查看磁盘的分区情况,主要是看设备(如/dev/sda)与文件系统之间的对应关系

第2步:使用mkdir/mnt/目录下创建挂载点 

第3步:使用mount将设备/dev/sdc1U盘)挂载到/mnt/usb目录下

 

注意:

(1)Linux会将USB设备识别为第一个没有被硬盘占用的SCSI设备,即如果系统中有一块SCSI硬盘的话(sda),USB会被识别为第2SCSI设备,即sdb

2)光盘为/dev/cdrom

 

2umount命令

语法:umount  [选项]  [设备]  [挂载点]      举例: umount /my/usb

注意:

1)卸载时,当前目录不能在挂载点中,既在当前目录是被挂载设备所在目录时,即便没有对该设备读写,也不允许卸载。

2)在使用umount卸载光驱之前,按下光驱的出仓按钮不会有任何反映。如果卸载时提示设备正忙,表明有进程正在用该光驱,用下列方法卸载:

  fuser –m –v /mnt/cdrom     //查看哪个进程正在使用光盘

  fuser –k /mnt/cdrom        //自动杀死占用cdrom的进程

  umount /mnt/cdrom         //重新卸载

 

3./etc/fstab文件(系统启动时挂载)

/etc/fstab文件内容如下:

最后一列:用来指定如何使用fsck检查硬盘。如果为0,不检查;挂载点为/,值为1,其他都不能写1。如何有分区些值大于1,则检查完根分区后,接着按填写的数字从小到大依次检查,相同数字的同时检查。

 

二. 查看磁盘空间:dfdu

1df命令

语法:df  [选项]  [设备或文件名] 

功能:收集或整理当前已经挂载的全部文件系统的一些统计数据。

实例4-2  磁盘空间的查看

其他示例如下:

# df  -i //inode模式来显示磁盘使用情况

# df  -t  ext3 //显示指定类型磁盘

# df  -ia //列出各文件系统的i节点的使用情况

# df  -T //列出文件系统的类型

2dudisk usage)命令

语法:du  [选项]  [Names…]

功能:统计目录(或文件)所占磁盘空间的大小,显示磁盘空间的使用情况

示例如下:

# du  -hs  Names

# du  -ha  Names //文件和目录都显示

# du  -h  --max-depth=1 //输出当前目录下各个子目录所使用的空间

# du | sort  -nr | less //按照空间大小排序

5.3  查看块设备(包括交换分区)的文件系统类型:blkid

语法:blkid  [选项]  [设备名]

功能:显示当前系统中所以已挂载文件系统的类型

 

[root@localhost 桌面]# blkid //列出当前系统中所以已挂载文件系统的类型

/dev/sda2: LABEL="rhel7" UUID="50ce223f-a1c2-4b6c-9288-448cb9ed34e8" TYPE="xfs" 

/dev/sda3: UUID="a7a028b9-1f6f-4261-ab4d-d2333b7de75f" TYPE="ext4" 

/dev/sda4: UUID="5A54CD0554CCE53B" TYPE="ntfs" 

/dev/sda5: LABEL="TOOLS" UUID="997E-50D2" TYPE="vfat" 

/dev/sda6: LABEL="DATA" UUID="E63D-7941" TYPE="vfat" 

/dev/sda7: LABEL="SCHOOL" UUID="0A27A8791083E690" TYPE="ntfs" 

/dev/sda8: UUID="904a2335-0e3c-42d2-bc15-2438cea2c044" TYPE="ext3" 

/dev/sda9: UUID="9f98fd30-78db-475b-b68c-e27ba673bdfc" SEC_TYPE="ext2" TYPE="ext3" 

/dev/sda12: UUID="59a9499f-4e9a-4d44-b152-03a14db6bc33" TYPE="ext3" 

/dev/sda13: UUID="8295c378-3cc4-4503-a754-d37d359170eb" TYPE="swap"

示例如下:

# blkid  /dev/sda1 //查看/dev/sda1设备所采用的文件系统类型

# blkid  -s  UUID  /dev/sda5 //显示指定设备UUID

# blkid  -s  UUID //显示所有设备UUID

# blkid  -s  LABEL  /dev/sda5 //显示指定设备LABEL

# blkid  -s  LABEL //显示所有设备LABEL

# blkid  -s  TYPE //使用TYPE标签,查看所有设备文件系统

# blkid  -o  device //显示所有设备

# blkid  -o  list //以列表方式查看详细信息

5.4  实例:安装硬盘和分区

要求:在当前系统增加一张SCSI硬盘,并在其上划分三个主分区,分区1和分区3的文件系统为ext3,分区2为交换分区。

1:增加硬盘后用ls查看该设备被系统识别为第几块硬盘。

2:使用fdisk建立分区表

语法:

fdisk  [选项]  <磁盘>      //更改分区表

fdisk  [选项]  -l <磁盘>     //列出分区表

fdisk -s  <分区>            //给出分区大小(块数)

功能:分割硬盘工具,查看硬盘分区信息。

 

3:建立文件系统

1)使用mkfs建立文件系统xfs

语法:

Mkfs -t  [fstype]  <分区>   

功能:格式化指定的分区。

#mkfs –t xfs /dev/sdb1          //把该设备格式化成xfs文件系统

# mkfs.ext3  /dev/sda4 //把该设备格式化成ext3文件系统 

# mkfs.ext4  /dev/sda4 //把该设备格式化成ext4文件系统 

# mke2fs  -j  /dev/sda4 //把该设备格式化成ext3文件系统 

# mkfs.reiserfs  /dev/sda4 //把该设备格式化成reiserfs文件系统

# mkfs.vfat  /dev/sda4 //把该设备格式化成fat32文件系统 

# mkfs.msdos  /dev/sda4 //把该设备格式化成fat16文件系统 

# mkdosfs  /dev/sda4 //把该设备格式化成fat16文件系统

 

#mkfs .xfs  –f  /dev/sdb1        //把该设备重新格式化成xfs文件系统

(2)使用fsck检查文件系统

语法:

fsck  [选项  [文件系统]   

功能:检查文件系统并尝试修复错误,可同时检查一个或多个文件系统。

文件系统扫描工具有:fsck.ext2fsck.ext3fsck.ext4fsck.xfsfsck.btrfsfsck.msdosfsck.vfatfsck.fatfsck.minixfsck.cramfsfsck.gfs2。最好根据文件系统来调用不同的扫描工具。

# fsck.xfs  -p  /dev/sda8 //扫描并自动修复

注意:一定要把设备umonut后进行,否则会造成文件系统的损坏。

(3)测试分区

将建立的文件系统挂载到相应的目录下,看是否能正常工作

 

按同样的方法在分区3建立xfs文件系统

(4)使用mkswap创建并激活交换分区

语法:

mkswap  [选项  设备 [大小]   

功能:将磁盘分区或文件设为linux的交换区。

# mkswap  /dev/sda8 //创建此分区为swap交换分区

# swapon  /dev/sda8 //加载交换分区

# swapoff  /dev/sda8 //关闭交换分区

# swapon  -s //列出加载的交换分区

(5)配置fstab文件

在fstab文件加入下面几行,让系统在启动时自动加载文件系统

/dev/sdb1   /mnt/web  xfs   defaults 0 2

/dev/sdb3   /mnt/ftp   xfs   defaults 0 2

/dev/sdb2   swap     swap  defaults 0 0

6重新启动系统

如果某个系统出了问题,系统将不能正常启动,而是引导进行救援模式。按下面步骤解决:

①提供root口令,以root身份登录系统

②使用fsck检查并试图修复受损的文件系统

③如果问题依然存在,运行mkfs重新在分区上建立文件系统

④不太幸运的话,可能要使用fdisk重新建立分区表。

 

5.5  逻辑卷管理

5.5.1 逻辑卷管理概述

逻辑卷管理器LVMLogicl Volume Manager),通过使用逻辑卷管理器对硬盘存储设备进行管理,可以实现硬盘空间的动态划分和调整。

5.5.2  逻辑卷管理组成部分

逻辑卷管理由三部分组成:物理卷、卷组、逻辑卷。

物理卷(PV):在逻辑卷管理最底层,可以是实际物理硬盘上的分区,也可以是整个物理硬盘。

卷组(VG):建立在物理卷上,一个卷组中至少包括一个物理卷,在卷组建立后可动态添加物理卷到卷组中。

逻辑卷(LV):建立在卷组之上,卷中未分配空间可用于建立新的逻辑卷,逻辑卷建立后可动态扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

图6-1  逻辑卷管理的组成

5.5.3  实例:在硬盘sda上创建逻辑卷,大小100M,然后把其大小扩展到200M,然后再缩小到150M

1步:首先使用fdisk -lblkid命令确定哪些分区空白

执行fdisk -l命令。下面是笔者电脑上的分区情况,读者一定要根据自己的具体情况判断。

[root@localhost 桌面]# fdisk –l

磁盘 /dev/sda1000.2 GB, 1000204886016 字节,1953525168 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xf0b1ebb0

 

设备      Boot  Start         End         Blocks    Id  System

/dev/sda1       110318355  1953520064   921600855    f  W95 Ext'd (LBA)

/dev/sda2        69353472   110313471    20480000   83  Linux

/dev/sda3        28386855    69352604    20482875   83  Linux

/dev/sda4   *          63    28386854    14193396    7  HPFS/NTFS/exFAT

/dev/sda5       110318418   171766979    30724281    b  W95 FAT32

/dev/sda6       171767043   233215604    30724281    b  W95 FAT32

/dev/sda7       233215668   438028289   102406311    7  HPFS/NTFS/exFAT

/dev/sda8       438028353   642840974   102406311   83  Linux

/dev/sda9       642841038  1052450279   204804621   83  Linux

/dev/sda10     1052450343  1462059584   204804621    b  W95 FAT32

/dev/sda11     1462059648  1871668889   204804621    b  W95 FAT32

/dev/sda12     1871668953  1873725209     1028128+  83  Linux

/dev/sda13     1873725273  1875781529     1028128+  82  Linux swap / Solaris

/dev/sda14     1875781593  1953520064    38869236    b  W95 FAT32

执行blkid命令

[root@localhost 桌面]# blkid

/dev/sda2: LABEL="rhel7" UUID="50ce223f-a1c2-4b6c-9288-448cb9ed34e8" TYPE="xfs"

/dev/sda3: UUID="a7a028b9-1f6f-4261-ab4d-d2333b7de75f" TYPE="ext4"

/dev/sda4: UUID="5A54CD0554CCE53B" TYPE="ntfs"

/dev/sda5: LABEL="TOOLS" UUID="997E-50D2" TYPE="vfat"

/dev/sda6: LABEL="DATA" UUID="E63D-7941" TYPE="vfat"

/dev/sda7: LABEL="SCHOOL" UUID="0A27A8791083E690" TYPE="ntfs"

/dev/sda8: UUID="904a2335-0e3c-42d2-bc15-2438cea2c044" TYPE="ext3"

/dev/sda9: UUID="9f98fd30-78db-475b-b68c-e27ba673bdfc" SEC_TYPE="ext2" TYPE="ext3"

/dev/sda12: UUID="59a9499f-4e9a-4d44-b152-03a14db6bc33" TYPE="ext3"

/dev/sda13: UUID="8295c378-3cc4-4503-a754-d37d359170eb" TYPE="swap"

由上可知:/dev/sda10/dev/sda11/dev/sda14是空白分区。

第2步:在磁盘分区上建立物理卷

# pvcreate  /dev/sda14 //在已经建立好的分区或硬盘上建立物理卷

  Physical volume "/dev/sda14" successfully created

# pvdisplay | pvs //查看系统中已经创建的物理卷

  PV VG Fmt Attr PSize PFree

  /dev/sda14 lvm2 a-- 37.07g 37.07g

第3步:使用物理卷建立卷组

# vgcreate  MYVG  /dev/sda14 //建立卷组,日后可以根据需要添加新的物理卷到已有卷组中

  Volume group "MYVG" successfully created

# vgdisplay | vgs //查看系统中已经创建的卷组

  VG #PV #LV #SN Attr VSize VFree

  MYVG 1 0 0 wz--n-  37.07g 37.07g

第4步:在卷组中建立逻辑卷

# lvcreate -L 00M -n mylv1 MYVG //从已有卷组建立逻辑卷,通常只分配部分空间给该逻辑卷

  Logical volume "mylv1" created

# lvdisplay | lvs //查看系统中已经创建的逻辑卷

  LV VG Attr LSize Pool Origin Data%  Move Log Cpy%Sync Convert

  mylv1 MYVG -wi-a----- 100.00m

查看MYVG-mylv1。

[root@localhost 桌面]# fdisk  -l

磁盘 /dev/sda1000.2 GB, 1000204886016 字节,1953525168 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xf0b1ebb0

 

设备      Boot  Start         End         Blocks    Id  System

/dev/sda1       110318355  1953520064   921600855    f  W95 Ext'd (LBA)

……

/dev/sda14     1875781593  1953520064    38869236    b  W95 FAT32

 

磁盘 /dev/mapper/MYVG-mylv1104 MB, 104857600 字节,204800 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理)512 字节 / 512 字节

I/O 大小(最小/最佳)512 字节 / 512 字节

第5步:在逻辑卷上建立文件系统

[root@localhost 桌面]# mkfs.xfs  /dev/mapper/MYVG-mylv1

mke2fs 1.42.9 (28-Dec-2013)

文件系统标签=

OS type: Linux

块大小=1024 (log=0)

分块大小=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

25688 inodes, 102400 blocks

5120 blocks (5.00%) reserved for the super user

第一个数据块=1

Maximum filesystem blocks=67371008

13 block groups

8192 blocks per group, 8192 fragments per group

1976 inodes per group

Superblock backups stored on blocks:

8193, 24577, 40961, 57345, 73729

Allocating group tables: 完成

正在写入inode完成

Creating journal (4096 blocks): 完成

Writing superblocks and filesystem accounting information: 完成

第6步:将文件系统挂载到Linux系统的目录树中

[root@localhost 桌面]# mkdir  /mnt/lv

[root@localhost 桌面]# mount  /dev/mapper/MYVG-mylv1  /mnt/lv

[root@localhost 桌面]# df

文件系统 1K- 已用 可用 已用% 挂载点

/dev/sda2 20469760 6099580 14370180 30% /

devtmpfs 928616 0 928616 0% /dev

tmpfs 937488 140 937348 1% /dev/shm

tmpfs 937488 9112 928376 1% /run

tmpfs 937488 0 937488 0% /sys/fs/cgroup

/dev/sda8 99139188 85969004 8033488 92% /opt

/dev/sda12 995544 434568 493188 47% /boot

/dev/sda6 30709264 6854432 23854832 23% /run/media/root/DATA

/dev/loop0 4138442 4138442 0 100% /cdrom/iso

/dev/mapper/MYVG-mylv1 95054 1567 86319 2% /mnt/lv 

[root@localhost 桌面]#

第7步:将/dev/mapper/MYVG-mylv1扩展到200M

[root@localhost 桌面]# lvextend  -L  200M  /dev/mapper/MYVG-mylv1

  Extending logical volume mylv1 to 200.00 MiB

  Logical volume mylv1 successfully resized

[root@localhost 桌面]# df

文件系统 1K- 已用 可用 已用% 挂载点

/dev/sda2 20469760 6099580 14370180 30% /

……

/dev/mapper/MYVG-mylv1 95054 1567 86319 2% /mnt/lv

[root@localhost 桌面]# resize2fs  /dev/mapper/MYVG-mylv1   //重新设置xfs文件系统大小

resize2fs 1.42.9 (28-Dec-2013)

Filesystem at /dev/mapper/MYVG-mylv1 is mounted on /mnt/lv; on-line resizing required

old_desc_blocks = 1, new_desc_blocks = 1

The filesystem on /dev/mapper/MYVG-mylv1 is now 204800 blocks long.

[root@localhost 桌面]# df

文件系统 1K- 已用 可用 已用% 挂载点

/dev/sda2 20469760 6099580 14370180 30% /

……

/dev/mapper/MYVG-mylv1 194466 1567 181807 1% /mnt/lv

[root@localhost 桌面]# ls  /mnt/lv

lost+found

第8步:/dev/mapper/MYVG-mylv1缩小到150M

 

# resize2fs  /dev/卷组/逻辑卷名  size[KB,M,G] //先缩小ext2/ext3文件系统大小

# e2fsck  -f  /dev/卷组/逻辑卷名 //再执行上步指令

# lvreduce  -L  size[KB,M,G]  /dev/卷组/逻辑卷名

5.5.4  卷组的拉升与清除LVM

1、扩展卷组

1)创建物理卷

2)扩展卷组

Vgextend  <卷组名>  <物理卷名>

2、清除卷组

1)先卸载逻辑卷

2)删除逻辑卷  (lvremove <逻辑卷名>

3)删除卷组   (vgremove <组名>

4)删除物理卷  (pvremove <物理卷名>

5)删除物理分区

 

5.6  制作镜像文件:dd

dd命令是一个功能强大的copy命令,支持在拷贝文件的过程中转换文件格式,并且支持指定范围的复制。dd命令的各个参数及其功能见表4-15。

共3步:制作、使用磁盘镜像文件

# dd  if=/dev/zero  of=/root/disk.img  bs=1M  count=100 //制作磁盘镜像文件

# mkfs.ext3  /root/disk.img //格式化

# mount  -o  loop  /root/base.img  /mnt/img //挂载镜像文件

 

 

5.7  文件系统的备份与还原:dumprestore

1.dump命令

功能:dump为备份文件系统工具程序,可将目录或整个文件系统备份至指定的设备中。

yum install dump    //安装该工具程序

备份分为10级,0:备份级别为完全备份,1级备份会保存自执行0级备份以来更新过的所有文件;2级备份会保存自执行1级备份以来更新过的所有文件,以此类推。

实例:在硬盘sdbsdb1上创建文件系统ext3,并把其挂载到/mnt/web下,在sdb1上创建一个目录test和一个文件test.txt,然后将其完全备份到/tmp下。过段时间以后,把sdb1上变化的数据进行增量备份

第一步: # dump  -0S  /dev/sdb1         //完整备份/dev/sdb1前统计一下需多大容量

第二步:#dump  -0u  -f  /tmp/boot.dump  /mnt/web  ///dev/sdb1完全备份到/tmp/boot.dump中,并更新/etc/dumpdates数据库文件

第三步:#ls –l /tmp/boot.dump             //查看备份的文件boot.dump的属性

第四步:#cat /etc/dumpdates                 //查看在/etc/dumpdates中备份信息

第五步:#dump –W    

//显示需要备份的文件及最后一次备份的层次、时间与日期假如过段时间,sdb1中增加了新的数据,则进行增量备份

#dump -1u –f  /tmp/boot1.dump  /mnt/web     //只备份完全备份后有变化的文件示例如下:

2.restore命令

示例如下:

# restore  -t  -f  boot.dump //用 restore 观察 dump 后的备份数据内容。-t参数是查看的意思,-f是指定要查看的备份文件。通过以上命令,就可以查看备份文件中备份了哪些文件

# restore  -C  -f  /tmp /boot.dump //比较差异并且还原整个文件系统

# restore  -i  -f  /tmp /boot.dump //如果只是一部分数据丢失了,那么可以使用参数-i通过交互方式来实现文件的选择性还原

    # restore  -r  -f  /tmp /boot.dump //全部还原

 

       

         

 

 

5.8  磁盘配额

5.8.1  相关命令:quotaquotacheckedquotaquotaonquotaoff

quota要使用的命令有两种:一种用于查询功能,包括quotaquotacheckquotastatsrepquotawarnquota;另一种用于编辑quota的内容,包括edquotasetquota

1. quota命令

语法:quota  [-uvsl]  [username]  quota  [-gvsl]  [groupname]

1# quota  -guvs //显示root用户的quota限制值

2# quota  -vs  -u  ztg //显示ztg用户的磁盘配额

 

2. quotacheck命令

语法:quotacheck  [-avug]  [/mount_point]

1# quotacheck  -avug //将所有在/etc/mtab内,含有quota支持的分区进行扫描

2# quotacheck  -avug  -m //强制扫描已挂载的文件系统

   

3. edquota命令

语法:edquota  [-u username]  [-g groupname]  //设置username的限制值

或 edquota  -t                      //修改宽限时间 

或 edquota  -p  user1  -u  user2        //user1的限制值复制给user2

 

4. quotaon命令

语法:quotaon  [-avug]]  quotaon  [-vug]  [/mount_point]

例:# quotaon  -auvg     启动所有具有quota的文件系统

 

5. quotaoff命令

语法:quotaoff  [-a]  quotaoff  [-ug]  [/mount_point]

 

5.8.2  实例实现磁盘限额

实例  实现磁盘限额

问题描述:将/dev/sdb1分区挂载在/mnt/quota下,在/mnt/quota目录中对用户(mahuizhangsan,这两个用户都在workgroup群组里)实行磁盘空间的配额限制。

1步:修改/etc/fstab文件

             

  修改/etc/fstab文件

2步: #mount –a加载文件系统

3步:#mount –o remount /mnt/quota重新加载文件系统

4步:# quotacheck  /mnt/quota

# quotacheck -g /mnt/quota   //生成aquota.useraquota.group文件

              

  生成aquota.useraquota.group文件

5步:为用户设置磁盘空间限额

使用edquota来编辑每个用户或组群的可用磁盘空间,如下图所示,执行 “edquota mahui”,打开一个vi窗口,为用户mahui设置磁盘空间的限额,如下所示

 

执行 “edquota -p mahui zhangsan”,将mahuiquota限制值复制给zhangsan用户(mahuizhangsan用户有相同的磁盘限额)

执行 “edquota -t”,设置宽限时间,如下所示

预设的宽限时间7天,读者可以根据具体情况进行设置。

执行 “edquota –vu mahui  zhangsan”, 显示mahui  zhangsan用户的磁盘配额。 

 

6步:为组群(workgroup)设置磁盘空间限额

组群workgroup包含两个用户mahuizhangsan

执行 “edquota  -g  workgroup”,设置组群workgroup的磁盘空间限额,如下所示

执行 “edquota  -vg  ztguang”,查看组群ztguang的磁盘空间限额

 

第7步:启动quota的限额

设定好quota之后,建议再执行一次quotacheck命令,然后执行“quotaon -avug”命令来启动quota的限额。

 

第8步:自动启动quota的限额

如果希望系统重启后自动启动quota的限额,可以在/etc/rc.d/rc.local中添加如下代码

if [ -x /sbin/quotacheck ]; then

echo "Checking quotas,This may take some time ... "

/sbin/quotacheck -avug

echo "Done."

fi

if [ -x /sbin/quotaon ]; then

echo "Enabling disk quota ... "

/sbin/quotaon -avug

echo "Done."

fi

 

         

 

5.9  数据同步:sync

5.10  数据压缩

5.10.1 gzipgunzip命令

1gzipgnu zip)命令

   gzip  [选项]  [文件名]

实例:使用gzip命令

 

2gunzip命令

gunzip  [选项]  [文件名.gz]

实例:使用gunzip命令

 

也可以只压缩某个文件

 

5.10.2  bzip2bunzip2命令

bzip2bunzip2是更新的Linux压缩工具,比gzip有着更高的压缩率。

1bzip2命令

2bunzip2命令

bzip2、bunzip2示例如下:

# bzip2  -z  man.config  //man.configbzip2压缩,此时man.config变成man.config.bz2

# bzip2  -9  -c man.config > man.config.bz2 //man.config用最佳的压缩比压缩,并保留原本的档案

# bzip2  -d  man.config.bz2 //man.config.bz2解压缩,可用bunzip2取代bzip2  -d

# bunzip2  man.config.bz2 //man.config.bz2解压缩

        

        

        

 

5.10.3  显示压缩文件的内容:zcatzlessbzcatbzless

不解压,显示压缩文件的内容:zcatzlessbzcatbzless

1zcatzless

2bzcatbzless

例如:

# bzcat  man.config.bz2 //在屏幕上显示man.config.bz2解压缩之后的内容

 

4.7.4  tar命令

第5步:分析如下的例子

1# tar  -cf  exam.tar  exam1*.txt(把所有exam1*.txt的文件打包成一个exam.tar文件。其中,-c是产生新备份文件;-f是输出到默认的设备,可以把它当做一定要加的选项)

2# tar  -rf  exam.tar  exam2*.txtexam.tar是一个已经存在的打包文件了,再把exam2*.txt的所有文件也打包进去。-r是再增加文件的意思)

3# tar  -uf  exam.tar  exam11.txt(刚才exam1*.txt已经打包进去了,但是其中的exam11.txt后来又做了更改,把新改过的文件再重新打包进去,-u是更新的意思)

 

 

4# tar  -tf  exam.tar(列出exam.tar中有哪些文件被打包在里面。-t是列出的意思)

5# tar  -xf  exam.tar(把exam.tar打包文件中全部文件释放出来,-x是释放的意思) 

6# tar  -xf  exam.tar  exam2*.txt(只把exam.tar打包文件中的所有exam2*.txt文件释放出来,-x是释放的意思)

7# tar  -zcf  exam.tar.gz  exam1*.txt

8:解压解包

1# tar  -xzvf  exam.tar.gz //加一个选项-v,就是显示打包兼压缩或者解压的过程。因为Linux上最常见的软件包文件是.tar.gz文件,因此,最常看到的解压方式就是这样了

2# tar  -xzvf  exam.tgz //.tgz文件名也是一样的,因性质一样,仅文件名简单一点而已

3# tar  xzvf  exam.tar.gz  -C  exam/ // 解压到exam目录中

4# tar  xjvf  exam.tar.bz2  -C  exam/ // j:使用bzip2

例9打包压缩

1# tar  cjvf  test.tar.bz2  exam1*.txt

2# tar  czvf  test.tar.gz  exam1*.txt

 

# tar -czvf exam.tar.gz *.*  或  # tar -czvf exam.tgz *.*

 

# tar  cjvf  exam.tar.bz2  exam1*.txt

# tar  xjvf  exam.tar.bz  -C  exam/ // j:使用bzip2

 

转载于:https://www.cnblogs.com/ssooking/p/5811284.html

最新回复(0)