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
相关推荐
Cachel wood19 分钟前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Youkiup27 分钟前
【linux 常用命令】
linux·运维·服务器
qq_2975046130 分钟前
【解决】Linux更新系统内核后Nvidia-smi has failed...
linux·运维·服务器
_oP_i36 分钟前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
weixin_4373982144 分钟前
Linux扩展——shell编程
linux·运维·服务器·bash
小燚~1 小时前
ubuntu开机进入initramfs状态
linux·运维·ubuntu
小林熬夜学编程1 小时前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
炫彩@之星1 小时前
Windows和Linux安全配置和加固
linux·windows·安全·系统安全配置和加固
上海运维Q先生1 小时前
面试题整理15----K8s常见的网络插件有哪些
运维·网络·kubernetes
hhhhhhh_hhhhhh_1 小时前
ubuntu18.04连接不上网络问题
linux·运维·ubuntu