linux环境中,如何将一个大文件拆分成多个小文件?
背景及需求说明:
要对主机上的数据进行迁移,压缩完成之后,发现有将近500G大小的数据,
然后没有其他的磁盘了,其他的主机上的空间,也都只有200G左右,
所以这个时候,就需要将这个文件拆分成多个大小不同的文件,这个时候,该怎么做呢?
后来找到了一个方法,就是将这个文件进行拆分的方式
下面的部分,就为你讲解整个的过程
其实,非常的简单......
1、在目录中,可以看到一个450G的文件
[root@node142 data02]# ls -ltrh 117data.tar.gz -rw-r--r-- 1 root root 445G Feb 24 15:42 117data.tar.gz [root@node142 data02]#
2、通过以下的命令进行拆分
拆分成80G大小的文件
split -b 80G 117data.tar.gz -d 117data.tar.gz_
参数说明:
- -b指定拆分之后,每个文件的大小,单位可以是B,K,M,G
- 最后的117data.tar.gz_指定的是,拆分出来的文件的前缀
- -d指定的是拆分出来的后缀,是数字的,从0开始,例如xx_00,xx_01这样的
3、拆分之后的效果
[root@node142 data02]# ls -ltrh total 889G -rw-r--r-- 1 root root 445G Feb 24 15:42 117data.tar.gz -rw-r--r-- 1 root root 80G Feb 27 10:10 117data.tar.gz_00 -rw-r--r-- 1 root root 80G Feb 27 10:39 117data.tar.gz_01 -rw-r--r-- 1 root root 80G Feb 27 11:08 117data.tar.gz_02 -rw-r--r-- 1 root root 80G Feb 27 11:35 117data.tar.gz_03 -rw-r--r-- 1 root root 80G Feb 27 12:04 117data.tar.gz_04 -rw-r--r-- 1 root root 45G Feb 27 12:19 117data.tar.gz_05 [root@node142 data02]#
一个大的文件,被拆分成多个文件了。
就可以实现,小文件的传输了。
4、文件合并
使用cat命令,将split命令拆分的文件,进行合并
cat 117data.tar.gz_0* > 117data.tar.gz
如果不进行合并,比如,单独对某个拆分的文件进行解压缩,会报错:
gzip: stdin: unexpected end of file tar: Unexpected EOF in archive tar: Unexpected EOF in archive tar: Error is not recoverable: exiting now
所以,在解压之前,先合并为一个完整的文件,然后进行解压