zoukankan      html  css  js  c++  java
  • tar split命令

    转自: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查询。

     
  • 相关阅读:
    linux 配置文件.conf 非打印字符出错的研究(一)
    Python:Relative import 相对路径 ValueError: Attempted relative import in non-package
    GitHub desktop 管理 gitee 私有库
    python enumerate ,range下标迭代
    everything http服务器局域网不能访问 // Windows evething http server connect timeout in lan
    python install jnius, sikuli ;Exception: Unable to determine JDK_HOME
    sublime3 自定义 修改 颜色主题 配色方案
    python K线 蜡烛图
    IOError: [Errno 22] invalid mode ('rb') or filename: ’u202a’ / 'xe2x80xaa’
    [资源]汇集最有用的PHP资源
  • 原文地址:https://www.cnblogs.com/dirt2/p/5474178.html
Copyright © 2011-2022 走看看