博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux Tar Split压缩解压缩分片压缩解压缩
阅读量:6431 次
发布时间:2019-06-23

本文共 2942 字,大约阅读时间需要 9 分钟。

tar cjf /home/DATA/ai-new/packets/ | split -b 1000m - tt.tar.bz2

cat tt.tar.bz2.a* > tt.tar.bz2

tar czvf xx.tar.gz /home/dd

tar xvvf xx.tar.gz /home/dd

通过使用-C指定解压目录

tar -zxvf eclipse-jee-indigo-SR2-linux-gtk-x86_64.tar.gz -C /usr

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.tar.gz. --verbose
creating file skype_backup_20090626.tar.gz.aa’<br/>creating fileskype_backup_20090626.tar.gz.ab’
creating file skype_backup_20090626.tar.gz.ac’<br/>creating fileskype_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

转载于:https://blog.51cto.com/xiaosa/2318442

你可能感兴趣的文章
c#学习笔记 VS编辑器常用设置
查看>>
rsync 笔记之 list
查看>>
20个Mac用户必须掌握的触摸手势
查看>>
解决Ubuntu16的风扇高速旋转问题(双显卡)
查看>>
android jni aotf 错误
查看>>
Azkaban的功能特点(二)
查看>>
Android设置横屏竖屏
查看>>
InstallShieldpro2015 使用教程
查看>>
[RxJS] Add debug method to Observable in TypeScript
查看>>
1、金融之关于BIAS
查看>>
[转]ASP.NET Core基本原理(11)-管理应用程序状态
查看>>
C++异常与析构函数及构造函数
查看>>
WireShark抓包工具使用
查看>>
Golang的select多路复用以及channel使用实践
查看>>
C#关闭子窗口而不释放子窗口对象的问题解决
查看>>
VS Code搭建.NetCore开发环境(一)
查看>>
zprofiler三板斧解决cpu占用率过高问题(转载)
查看>>
Angular企业级开发(9)-前后端分离之后添加验证码
查看>>
01字典树贪心查询+建立+删除(个人模版)
查看>>
java-信息安全(十一)-非对称加密算法ECC以及ECDSA签名
查看>>