tar分卷压缩与解压缩
前言
说来超级郁闷,本来我电脑上是有MATLAB的,但是这次上实验课正好要用到时,我打开我的软件夹一看!!!What???不见了!!!我把电脑翻了个遍,怎么找不到MATLAB这个软件,安装包也失踪了。。。。怎么可能?那可是十几个G文件啊,而且这段时间又在家里,用的又是手机数据流量,网慢的要死,下十几个G的文件简直是?,情急之下,我去下恢复数据的软件、改注册表。。让我失望的是,都失败了。冷静下来的我,想了想,可能是因为之前合并磁盘的时候搞丢了一些文件吧,既然找不回了,就只好去下载了。。。
MATLAB安装包的资源,基本都在百度网盘上,更巧的是:我这段时间正在白嫖百度AI Studio的算力资源,正好我算力用都用不完,刚好让我下百度网盘的资源,然后再从AI Studio上下载到本地,我觉得这样下载到本地会大大节省我的流量,不用担心文件损坏重新下载。于是我就在AI Studio上安装了一个百度网盘下载器BaiduPCS-Go,把下载MATLAB得任务挂载到后台,大概整整下载三天三夜的时间才下载完。。。(想不到百度对自家的产品也这么坑?)
然后。。然后。。。就有了下面的分卷压缩???
将20G大小的MATLAB文件打包压缩并分割成多个300MB的文件
分卷压缩.tar.gz
文件
tar zcf - ./MATLAB |split -d -b 300m - ./MATLAB/MATLAB.tar.gz.
# 生成文件:MATLAB.tar.bz2.00 MATLAB.tar.bz2.01 ... ...
分卷压缩.tar.bz2
文件
tar jcf - ./MATLAB |split -d -b 300m - ./MATLAB/MATLAB.tar.bz2.
# 生成文件:MATLAB.tar.bz2.00 MATLAB.tar.bz2.01 ... ...
注意:那两个-
不要漏了,那是tar
的ouput
和split
的input
的参数
合并分卷及解压缩
# 解压gz分卷
cat MATLAB.tar.gz* | tar zx
# 解压bz2分卷
cat MATLAB.tar.bz2* | tar jx
tar 命令简述
参数:
-j : 通过bzip2进行压缩\解压文件*.tar.bz2
-z : 通过gzip进行压缩\解压文件*.tar.gz
-c : 新建打包文件,可搭配-v来查看过程中被打包的文件名
-t : 查看打包文件的内容有哪些文件名
-x : 解压打包文件.
-v : 在压缩/解压过程中,显示正在处理的文件名
-f : -f后面接被处理的文件名
-C(大写) : 后接目录
-p : 保留备份数据的原本权限与属性
-P : 保留绝对路径,即允许备份数据中含有根目录存在的目录(危险)
常用:欲压缩或打包的文件或目录(/*)
bzip2压缩命令:tar -jcv -f boot.tar.bz2 /boot
gzip压缩命令 :tar -zcv -f boot.tar.gz /boot
bzip2查看命令:tar -jtv -f /dir/*.tar.bz2
gzip 查看命令:tar -ztv -f /dir/*.tar.gz
bzip2解压缩命令:tar -jxv -f /dir/*.tar.bz2 -C 欲解压缩的目录
gzip解压缩命令 :tar -zxv -f /dir/*.tar.gz 欲解压缩的目录
特殊:
备份重要的系统数据,包括其完整的权限(-p参数): tar -jcvp -f /root/etc.tar.bz2 /etc
只解压压缩文件内的其中一个文件: tar -jxv -f /root/etc.tar.bz2 etc/shadow
打包目录,但不含该目录下的某些文件(--exclude):
tar -jcv -f /root/system.tar.bz2 --exclude=root/etc* --exclude=root/system.tar.bz2 /etc /root
仅备份比某个时刻还要新的文件:
备份 :tar -jcv -f /root/etc.newer.2011.02.16.tar.bz2 –newer-mtime='2011-02-16' /etc/*
查看备份:tar -jtv -f etc.newer.2011.02.16.tar.bz2
注意:在备份文件的时候也备份它的父目录
split 命令简述
功能说明:切割文件。
语法:split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
补充说明:split可将文件切成较小的文件,预设每1000行会切成一个小文件。
参数:
-<行数>或-l<行数> 指定每多少行就要切成一个小文件。
-b<字节> 指定每多少字就要切成一个小文件。支持单位:m,k
-C<字节> 与-b参数类似,但切割时尽量维持每行的完整性。
–help 显示帮助。
–version 显示版本信息。
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。
例子:
1.按100KB的测试文件拆分
# split -b 10k date.file
# ls
date.file xaa xab xac xad xae xaf xag xah xai xaj
件被分割成多个带有字母的后缀文件,如果想用数字后缀可使用-d参数,同时可以使用-a length来指定后缀的长度:
# split -b 10k date.file -d -a 3
# ls
date.file x000 x001 x002 x003 x004 x005 x006 x007 x008 x009
为分割后的文件指定文件名的前缀:
# split -b 10k date.file -d -a 3 split_file
# ls
date.file split_file000 split_file001 split_file002 split_file003 split_file004 split_file005 split_file006 split_file007 split_file008 split_file009
2.按行数拆分
# split -l 10 date.file