Linux 使用 Split 命令分割文件与合并

Linux的split命令,作为一个强大且实用的工具,其核心功能是将一个极其庞大的单个文件分割成多个更便于管理和处理的小文件。这个特性在众多实际应用场景中都展现出了极高的价值和灵活性。无论是为了适应存储设备的容量限制,还是为了方便文件传输时降低单个文件大小以满足网络传输条件,甚至是在进行大数据分析前按照一定规则预先划分数据集,Linux split命令都能发挥关键作用。

使用场景

  1. 数据传输

    • 当需要通过网络传输大文件,而带宽有限或者网络不稳定时,可以先将大文件分割成小块进行传输,之后再在目标主机上合并。
    • 例如,在FTP、电子邮件等不支持大文件上传的情况下,分块发送更方便。
  2. 磁盘空间管理

    • 如果服务器或存储设备的空间不足,可以临时将大日志文件或其他大型数据文件分割,处理完后再合并。
    • 对于备份操作,有时也需要对大文件进行分卷备份以适应磁盘介质(如CD/DVD)的大小限制。
  3. 分布式处理

    • 在并行计算或分布式环境中,可能需要将大数据集分割为若干小文件,以便分配到不同的节点上分别处理,处理完成后结果可以再合并。
  4. 数据库和日志处理

    • 日志文件过大时,可将其分割成多个便于阅读和分析的小文件。
    • 大型数据库备份文件也可以按照特定大小分割,便于管理和恢复。
  5. 脚本自动化

    • 在脚本中自动执行文件分割,用于后续的批处理任务或归档需求。

文件分割

  1. 最直接的方式进行分割
bash 复制代码
split -b 100M largefile.txt smallparts_

这条命令会将名为largefile.txt的大文件按每部分100MB的大小分割,并生成一系列以smallparts_开头的文件。

  1. 分割文件以数字为结尾,使用 -d
bash 复制代码
split -b 100M -d largefile.txt largeparts_

此命令会按100MB大小分割文件,但生成的文件名将以数字作为后缀(例如:largeparts_00largeparts_01等)。

  1. 将文件分割成指定份数, 使用 -n
bash 复制代码
split -n 2 -d largefile.txt output_

此命令 -n 2 表示将文件内容均分为两部分,-d 指定生成的文件名中包含数字后缀;执行上述命令后,largefile.txt 将被分割成两个文件:output_00output_01

文件合并

可以使用cat命令来合并由split命令分割出来的文件

bash 复制代码
cat x* > original_file
  • 这里x*表示所有以"x"开头的文件,这些文件是之前用split命令分割出来的。cat会将它们的内容连接起来,并重定向到新的original_file中。

注意事项:合并前请确保分割后的文件顺序正确,如果是按数字序号排列的,则直接按顺序合并即可。

MD5校验

文件拆分合并后,保险起见我们应当对其计算一下MD5,保证数据传输的一致性,我们没办法保证文件在传输过程中是否损坏,所以尤其是对一些分片数量多,文件体积大的文件合并后应当做一下校验。这里对合并文件前后MD5计算

bash 复制代码
md5sum largefile.txt
md5sum output.txt

可以看到两个文件的MD5值是一样的

更多用法

显示帮助信息

bash 复制代码
split --help
相关推荐
对你无可奈何27 分钟前
关于Ubuntu的 update造成的内核升级
运维·服务器·ubuntu
qq_312920111 小时前
Nginx限流与防爬虫与安全配置方案
运维·爬虫·nginx·安全
GanGuaGua1 小时前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
lsnm1 小时前
【LINUX网络】IP——网络层
linux·服务器·网络·c++·网络协议·tcp/ip
全糖去冰吃不了苦1 小时前
ELK 集群部署实战
运维·jenkins
不掰手腕1 小时前
在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
linux·数据库·postgresql
Lynnxiaowen2 小时前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash
努力学习的小廉2 小时前
深入了解linux系统—— POSIX信号量
linux·运维·服务器
刘一说2 小时前
CentOS部署ELK Stack完整指南
linux·elk·centos
从零开始的ops生活2 小时前
【Day 50 】Linux-nginx反向代理与负载均衡
linux·nginx