tar,split分卷压缩

http://www.cngry.com/archives/tar-split.html

  在Linux的分卷压缩中,一共有涉及到3个命令:tar、split、cat,分别为压缩打包、文件分割和文件合并。

一、压缩
  1、压缩:

tar -czvf gry.tar.gz yourfilename

注:c-create 建立 z-用gzip压缩 v-显示过程 f-file

  2、分割

split -b 500k gry.tar.gz gry.tar.gz.

  “-b 500k” 为分卷大小,还可以为m等单位,如-b 256m。
  后面的“gry.tar.gz.”表示将被拆分为gry.tar.gz.aa,gry.tar.gz.ab……

  压缩过程也就到此结束。

  1、2步可合并执行:

tar -czvf - yourfilename|split -b 500k - gry.tar.gz.

  值得注意的是,中间多了几个减号(-),一定要有,否则会出错。

二、解压
  1、合并

cat gry.tar.gz.*>gry.tar.gz

  2、解压

tar -xzvf gry.tar.gz

说明:x-解压 z-gzip v-显示过程 f-file

  这两步也能一同执行

cat gry.tar.gz.*|tar -xzvf

  这样,也就成功解压了文件。

 

 

 

 

###########################################

http://www.21andy.com/blog/20080121/775.html

以每卷500M为例
tar分卷压缩:

tar cvzpf - somedir | split -b 500m

tar多卷合并:

cat x* > somedir.tar.gz

tar解压缩:

tar xvfz somedir.tar.gz

tar:
-c: create a new archive
-v: verbosely list files processed
-z: filter the archive through gzip
-p: extract all protection information, 释放包时使用-p参数来保留原来的权限
tar在创建包的时候有包含文件原先的权限,但是释放包的时候默认是使用新建文件的权限,而不是文件原先的权限,除非带上-p参数
-f: 定义操作所使用的tar档案文件
-x: extract files from an archive

tar分卷压缩
分卷压缩
原有文件

17M Sep  4  2006 HelixServerUnlimited11_Linux.zip

命令:

tar czvfp - . | split -d -b 5m

解释:当前目录下每5M文件压缩一下
在当前目录下生成

-rw-r--r--  1 root  root  5.0M Jun 20 18:56 x00
-rw-r--r--  1 root  root  5.0M Jun 20 18:56 x01
-rw-r--r--  1 root  root  5.0M Jun 20 18:56 x02
-rw-r--r--  1 root  root  1.7M Jun 20 18:56 x03

四个文件
合并压缩文件
命令:

cat x0* > dd.tar.gz

tar zxvf dd.tar.gz 文件后

生成文件

17M Sep  4  2006 HelixServerUnlimited11_Linux.zip

比较md5sum,文件HelixServerUnlimited11_Linux.zip 的md5sum一致

ssh root@192.168.0.2 "cd ~root ; tar zcvf - squid.conf " | tar zxv

将192.168.0.2的squid.conf文件拷到本机,传输之前压缩,拷到本地之后解压

 

Tags: tar分卷

本文地址: http://www.21andy.com/blog/20080121/775.html

##########################################

http://hi.baidu.com/hovlj_1130/blog/item/149e27d076fb8dd8572c84fd.html

 

有时候远程下载tar包的时候,由于包太大,失去连接时,需要重新下载非常郁闷。
这时候使用split分割分解拆分大包文件,然后单个下载下文件就OK。

在Linux下使用 tar 命令来将文件打包并压缩是很通常的用法了。可是Linux的文件系统对文件大小有限制,也就是说一个文件最大不能超过2G,如果压缩包的的内容很大,最后 的结果就会超过2G,那么该怎么办呢?又或者压缩包希望通过光盘来进行备份,而每张光盘的容量只有700M,那么该如何存储呢?解决的办法就是将最后的压 缩包按照指定大小进行分割,这就需要用到split命令了。

举例说明:
要将目录logs打包压缩并分割成多个1M的文件,可以用下面的命令:
tar cjf - logs/ |split -b 1m - logs.tar.bz2.
完成后会产生下列文件:
logs.tar.bz2.aa, logs.tar.bz2.ab, logs.tar.bz2.ac
要解压的时候只要执行下面的命令就可以了:
cat logs.tar.bz2.a* | tar xj

再举例:
要将文件test.pdf分包压缩成500 bytes的文件:
tar czf - test.pdf | split -b 500 - test.tar.gz
最后要提醒但是那两个"-"不要漏了,那是tar的ouput和split的input的参数。

这里对命令做一些讲解。 
压缩和分割命令行中红色部分的为命令对应的I/O文件名参数,其中-表示标准输入或输出。那么结合上面的例子,tar命令表示的意思就是将logs目录压缩,生成的结果直接输送到标准输出上;而split命令表示从标准输入获得文件内容进行分割,结果文件前缀为logs.tar.bz2.。二者再通过管道将各自的标准输入输出对接起来。 

这里再解释一下split命令的参数含义: 
-b SIZE 指定每个文件的大小,其单位可以为b(512字节)、k(1K)、m(1M) 
-d 使用数字而不是字母作为后缀名 
-a X 指定后缀名的长度,默认为2位 

这样上面的命令就可以变化为: 
tar cjf - logs/ |split -b 1m -d -a 1- logs.tar.bz2.

 

############################################

http://www.cnblogs.com/xiaouisme/archive/2011/05/25/2057435.html

tar是文件打包工具,split是文件分割工具,在邮件中发送附件的时候,可能因为附件大小限制,需要压缩并分割,分几封邮件发送。如果需要备份很多资料的时候,打包后的单个文件可能超出文件系统支持的单个文件大小限制的时候,也需要分割成适合大小的文件包。刚好今天又要备份skype文件夹,所以就用这个实例来说明一下tar和split这两个指令,如何压缩、分割,再通过cat合并分割的文件解压还原,以及在管道”|”配合下的打包分割文件过程。

例如:我的.skype文件已经有35M之多了,现在需要压缩备份起来,直接用tar打包:

tar压缩文件:
[marco.chan@linuxhobby backup]$ ls
skype_backup
[marco.chan@linuxhobby backup]$ tar -czvp -f skype_backup.tar.gz skype_backup
中间的打包压缩输出过程省略…
skype_backup/marco.chan.skype/chat512.dbb
skype_backup/marco.chan.skype/user4096.dbb
skype_backup/marco.chan.skype/chatmsg256.dbb
skype_backup/shared.xml
skype_backup/shared.lck
[marco.chan@linuxhobby backup]$ ls
skype_backup.tar.gz skype_backup

因为用了“-v”参数,所以中间会输出打包压缩的文件信息。
-c (create)当然是建立一个打包文件。
-z (gzip)调用gzip进行压缩,建议后缀名为*.tar.gz;也可以用-j(bzip2),建议后缀名为*.tar.bz2。
-p (preserve-permissions)小写的p,保持原先的文件属性,也就是rwx属性。
-f (file)输出的目标文件“skype_backup.tar.gz” 将要被处理的源文件“skype_backup”,可以将-f连写,但是为了容易记忆和区分,所以这里分开写了。

打包后的skype_backup.tar.gz还有15M大小,但是我的邮件附件就支持6M大小,所以还得分割。

splite分割文件
[marco.chan@linuxhobby backup]$ split -b 4000k skype_backup.tar.gz skype_backup_20090626.tar.gz. –verbose
creating file `skype_backup_20090626.tar.gz.aa’
creating file `skype_backup_20090626.tar.gz.ab’
creating file `skype_backup_20090626.tar.gz.ac’
creating file `skype_backup_20090626.tar.gz.ad’
[marco.chan@linuxhobby backup]$ ls
skype_backup skype_backup_20090626.tar.gz.ac
skype_backup_20090626.tar.gz.aa skype_backup_20090626.tar.gz.ad
skype_backup_20090626.tar_20090626.gz.ab skype_backup.tar.gz

-b 指定分割大小,例如k,m等单位。
–verbose 输出分割文件信息,可选。
skype_backup.tar.gz 被分割的文件。
skype_backup_20090626.tar.gz. 分割后的文件名(注意gz后面的”.”),如果不指定的话,默认是xaa,xab,xac。

现在通过tar,split,已经将skype_backup目录文件打包、分割为每个最大为4M大小的压缩包了。
以上是分步执行,如果用管道”|”,将tar,split写成一个执行语句:

使用管道“|”合并两个指令:
[marco.chan@linuxhobby backup]$ tar -czvp -f – skype_backup |split -b 4000k – skype_backup_20090626.tar.gz. –verbose
[marco.chan@linuxhobby backup]$ ls
skype_backup
skype_backup_20090626.tar.gz.aa
skype_backup_20090626.tar.gz.ab
skype_backup_20090626.tar.gz.ac
skype_backup_20090626.tar.gz.ad

注意一下指令中的两个“-”,如果分开执行,就不用”-”。为什么有这个”-”?

man tar
-f, –file [HOSTNAME:]F
Use archive file or device F (default “-”, meaning stdin/stdout). Note that “/dev/stdout” is not equivalent to “-”.Using “/dev/stdout” explicitly can lead to corrupted archive, especially when coupled with “-v”.

如何解压分割文件
把文件分割了几个包,当然也要能合并解压了,合并文件当然用cat了,cat不仅仅是用来处理合并文本文件的,也可以用来合并压缩文件。

cat合并分割的文件:
[marco.chan@linuxhobby backup]$ cat skype_backup_20090626.tar.gz.a* >skype_backup_cat.tar.gz

将之前分割的压缩包合并成skype_backup_cat.tar.gz,然后可以通过tar -zxvf来解压skype_backup_cat.tar.gz,通过管道”|”可写成:

使用管道“|”合并两个指令:
[marco.chan@linuxhobby backup]$ cat skype_backup_20090626.tar.gz.a* |tar -zxv

关于更多的tar、split、cat指令应用,建议通过man查询。

 
posted @ 2012-05-16 14:09  陳聽溪  阅读(3607)  评论(0)    收藏  举报