本文共 1435 字,大约阅读时间需要 4 分钟。
将大文件或目录打包、并成制定大小的文件,这在将数据到容量有限的移动储存设备时是必须的,在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命令"来查阅他们的手册。
转载地址:http://qhoai.baihongyu.com/