将大文件或目录打包、压缩 并分割 成制定大小的文件,这在将数据备份 到容量有限的移动储存设备时是必须的,在 Linux 下可以通过组合使用 tar,bzip2( 或者 gzip),split 命令来实现。
假设要将下面这个文件压缩并分割成多个
1.4M
的文件
-r-xr-xr-x 1 root root 4.4M 2004-08-27 01:50 a.chm
可以用下面的命令
:
tar -jcf - a.chm | split -b 1400k - a.chm.tar.bz2.
完成后会生产下面的文件
:
-rw-r--r-- 1 root root 1433600 2004-08-27 01:55 a.chm.tar.bz2.aa
-rw-r--r-- 1 root root 1433600 2004-08-27 01:56 a.chm.tar.bz2.ab
-rw-r--r-- 1 root root 1433600 2004-08-27 01:56 a.chm.tar.bz2.ac
-rw-r--r-- 1 root root 225280 2004-08-27 01:56 a.chm.tar.bz2.ad
还原文件用下面的命令
:
cat a.chm.tar.bz2.a* | tar -jx
为了让广大菜鸟了解上面的命令,现解释如下:
压缩命令
"tar -jcf -"
中的
“-jcf"
参数是创建
(c)
文件
(f)
并调用
bzip2
进行压缩
(j)
,跟在
f
后面的
" -"
是将所创建的文件输出到标准输出上,在这里就是通过
"|"
管道输出给
split
命令进行文件分割;分割命令
"split -b 1400k - a.chm.tar.bz2."
中的
"-b 1400k"
是用来设置每个文件大小的,除了
"k"
,还可以用
"m"
来作为单位,接着的
" - "
就是将
"tar"
命令通过管道传入的数据作为需要分割的数据来源,后面跟着的
" a.chm.tar.bz2."
就是文件名了。
这两个命令如果独立使用,可以将参数中独立的
" - "
换为具体的文件名,这样
"tar"
命令就可以将文件打包压缩成指定的文件,而
"split"
命令就可以分割指定的文件。
在
"tar"
命令中,大家也可以用
"z"
代替
"j"
参,这样
tar
就会调用
gzip
进行压缩,而不是
bzip2
,当然,如果你用了
"z"
参数,记得将输出的文件名中的
"bz2"
改为
"gz"
,这样在解压的时候就可以分辨出需要用那个参数进行解压。
用
split
命令生产的文件序列除了字母还可以使用
" -d "
参数指定为数字的形式,同时还可以通过
" -a x"
来设定序列的长度
(
默认值是
2)
,例如命令:
split -b 1400k -d -a 1 - a.chm.tar.bz2.
就可以产生如下命名规则的文件:
-rw-r--r-- 1 root root 1.4M 2004-08-28 01:01 a.chm.tar.bz2.0
-rw-r--r-- 1 root root 1.4M 2004-08-28 01:02 a.chm.tar.bz2.1
-rw-r--r-- 1 root root 1.4M 2004-08-28 01:02 a.chm.tar.bz2.2
-rw-r--r-- 1 root root 220K 2004-08-28 01:02 a.chm.tar.bz2.3
如果大家想更全面地了解这些命令,可以通过 "man 命令 " 来查阅他们的手册。