按大小分割二进制文件的最新技术是什么?

按大小分割二进制文件的最新技术是什么?

一些你可以愉快地跳过的背景

大约二十年前,当浏览网络花费很大时,当我还是一个仅使用 Windows 的用户时,当 CD/DVD 是一种大型存储手段时,当与朋友或亲戚共享视频文件时有时需要拆分将文件复制到多张 CD/DVD 上,将它们复制到另一台计算机上,然后重新连接这些片段,我曾经使用过HJ分裂。工作起来就像一个魅力。

动机

快进 20 年,我最近发现自己需要在 Linux 上使用这样的实用程序,因为连接缓慢/不可靠,不允许我轻松地scp跨物理距离很远的 Linux 系统进行数据传输。我想到的解决方案是分割文件并传输各个部分,然后重新连接它们。

这就是我发现 HJSplit 仅适用于 Windows 的原因lxsplit存在并且也像魅力一样发挥作用,所以一切都很好。

我的问题

lxsplit自 2008 年以来就被放弃了,所以也许在这 15 年里出现了一些其他(更好?)的解决方案。

Linux 上这个领域(即分割和重新合并大型二进制文件)的最新技术是什么?

额外的动力

我还认为从概念上讲,分割文件并重新加入它是一个非常简单的任务,所以我想知道我是否可以编写自己的程序来执行此操作。我尝试过,并在几个小时内得到了一些东西,但它至少比lxsplit.在深入分析和基准测试之前,我想知道是否有其他类似的程序具有比lxsplit.


(1) 我对用于完成在两个系统之间传输大文件的原始任务的替代工作流程不感兴趣。是的,今天您可能会从一个系统将其上传到 Dropbox/Onedrive/GoogleDrive/任何系统,然后从另一个系统下载。

答案1

split命令自古以来就是 Unix 的一部分,虽然它最初是一个分行的文本处理命令,但现代的实现也可以处理二进制文件。split -b是在POSIX忙碌盒

要分割,请选择片段的大小(最后一个片段将是剩下的片段)以及片段文件名的前缀。 (您无法选择编号样式或文件名的扩展名。)

split -b 1440k myfile.bin part-

要连接各个部分,只需使用cat.对各个部分使用 shell 通配符,它​​们将按正确的顺序排列。

cat part-?? >myfile.bin

请注意,我们保证您会按照正确的顺序获得零件,但不会检查是否有零件丢失。此外,也无法防止混合来自不同文件的部分。使用诸如cksummd5summd5或两个系统上可用的任何命令来计算原始文件和重组文件的校验和。

答案2

我想到的解决方案是分割文件并传输各个部分,然后重新连接它们。

那么这听起来像是 XY 问题。只需使用 rsync:

rsync -avzh verybigfileordirectory [email protected]:/home/user/destination/

您可以根据需要停止并启动它。它将找出远程端丢失的数据(小的协商开销)并仅复制该数据。它确实需要两端进行 rsync。

答案3

我建议使用 zip,它专门针对二进制文件。

尽管有些用户可能会因为某种 DOS 的味道而对此持谨慎态度:-)

相关内容