重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
15 分钟之后,我要去朋友家聚会。我打算从我的台式机上把一部 700MB 大小的美国大片拷贝出来,带到朋友家去看,可是我的两个优盘都只有 512MB,这让我如何是好?
奉贤网站建设公司成都创新互联公司,奉贤网站设计制作,有大型网站制作公司丰富经验。已为奉贤成百上千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的奉贤做网站的公司定做!
别急,用 10 分钟赶快来认识一下我们的 split 拆分小能手,一切问题将迎刃而解。当遇到大文件而苦不堪言的时候,split 就会像天使一样解救我们于水火之中。
合久必分
闲言少叙,我们现在就来介绍拆分的方法。先使用 dd 命令来生成一个 700MB 文件来作为我们的拆分对象:
美国大片的文件大小是 700MB,而我手边仅有的两个优盘,都是 512MB 大小的。我打算把文件以 400MB 作为一个拆分单位,来进行拆分。这里使用到了 split 的-b选项,来指定每个拆分文件的大小:
看!分身完毕!咦,怎么多出了 xaa 和 xab 两个文件,这么奇怪的名字?
是的,你没看错,在没有明确指定拆分后文件的命名方式的情况下,split 会默认采用 x 字符作为文件前缀,采用类似 aa、ab、ac 的字符串依次作为文件后缀。于是,就出现了我们上面看到的 xaa、xab 了。
从文件大小来看,如我们所愿,电影文件的确被切割成了一个 400MB 的文件、一个 300MB 的文件,终于可以装到两个优盘里了。
知其然,知其所以然
知道了拆分命令后,我们来一起学习一下 split 的命令格式和常用选项。
split 的作用很好描述,就是将文件按照一定规则进行拆分。一般情况下,我们可以按照文件大小来进行拆分,如果是文本文件的话,还可以按照行数来进行拆分,默认是 1000 行作为一个拆分单位。
默认情况下,分割后的文件的名称会以 x 作为前缀,以 aa、ab、ac 这样的双字母格式作为后缀,形成 xaa、xab 这样的名称格式。
我们来一起看看 split 的命令格式:
split [-b ][-C ][-][-l ][要切割的文件][输出文件名前缀][-a ]
最常用的选项,都在这里了:
-b字节:指定按多少字节进行拆分,也可以指定 K、M、G、T 等单位。
-行数或-l行数:指定每多少行要拆分成一个文件。
输出文件名前缀:设置拆分后的文件的名称前缀,split 会自动在前缀后加上编号,默认从 aa 开始。
-a后缀长度:默认的后缀长度是 2,也就是按 aa、ab、ac 这样的格式依次编号。
分久必合
完成了美国大片的拆分,我赶赴朋友家,打开他的电脑,优盘插上,使用 cat 命令将拆分文件 xaa 和 xab 合并成一个文件,可以看出合并后的文件和源文件的大小是一致的:
对了,如果是在 Windows 下的话,我们要先运行 cmd,然后用 copy 命令来进行文件的合并:
copy /b xaa + xab king_of_ring.avi
格式上和 Linux 有些区别,但原理是一样的。
设置拆分文件的名称前缀
上面例子中,我们没有指定拆分文件的名称前缀,结果拆分后的文件名都是 aa、ab 这样的名称,这样的名称既不达意也不美观。
下面的例子,我们尝试以 king_of_ring_part_ 作为拆分后文件的名称前缀:
[root@roclinux ~]$ split -b 400m king_of_ring.avi king_of_ring_part_
文件名的可读性是不是提高了不少,从文件名称就可以看出来是美国大片的拆分文件啦。
设置数字后缀
如果大家看不惯以 aa、ab 这种字母作为文件后缀,我们还可以通过-d选项来指定数字形式的文件后缀:
[root@roclinux ~]$ split -b 400m -d king_of_ring.avi king_of_ring_part_
对于中国人来说,数字形式的后缀,增加了文件名称的可读性。
按照行数进行拆分
前面我们讲的是按照文件大小(如 400MB)进行文件拆分的方法,但是并非所有情况都适合于用文件大小作为拆分单元。比如,我们希望把 /etc/passwd 文件按照一个文件 10 行记录的方式进行拆分,又该怎么操作呢?
[root@roclinux ~]$ split -d -10 /etc/passwd my_passwd_
合并后的校验不可少
需要注意的是,在通过网络来传输大文件,或者在设备之间复制大文件的时候,可能会出现传输前后数据不一致的情况。
使用 split 来拆分大文件仅仅是故事的开始,操作完毕后化零为整、完璧归赵才是完美的结局。因此需要在合并文件后进行文件的完整性校验,推荐使用 md5sum 来计算和比对前后两个大文件的 md5 值。
如果前后一致,那么恭喜你,文件合并成功!
好了,split 学完了,我们也可以和朋友一起欣赏惊险刺激的美国大片了!
在linux系统下用vim打开大小几个G、甚至几十个G的文件时,是非常慢的。
这时,我们可以利用下面的方法分割文件,然后再打开。
1、查看/导出文件的前多少行
上面命令的意思是:把big.log文件前10000行的数据写入到temp.log文件中。
2 、查看文件的后多少行
上面命令的意思是:把big.log文件后10000行的数据写入到temp.log文件中。
3 、查看文件的几行到几行
上面命令的意思是:把big.log文件第10到10000行的数据写入到temp.log文件中。
4 、根据查询条件导出
5、 实时监控文件输出(查看日志时经常会用到)
1)按2行切割 -l 2
2)指定切割后的文件前缀名 data_
3)指定切割后的文件后缀名为数字 -d
4)指定切割后的文件后缀名数字的长度 -a 4,即位宽(10进制),这里长度可根据切割出来的文件有多少估算,到底拆分为几个文件,由总行数,和每个文件的行数决定,不用指定。
如果为-a 4文件的后缀数字从0000开始计算,依次为0001,0002,0003,0004
split -l 2 data.log -d -a 4 data_
将文件data.log进行拆分,每个文件2行,如果文件总共有7行,则分为data_0000,data_0001,data_0002,data_0003
tar -zcvf cm-11.tar.gz cm-11
//将cm-11文件夹压缩成cm-11.tar.gz
split -b 4000M -d -a 1 cm-11.tar.gz cm-11.tar.gz.
//使用split命令,-b 4000M 表示设置每个分割包的大小,单位还是可以k
// -d "参数指定生成的分割包后缀为数字的形式
//-a x来设定序列的长度(默认值是2),这里设定序列的长度为1
执行命令后,生成压缩包如下:
tar -zcvf cm-11.tar.gz cm-11 | split -b 4000M -d -a 1 - cm-11.tar.gz.
//采用管道,其中 - 参数表示将所创建的文件输出到标准输出上
tar -zxvf cm-11.tar.gz
cat cm-11.tar.gz.* | tar -zxv
tar可以用来压缩打包单文件、多个文件、单个目录、多个目录。
Linux打包命令 tar
tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。
常用格式:
单个文件压缩打包 tar -czvf my.tar.gz file1
多个文件压缩打包 tar -czvf my.tar.gz file1 file2,...(file )(也可以给file 文件mv 目录在压缩)
单个目录压缩打包 tar -czvf my.tar.gz dir1
多个目录压缩打包 tar -czvf my.tar.gz dir1 dir2
解包至当前目录:tar -xzvf my.tar.gz
cpio
含子目录find x* | cpio -o /y/z.cpio
不含子目录ls x* | cpio -o /y/z.cpio
解包: cpio -i /y/z.cpio
[root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!