(转)使用tar和split打包分割文件

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

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

用tar压缩文件:
[[email protected] backup]$ ls
skype_backup
[[email protected] 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
[[email protected] 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分割文件:
[[email protected] 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’
[[email protected] 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写成一个执行语句:

使用管道“|”合并两个指令:
[[email protected] backup]$ tar -czvp -f – skype_backup |split -b 4000k – skype_backup_20090626.tar.gz. –verbose
[[email protected] 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合并分割的文件:
[[email protected] 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,通过管道”|”可写成:

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

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

转摘请注明出处:麦麦的不老阁 » 《使用tar和split打包分割文件

本文地址:http://www.uncle.ws/2009/06/tar-split-cat/

订阅博客地址:http://www.uncle.ws/subscribe/

时间: 2024-10-09 22:13:49

(转)使用tar和split打包分割文件的相关文章

linux 下tar 打包分割文件和解压文件方法一点通

首先是压缩: tar -czvp -f skype_backup.tar.gz skype_backup 分割: split -b 4000k skype_backup.tar.gz skype_backup_20090626.tar.gz. –verbose 如上两句命令合并为一句: tar -czvp -f – skype_backup |split -b 4000k – skype_backup_20090626.tar.gz. –verbose 合并文件: cat skype_backu

Linux(CentOS)用split命令分割文件

在 Linux 里,稍加不注意有可能会产生很大体积的日志文件,哪怕几百M,拖下来分析也很浪费时间,这个时候,如果可以把文件切割成 N 个小文件,拿最后一个文件就可以看到最近的日志了.有一些手段,比如用 shell 把日志按每天生成等等,但是不是这里的讨论范围.利辛县档案局 CentOS 里切割大文件的命令如下: view source print? 1 split [OPTION] [INPUT [PREFIX]] 选项如下: -a : 指定后缀长度 -b : 每个文件多少字节 -d : 使用数

linux下使用split命令分割文件且文件号从1开始

Linux里切割大文件的命令如下: split [OPTION] [INPUT [PREFIX]] 选项如下: -a : 指定后缀长度 -b : 每个文件多少字节 -d : 使用数字后缀而不是字母 -l : 指定每个文件的行数 2.比如我想让后缀长度为 2,即 -a 2.用数字后缀 -d.每个文件 10M,即 -b 10m.命令可以设计如下:split -a 2 -d -b 10m /var/lib/mysql/general.log nowamagic nowamagic00 nowamagi

Linux的Split 命令 (文件分割)

功能能说明:分割文件.############################################################################# Split:按指定的行数截断文件 格式: split [-n] file [name] 参数说明: -n: 指定截断的每一文件的长度,不指定缺省为1000行 file: 要截断的文件 name: 截断后产生的文件的文件名的开头字母,不指定,缺省为x,即截断后产生的文件的文件名为xaa,xab....直到xzz #####

tar -- 打包压缩文件

先看一个例子: 1.将当前目录下所有.txt文件打包并压缩归档到文件this.tar.gz,我们可以使用 tar zcvf this.tar.gz ./*.txt 2.将当前目录下的this.tar.gz中的文件解压到当前目录我们可以使用 tar xzvf this.tar.gz ./ 下面介绍几个重要的参数: (一)打包部分参数      tar [-] A --catenate --concatenate | c --create | d --diff --compare | --delet

split 分割文件

1.命令功能 split将文件分割成多个碎片文件. 2.语法格式 split  option  input  prefix split  选项    输入文件名   输出文件名前缀 参数说明 参数 参数说明 -a 长度为n的后缀,默认长度为2 -b 输出文件的最大字节 -c 输出文件的行数的最大字节数 -l 输出文件最大行数 -d 用数字后缀代替字母后缀 3.使用范例 范例1 分割passwd文件,每个文件最大8行,后缀长度3,后缀以b开头 [[email protected] chu]# sp

java分割文件并且合并文件(zip,rar....)

JAVA分割文件,把一个ZIP文件通过指定的大小分割,然后合并起来. 分割 package com.zkq.objectstream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.Fil

JAVA之IO技术 分割文件

/* * 讲一个图片文件按照指定的大小切割成多个碎片文件. * 方法: * 循环读取数据到缓冲区,存放到不同的文件中就OK的啦 */ package ioTest.io3; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class SplitFileDemo { public static void main(String[] args) {

打包压缩文件命令

命令 参数 说明 -------------------------------------------------------------------------------- tar 用于对文件打包压缩或解压 打包并压缩文件 tar -czvf 压缩包名.tar.gz -c 打包文件 解压并展开压缩包 tar -xzvf 压缩包.tar.gz -x 解开压缩文件 -t 查看压缩文件内有哪些文件 -z 用Gzip压缩或解压 -j 用bzip2压缩或解压 -v 显示压缩或解压的过程 -f 目标文