一、压缩和解压缩文件
先来看一个例子,现在要将如下几个字符串存储到硬盘上:
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)