Linux文件的切割与合并

需求:
我们传输一个大文件时,有时网络比较慢,需要花费很长时间才能传输完成,或者传输的过程中,网络不稳定,有可能导致此次传输失败,针对这种情况,我们可以把大文件切分成小文件,再逐个的传输到目的地,最后再把它们合并成一个文件
小文件传输有什么优点呢?当出现网络闪断导致传输失败了,也只需要重新传输失败的一个文件,由于文件比较小,重新传输相对大文件要快很多,另外,切割成小文件,可以增加传输的并发量,也就是说多个小文件同时传输,比传输单个文件速度更快
Linux下切割文件的命令是 split 合并文件可以使用 cat 命令,下面将介绍这两个命令的使用以及切割和合并文件的方法

语法:
split 命令的语法如下:

split [OPTION]... [INPUT [PREFIX]]

PREFIX 表示大文件分割后产生的小文件名字的前缀,默认是小写字母 x,前缀后跟一组字符 , 按照类似 aa、ab、ac 字母顺序组成一个一个的文件名,比如:切割成三个文件,它们的文件名默认就是 xaa、 xab、 xac
OPTION 表示命令的选项,比如:按字节切割文件,按文件行切割文件等,下面列出了一些常用的选项

在这里插入图片描述

切割文件实例:
1) 按文件大小切割
创建一个100M的文件

fallocate -l 100M file

切割成每个文件20M,并输出日志

split -b 20M --verbose file

在这里插入图片描述
2) 指定切割成多少份
切割成10份,后缀使用数字不使用默认字母,指定前缀

split -n 10 -d num num_	

在这里插入图片描述
3) 按行分割
首先创建一个 10K 大小的文件, 文件的每一行内容都是 “this is a test file”,并查看多少行

yes "this is a test file" | head -c 10K > numfile
[root@VM-12-12-centos bird]# cat numfile | wc -l
512

每100行切割一次

split -l 100 numfile

在这里插入图片描述

  1. 禁止生产长度为0的文件
    由于切割的最小单位是1kb,如果5kb的文件切割为8份,就会有3个文件是0kb,所有这个时候就可以加上-e参数禁止生产0kb的文件
    首先创建一个5kb的文件

     fallocate -l 5 testfile
    

将testfile分割为8份

split -n 8 -e testfile

在这里插入图片描述
#可以看出并没有生产0字节的文件

切割与合并
大文件切割成许多小文件,通过网络全部传输到远程机器上之后,需要把它们合并成一个大文件,并且合并之后的大文件与原始的大文件要一模一样,下面我们通过一个实例来说明整个过程
1、 生成一个1G的文件用做分割和合并实验

fallocate -l 1G file

2、 查看文件的MD5值,用于合并文件时,检验文件是否损坏

md5sum file

在这里插入图片描述3、 3、 将file文件分割成10份

split -n 10 -d file

在这里插入图片描述

4、 将文件进行合并

cat x* >new_file

在这里插入图片描述
5、 MD5值校验
在这里插入图片描述
#可以看出文件没有问题,这里有模拟了向远程主机切片传输文件,并合并的一个过程

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值