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

 

所以,在解压之前,先合并为一个完整的文件,然后进行解压

posted @ 2023-02-27 13:39  Zhai_David  阅读(3294)  评论(0编辑  收藏  举报