9. 文件系统——文件的压缩、解压缩、归档及底层复制命令(gzip bzip2 xz tar dd)

一、压缩和解压缩文件

先来看一个例子,现在要将如下几个字符串存储到硬盘上:

abcdef,abc,def,mnabc,mndef

现在可以为这几个字符串设置编号,abc编号为1,def编号为2,mn的编号为3,于是上述字符串可以存为如下形式:

abcdef,1,2,mn1,32

这个过程就是文件压缩的过程,而解压缩的过程,就是将按照编号存储的字符串还原成完整的字符串。故压缩就是将重复的内容使用符号加以替代。不同的压缩方法会采用不同的压缩算法,例如上述字符串可以将abc作为编号1,也可以将abcdef作为编号1,因此针对不同的压缩方法,就会有不同的压缩工具,下面来逐一介绍Linux上常用的压缩工具。

1.compress 和 uncompress

这是Linux上早期采用的压缩(compress)和解压缩工具(uncompress),使用compress压缩的文件,其形式为 FileName.Z。这种压缩工具现在已经很少使用了。

2. zip

该压缩方式在Linux和Window是通用的,它采用了跨操作系统的机制,但压缩比例并不大,压缩能力一般。除了         压缩的功能外,该工具还可以实现归档。本文将在最后详解此命令。

3.gizp/bzip2/xz

这是Linux操作系统中常用的三个压缩工具,这三者的压缩比例呈递增趋势。比如一个文件原本的大小为600MB,使用gzip压缩,可能会有80MB,使用bzip2压缩可能会有72MB,而使用xz压缩,最后可能只有60MB。

A.gzip

使用gzip压缩的文件,其形式为:FileName.gz

[[email protected] tutor]# cp /var/log/messages ./

# 复制文件/var/log/messages 到当前目录下

[[email protected] tutor]# ls -lh

total 4.0M
-rw-r--r--. 1 root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1 root root   82 Jul 12 02:45 memory.sh
-rw-------. 1 root root 3.9M Jul13 10:01 messages
# 未压缩前的messages大小为3.9M

[[email protected] tutor]# gzip messages

# 使用gzip压缩messages


[[email protected] tutor]# ls -lh

total 392K
-rw-r--r--. 1 root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1 root root   82 Jul 12 02:45 memory.sh
-rw-------. 1 root root 237K Jul13 10:01 messages.gz
# 压缩后的messages只有237K了注意使用gzip压缩文件会删除原文件

解压缩使用的是gunzip命令

[[email protected] tutor]# gunzip messages

# 使用gunzip FileName可以解压缩用gzip压缩的文件


[[email protected] tutor]# ls -lh

total 4.0M
-rw-r--r--. 1 root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1 root root   82 Jul 12 02:45 memory.sh
-rw-------. 1 root root 3.9M Jul13 10:01 messages
# 文件messages又变成3.9MB了

注意:使用gunzip命令会删除压缩文件

事实上,直接使用压缩命令gzip配合特定的选项,也可以完成解压缩的任务,gunzip命令等同于gzip -d

针对gzip压缩的文件,如果不解压,直接查看其中的具体内容,可以使用zcat命令:

[[email protected] tutor]# zcat messages.gz

Jul 1309:55:20 localhost NetworkManager[1153]: <info>   address 192.168.56.102
Jul 1309:55:20 localhost NetworkManager[1153]: <info>   prefix 24 (255.255.255.0)
Jul 1309:55:20 localhost dhclient[2131]: bound to 192.168.56.102 -- renewal in 574seconds.

B.bzip2

使用bzip2压缩的文件其形式为FileName.bz2

该命令的使用方式和gzip一样

[[email protected] tutor]# bzip2 messages

[[email protected] tutor]# ls -lh

total 308K
-rw-r--r--. 1 root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1 root root   82 Jul 12 02:45 memory.sh
-rw-------. 1 root root 154K Jul13 10:01 messages.bz2
# 此时messages的大小只有154KB了相较于gzip压缩后的237KB要小得多证明
# bzip的压缩比要大于gzip同样的bzip2压缩后也会删除原文件。

使用bunzip2命令可以解压缩采用bzip2压缩的文件

[[email protected] tutor]# bunzip2 messages.bz2

[[email protected] tutor]# ls -lh

total 4.0M
-rw-r--r--. 1 root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1 root root   82 Jul 12 02:45 memory.sh
-rw-------. 1 root root 3.9M Jul13 10:01 messages
# 使用bunzip2解压缩后会删除压缩文件。

和gunzip命令一样bzip2 -d命令就等同于bunzip2。

针对bzip2压缩的文件如果不解压直接查看其中的具体内容可以使用bzcat命令

[[email protected] tutor]# bzcat messages.bz2

Jul 13 09:55:20 localhostNetworkManager[1153]: <info>  address 192.168.56.102
Jul 13 09:55:20 localhostNetworkManager[1153]: <info>  prefix 24 (255.255.255.0)
Jul 13 09:55:20 localhostdhclient[2131]: bound to 192.168.56.102 -- renewal in 574 seconds.

C.xz

使用xz压缩的文件,其形式为:FileName.zx需要注意的是,在RedHat5上可能没有自带xz工具,RedHat6上才内置了该工具。

[[email protected] tutor]# xz messages

[[email protected] tutor]# ls -lh

total 296K
-rw-r--r--. 1root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1root root   82 Jul 12 02:45 memory.sh
-rw-------. 1root root 142K Jul 13 10:01 messages.xz
# 可以看到使用xz压缩后的文件体积较前两种工具更小了它的压缩比例是三者中最大的。

使用unxz命令可以解压缩采用xz压缩的文件

[[email protected] tutor]# unxz messages.xz

[[email protected] tutor]# ls -lh

total 4.0M
-rw-r--r--. 1root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1root root   82 Jul 12 02:45 memory.sh
-rw-------. 1root root 3.9M Jul 13 10:01 messages
# unxz命令解压缩后也会删除压缩文件

unxz命令也等同于xz -d 命令

[[email protected] tutor]# xz messages


[[email protected] tutor]# ls -hl messages.xz

-rw-------. 1root root 142K Jul 13 10:01 messages.xz

[[email protected] tutor]# xz -d messages.xz

# xz -d 命令和unxz用法一样


[[email protected] tutor]# ls -hl messages

-rw-------. 1root root 3.9M Jul 13 10:01 messages

针对xz压缩的文件,如果不解压,直接查看其中的具体内容,可以使用xzcat命令:

[[email protected] tutor]# xzcat messages.xz

Jul 1309:55:20 localhost NetworkManager[1153]: <info>   address 192.168.56.102
Jul 1309:55:20 localhost NetworkManager[1153]: <info>   prefix 24 (255.255.255.0)
Jul 1309:55:20 localhost dhclient[2131]: bound to 192.168.56.102 -- renewal in 574seconds.

xz命令还能不解压直接grep文件。

[[email protected] tutor]# xz

xz       xzcat   xzcmp    xzdec    xzdiff  xzegrep  xzfgrep  xzgrep  xzless   xzmore

[[email protected] tutor]# cp /etc/passwd ./


[[email protected] tutor]# xz passwd

# 将passwd文件使用xz进行压缩


[[email protected] tutor]# ll

-rw-r--r--. 1root root    199 Jul 11 20:31 odd_even.sh
-rw-r--r--. 1root root    868 Jul 13 14:05 passwd.xz

[[email protected] tutor]# xzgrep ‘root‘ passwd.xz

root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
# 可以看到不需要解压直接就能grep到

在默认情况下xz的压缩比例最大,但事实上,每种工具可以指定其压缩比。压缩比可选择的范围为1-9,各工具默认的压缩比是6,另外压缩比越小,对cpu的资源消耗就越少,反之亦然。使用-# 可以为各工具指定具体的压缩比。

[[email protected] tutor]# gzip messages


[[email protected] tutor]# ls -hl messages.gz

-rw-------. 1root root 237K Jul 13 10:01 messages.gz
# 默认压缩比为其压缩结果为237KB。

[[email protected] tutor]# gunzip messages.gz


[[email protected] tutor]# gzip -9 messages

# 强制指定压缩比为9


[[email protected] tutor]# ls -hl messages.gz

-rw-------. 1root root 232K Jul 13 10:01 messages.gz
# 可以看到压缩结果较默认压缩比缩小了

如果希望压缩结束后保留原文件,bzip2命令可以使用-k选项,而gzip不支持想应该功能。如果一定要使用gzip命令,并保留原文件,可以采用-c命令,然后进行输出重定向的方式:

[[email protected] tutor]# bzip2 -k messages

# bzip2 使用-k选项以保留原文件


[[email protected] tutor]# ls -hl

-rw-r--r--. 1root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1root root   82 Jul 12 02:45 memory.sh
-rw-------. 1root root 3.9M Jul 13 10:01 messages
-rw-------. 1root root 154K Jul 13 10:01 messages.bz2

[[email protected] tutor]# rm messages

rm: removeregular file `messages‘? y

[[email protected] tutor]# bunzip2 -k messages.bz2


[[email protected]]# ls -hl

-rw-r--r--. 1root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1root root   82 Jul 12 02:45 memory.sh
-rw-------. 1root root 3.9M Jul 13 10:01 messages
-rw-------. 1root root 154K Jul 13 10:01 messages.bz2
# bunzip2命令加上-k选项解压文件同样也可以保留压缩文件

[[email protected] tutor]# gzip -c messages   

 t=&ìrK;d\|j‘üvü’§gán   Ln)é’%–&pü-Aá·ün‰K–Rò¨Dq·”
         §3ó,°:-oên)üTó
# 如果不采用输出重定向的方式,gzip-c会将压缩结果输出到屏幕上,显示为乱码

[[email protected] tutor]# gzip -c messages > messages.gz


[[email protected] tutor]# ls -lh

-rw-r--r--. 1root root   93 Jul 12 03:41 memory1.sh
-rw-r--r--. 1root root   82 Jul 12 02:45 memory.sh
-rw-------. 1root root 3.9M Jul 13 10:01 messages
-rw-r--r--. 1root root 237K Jul 13 12:28 messages.gz
# 可以看到采用输出重定向的方式gzip也可以保留原文件

注意上述三个工具都不能对目录进行压缩

[[email protected] tutor]# ll

-rw-r--r--. 1root root     114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root    4096 Jul 13 08:32 abc
-rwxr-xr-x. 1root root     108 Jul 11 16:56blank_line.sh

[[email protected] tutor]# gzip abc

gzip: abc is adirectory -- ignored
# 报错了说明无法压缩目录

[[email protected] tutor]# gzip abc/*

# 采用此方法压缩的是目录中的单个文件


[[email protected] tutor]# ll

-rw-r--r--. 1root root     114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root    4096 Jul 13 12:33 abc
-rwxr-xr-x. 1root root     108 Jul 11 16:56blank_line.sh

[[email protected] tutor]# ll abc

-rw-r--r--. 1root root     26 Jul 13 08:32 a.txt.gz
-rw-r--r--. 1root root     26 Jul 13 08:32 b.txt.gz
-rw-------. 1root root 242616 Jul 13 12:32 messages.gz

[[email protected] tutor]# bzip2 abc

bzip2: Inputfile abc is a directory.

[[email protected] tutor]# xz abc

xz: abc: Is adirectory, skipping
# 另外两个工具同样无法压缩目录

二、文件的归档

将多个文件当做一个单独的文件来进行管理,即为归档。归档本身并不压缩文件。对文件归档后,文件的体积可能更大了,因为归档本身会产生一些元数据信息(也有可能会减小,因为文本文件中的空格会被压缩)。Linux上常用的归档命令有

A. tar

[[email protected] tutor]# man tar

SYNOPSIS

tar[OPTION...] [FILE]...

DESCRIPTION

GNU saves many files together into a singletape or disk archive, and can restore individual files from the archive.

EXAMPLES

  -c, --create create a new archive

# 创建归档

-x, --extract, --get extract files from an archive

# 展开归档-x和-c是相反的操作不可能同时进行

-f, --file=ARCHIVE use archive file or device ARCHIVE

# 指定归档后的文件名称一般以.tar作为文件名的后缀

-t, --list list the contents of an archive

# 不用展开归档直接查看文件列表

-C, --directory=DIR change to directory DIR

# 指定展开路径

-j, --bzip2     filterthe archive through bzip2

# 调用bzip2命令归档并压缩/解压缩

-z, --gzip     filterthe archive through gzip

# 调用gzip命令归档并压缩/解压缩

-J, --xz      filterthe archive through xz

# 调用xz命令归档并压缩/解压缩

--xattrs   Save theuser/root xattrs to the archive

# 归档时保留文件系统的扩展属性默认情况下tar归档时不保留扩展属性

下面来演示一下tar命令的使用方法

[[email protected] tutor]# tar -cf abc.tar abc/*

# 将abc目录下的所有文件进行归档命名为abc.tar


[[email protected] tutor]# ll

-rw-r--r--. 1root root    114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root   4096 Jul 13 12:33 abc
-rw-r--r--. 1root root    256000 Jul 13 14:11 abc.tar
-rwxr-xr-x. 1root root    108 Jul 11 16:56blank_line.sh

[[email protected] tutor]# tar -tf abc.tar

# 不展开直接查看归档文件中的文件列表且显示了文件的路径
abc/a.txt.gz
abc/b.txt.gz
abc/messages.gz

 

[[email protected] tutor]# rm -rf abc

# 删除目录abc以便展开


[[email protected] tutor]# tar -xf abc.tar


[[email protected] tutor]# ll

-rw-r--r--. 1root root    114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root   4096 Jul 13 14:20 abc
-rw-r--r--. 1root root 256000 Jul 13 14:11 abc.tar
-rwxr-xr-x. 1root root    108 Jul 11 16:56blank_line.sh
# 展开后仍然保留了归档文件

[[email protected] tutor]# mkdir bcd


[[email protected] tutor]# tar -xf abc.tar -C bcd

# 使用-C指定展开的目录


[[email protected] tutor]# ll bcd

total 4
drwxr-xr-x. 2root root 4096 Jul 13 14:22 abc

上文中提到过,归档命令并不压缩文件,那么想要同时压缩并归档,就需要将tar命令和gzip、bzip2,xz等命令结合起来使用:

[[email protected] tutor]# tar -cf abc.tar abc


[[email protected] tutor]# gzip abc.tar


[[email protected] tutor]# ll

total 752
-rw-r--r--. 1root root    114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root   4096 Jul 13 14:20 abc
-rw-r--r--. 1root root 213016 Jul 13 14:27 abc.tar.gz

如果每次归档并压缩都要执行两次命令,未免过于麻烦了。使用-z选项,表示调用gzip,使用-j,表示调用bzip2;置于调用是为了解压缩还是压缩,要根据是使用了-c(归档并压缩),还是使用了-x(展开并解压缩)选项:

[[email protected] tutor]# rm abc.tar.gz

rm: removeregular file `abc.tar.gz‘? y

[[email protected] tutor]# ll

total 540
-rw-r--r--. 1root root    114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root   4096 Jul 13 14:20 abc
-rwxr-xr-x. 1root root    108 Jul 11 16:56blank_line.sh

[[email protected] tutor]# tar jcf abc.tar.bz2 abc/*

# 使用了bzip2进行归档并压缩


[[email protected] tutor]# ls -lh

total 752K
-rw-r--r--. 1root root  114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root 4.0K Jul 13 14:20 abc
-rw-r--r--. 1root root 210K Jul 13 14:35 abc.tar.bz2
-rwxr-xr-x. 1root root  108 Jul 11 16:56 blank_line.sh

[[email protected] tutor]# mkdir bcd


[[email protected] tutor]# tar jxf abc.tar.bz2 -C bcd

# 使用bzip展开并解压缩归档


[[email protected] tutor]# ls bcd/abc

a.txt.gz  b.txt.gz messages.gz

[[email protected] tutor]# cd bcd


[[email protected] bcd]# rm -rf abc


[[email protected] bcd]# cd ../


[[email protected] tutor]# tar xf abc.tar.bz2 -C bcd

# 事实上展开压缩的归档时不需要指定j或者z,因为tar可以自动判断该文件是否为压缩文件

# 并且tar能自动判断该文件是使用何种工具压缩的,然后使用相应的解压工具


[[email protected] tutor]# ls bcd/abc

a.txt.gz  b.txt.gz messages.gz

B. zip

上文中提到过zip命令既可以归档也可以压缩它的文件名后缀为.zip

[[email protected] tutor]# zip abc.zip abc/*

  adding: abc/a.txt.gz (deflated 19%)
  adding: abc/b.txt.gz (deflated 19%)
  adding: abc/messages.gz (deflated 12%)

[[email protected] tutor]# ll

-rw-r--r--. 1root root    114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root   4096 Jul 13 14:58 abc
-rw-r--r--. 1root root 256000 Jul 13 14:51 abc.tar
-rw-r--r--. 1root root 213103 Jul 13 15:06 abc.zip
drwxr-xr-x. 3root root   4096 Jul 13 14:39 bcd

解压缩可以使用unzip命令

[[email protected] tutor]# rm -rf abc


[[email protected] tutor]# unzip abc.zip

Archive:  abc.zip
  inflating: abc/a.txt.gz           
  inflating: abc/b.txt.gz           
  inflating: abc/messages.gz

[[email protected] tutor]# ll

total 1008
-rw-r--r--. 1root root    114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root   4096 Jul 13 15:07 abc
-rw-r--r--. 1root root 256000 Jul 13 14:51 abc.tar
-rw-r--r--. 1root root 213103 Jul 13 15:06 abc.zip

现在写一个脚本,能接受参数gzip、bzip2或xz,而后能将/etc/目录归档备份至/backup目录,并以参数指定的形式压缩存放;文件名称包含脚本执行时刻的时间;

[[email protected] tutor]# vim compress.sh

#!/bin/bash
#
 
Com=$1
 
if [ -z $Com];then
        Com=gzip
fi
 
[ -d /backup ]|| mkdir /backup
 
if [ $Com ==‘gzip‘ ]; then
        tar zcf /backup/etc-`date+%F-%H-%M-%S`.tar.gz /etc/*
        [ $? -eq 0 ] && echo"Backup etc finished.(gzip)."
elif [ $Com ==‘bzip2‘ ]; then
        tar jcf /backup/etc-`date+%F-%H-%M-%S`.tar.bz2 /etc/*
        [ $? -eq 0 ] && echo"Backup etc finished.(bzip2)."
elif [ $Com ==‘xz‘ ]; then
        tar Jcf /backup/etc-`date+%F-%H-%M-%S`.tar.xz /etc/*
        [ $? -eq 0 ] && echo"Backup etc finished.(xz)."
else
        echo "Usage: `basename $0`{[gzip|bzip2|xz]}"
        exit 6
fi

[[email protected] tutor]# mkdir /backup


[[email protected] tutor]# chmod +x compress.sh

tar: Removingleading `/‘ from member names
Backup etcfinished.(gzip).
# 不传递参数使用默认值

[[email protected] tutor]# ls /backup

etc-2014-07-13-16-18-23.tar.gz

[[email protected] tutor]# ./compress.sh xz

# 传递参数xz
tar: Removingleading `/‘ from member names
Backup etcfinished.(xz).

[[email protected] tutor]# ls -hl /backup

-rw-r--r--. 1root root 9.5M Jul 13 16:18 etc-2014-07-13-16-18-23.tar.gz
-rw-r--r--. 1root root 5.6M Jul 13 16:21 etc-2014-07-13-16-21-18.tar.xz

三、IDE/SATA的管理工具

使用hdparm命令,可以获取或设定IDE/SATA的参数,结合相应的选项,该命令可以用来检查硬件错误,查看硬件的物理参数等等。

[[email protected] tutor]# man hdparm

HDPARM(8)                         HDPARM(8)
NAME
       hdparm - get/set SATA/IDE deviceparameters

[[email protected] tutor]# hdparm /dev/sdb3

 # 使用hdparm命令查看设备/dev/sdb3的参数信息
/dev/sdb3:
 HDIO_DRIVE_CMD(identify) failed: Inappropriateioctl for device
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 12401/255/63, sectors = 20980827, start = 63

四、底层复制命令dd

使用dd命令,可以进行文件复制;和cp命令不同的是,dd命令是用来复制最底层的0和1,其用法如下:

dd if=/path/to/src_file of=/path/to/dst_file bs=block_sizecount=#

[[email protected] tutor]# dd if=abc/a.txt of=bcd/hello

# 将abc/a.txt复制到bcd下命名为hello
0+1 records in
0+1 recordsout
16 bytes (16B) copied, 0.000369322 s, 43.3 kB/s

[[email protected] tutor]# cat abc/a.txt

abcabcabcabcabc

[[email protected] tutor]# cat bcd/hello

abcabcabcabcabc

该命令的特殊之处在于,它可以不复制完整的文件,使用bs来指定要复制的块大小,使用count来指定要复制的块数:

[[email protected] tutor]# dd if=abc/messages of=bcd/hello2bs=512 count=2

# 这里将abc/messages复制为bcd/hello块大小为512个字节复制两个块
2+0 records in
2+0 recordsout
1024 bytes(1.0 kB) copied, 0.00030198 s, 3.4 MB/s
# 可以看到了1KB的内容

[[email protected] tutor]# cat bcd/hello2

Jul  9 21:46:47 localhost kernel: imklog 5.8.10,log source = /proc/kmsg started.
Jul  9 21:46:47 localhost rsyslogd: [originsoftware="rsyslogd" swVersion="5.8.10"x-pid="1060"   x-info="http://www.rsyslog.com"]start
Jul  9 21:46:47 localhost kernel: Initializingcgroup subsys cpuset
Jul  9 21:46:47 localhost kernel: Initializingcgroup subsys cpu
Jul  9 21:46:47 localhost kernel: Linux version2.6.32-431.el6.x86_64 ([email protected]) (gcc      version 4.4.7 20120313 (Red Hat 4.4.7-4)(GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013
Jul  9 21:46:47 localhost kernel: Command line: roroot=/dev/mapper/VolGroup-lv_root rd_NO_LUKS     .UTF-8rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16      crashkernel=autord_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
Jul  9 21:46:47 localhost kernel: KERNEL supportedcpus:
Jul  9 21:46:47 localhost kernel:  Intel GenuineIntel
Jul  9 21:46:47 localhost kernel:  AMD AuthenticAMD

事实上bs和count还可以自行指定单位和大小,默认是字节:

[[email protected] tutor]# dd if=abc/messages of=bcd/hello2bs=2k count=2

2+0 records in
2+0 recordsout
4096 bytes(4.1 kB) copied, 0.0136845 s, 299 kB/s
# 这一次自行指定块大小为2KB,复制两块,所以最终复制了4KB的内容。

命令dd常用来进行数据的备份

[[email protected] tutor]# dd if=/dev/sda of=sda_mbr.backupbs=512 count=1

# 将/dev/sda备份到当前目录下
1+0 records in
1+0 recordsout
512 bytes (512B) copied, 0.000671857 s, 762 kB/s

[[email protected] tutor]# dd if=sda_mbr.backup of=/dev/sdabs=512 count=1

# 恢复/dev/sda

注意,使用dd命令进行恢复时,务必谨慎,否则容易造成磁盘上的数据丢失!

本地回环设备/dev/zero:是个泡泡机,也叫0生成器,它和dd命令结合使用,可以用0来填充磁盘:

[[email protected] tutor]# dd if=/dev/zero of=abcdef bs=2Mcount=100

[[email protected] tutor]# dd if=/dev/zero of=abcdef bs=2Mcount=100

100+0 recordsin
100+0 recordsout
209715200bytes (210 MB) copied, 1.30948 s, 160 MB/s

[[email protected] tutor]# ls -lh

-rw-r--r--. 1root root  114 Jul 11 18:52 3sum.sh
drwxr-xr-x. 2root root 4.0K Jul 13 15:29 abc
-rw-r--r--. 1root root 200M Jul 13 15:46 abcdef
# 可以看到这个用0生成器复制而成的文件精确大小为200MB
-rw-r--r--. 1root root 250K Jul 13 14:51 abc.tar

通过这种方式可以用来创建虚拟硬盘或者是创建交换分区

[[email protected] tutor]# mkswap abcdef

mkswap:abcdef: warning: don‘t erase bootbits sectors
        on whole disk. Use -f to force.
Setting upswapspace version 1, size = 204796 KiB
no label,UUID=b8c0ae96-483f-4bac-9b65-61940a87caaa
# 将abcdef设为swap

[[email protected] tutor]# free -m

             total       used       free    shared    buffers     cached
Mem:           996        777        218          0         97        372
-/+buffers/cache:        308        687
Swap:         2015          0       2015
# 当前的swap为2015MB

 

[[email protected] tutor]# swapon abcdef

# 启用swap abcdef

 

[[email protected] tutor]# free -m

             total       used      free     shared   buffers     cached
Mem:           996        777        218          0         97        372
-/+buffers/cache:        308        687
Swap:         2215          0       2215
# 可以看到swap多了200MB

在后文中会介绍更多有关dd命令的用法比如用该命令来清空一些文件等。


9. 文件系统——文件的压缩、解压缩、归档及底层复制命令(gzip bzip2 xz tar dd)

时间: 2024-10-09 14:52:23

9. 文件系统——文件的压缩、解压缩、归档及底层复制命令(gzip bzip2 xz tar dd)的相关文章

压缩命令 gzip bzip2 xz zip

1.压缩命令gzip gzip不能压缩目录,可以指定压缩级别1-9,默认级别是6,压缩格式是gz.不保留源文件 1.1 gzip使用方法 格式: gzip [选项] 参数 选项: 不加选项:压缩 -d:解压 -c:将压缩的数据传输到屏幕上,可通过数据流重定向来处理. t:检验压缩文件的一致性. v:可以压缩比等信息. #:#为数字.压缩等级,-1最快,-9最慢,默认-6. 1.2 实例 压缩文件 # gzip 1.txt # ll -rw-r--r--. 1 root root 251321 4

压缩解压归档gzip\bzip2\xz\zip\tar

常用工具 compress/uncompress .z gzip/gunzip .gz bzip2/bunzip2 .bz2 xz/unxz .xz zip/unzip .zip tar,cpio GZIP/GUNZIP/ZCAT,压缩文件 #gzip file 压缩后删除源文件 -d gunzip -c 输出到标准输出,加输出重定向>保存源文件 -0~9 压缩比例,默认6 #gunzip file 解压缩后删除源文件,相当于gzip -d file #zcat file 不展开的情况查看文本内

4周第4次课 压缩打包介绍 gzip bzip2 xz压缩工具

压缩打包介绍 压缩的目的是为了节约磁盘空间.节约带宽提高传输效率,也利于文件的管理. 常见压缩文件 平台 类型/后缀 Windows .rar .zip .7z Linux .zip .gz .bz2 .xz .tar.bz2 .tar.xz 常见压缩工具和压缩比率 gzip < bzip2 < xz gzip gzip压缩级别1-9,数字越大压缩比率越高,默认6.压缩后源文件删除,不能压缩目录. 用法 命令 实例 压缩 gzip [参数][文件名] gzip -3 1.txt 解压缩 gzi

Linux 入门之文件的压缩和归档

Linux入门之压缩与归档 LInux中的有很多对文件压缩和归档的工具,而且其压缩的算法也在不段的更新和突破,但是作为对数据的稳定一般常用的工具不会太多,下面看看一些压缩工具吧,这里我在RHEL5 (red hat 5)或CentOS 6版本的系统上列举这些工具 compress 这是一个很老旧的工具了,一般只有系统内核上的弄些不常改变的文件使用此工具压缩,但是这个工具对于小型数据的压缩效果还是不会很差的. #使用rpm测试软件包是否已经安装 [[email protected] ~]# rpm

gzip,zip,bzip2,xz,tar文件压缩和归档

gzip [-d#] 文件   其中#为1-9的数字 gzip + 文件  压缩文件,删除源文件 gzip -d + 文件  解压缩文件,删除源文件 压缩等级:1压缩最差,9压缩最好,6为默认 zcat查看.gz的文本文件内容 bzip2 + 文件  压缩文件,删除源文件 bzip2 -d + 文件  解压缩文件,删除源文件 bzcat查看.bz2的文本文件内容 gzip和bzip2都不能压缩目录 zip和unzip zip  + 压缩后文件名.zip + 文件      压缩文件,源文件不会消

Linux 入门之文件的压缩和归档(2)

Linux入门之归档与压缩(二) 前言 在linux中,不仅有常见的压缩工具,也有打包工具,把单个或多个文件.文件夹打成包,方便管理,而tar工具就能很好的打包,然后调用其它压缩工具进行打包压缩结合 tar 命令用法: tar  [option]...  /path/to/file... -c :创建归档 -f :指明归档文件路径 -t :查看归档文件列表 -x :展开归档 -C :展开归档时使用此项执行展开路径 -j  :调用bzip2工具 -z  :调用gzip 工具 -J  :调用 xz

C# 文件/文件夹压缩解压缩

项目上用到的,随手做个记录,哈哈. 直接上代码: 1 using System; 2 using System.Data; 3 using System.Configuration; 4 using System.Collections.Generic; 5 using System.IO; 6 using ICSharpCode.SharpZipLib.Zip; 7 using ICSharpCode.SharpZipLib.Checksums; 8 namespace BLL 9 { 10

正版大发彩票平台压缩和归档操作(16个命令)

正版大发彩票平台 下载地址 QQ2952777280程序源码参数说明:运行环境:php5.2+mysql源码类别:(彩票)现金网系统界面语言:简体中文源码授权:无加密文件及认证授权,永久性可直接使用.版本支持:PC/WAP网页版编程语言:PHP正版大发彩票平台游戏:29种游戏(20个官方彩,9个系统彩)手机版独家对接的,完整无错! 此源码经过测试人员实测截图,保证100%和截图一致!!! 1.gzip [命令作用] 用来压缩文件(后缀为.gz) [命令语法] gzip(选项)(参数) [常用选项

压缩 和归档 gzip bzip2 xz zip tar

linux流行的压缩格式 *.gz *.bz2 *.xz *.zip compress 压缩 uncompress 解压 流行的压缩工具 gzip *.gz bzip2 *.bz2 xz *.xz zip *.xip gzip 压缩工具用法 gzip /path/file  注意:压缩后会删除原文件,并且不可压缩目录 -d 解压缩 -# 1-9 (#为数字)表示指定压缩比 数字越大,压缩比越大,压缩后文件越小,压缩时间越长 gunzip /path/filename 解压缩 注:解压缩后会删除,