我们可以通过处理文件系统来合并二进制文件而不进行任何复制操作吗?

zz6*_*z64 9 linux shell filesystems files

我想使用 shell 命令有效地合并二进制文件,我很快找到了这样的经典方法:

cat file1 file2 > file3
Run Code Online (Sandbox Code Playgroud)

不错,但是:

  1. 它很慢。IO 访问很慢。
  2. 它需要额外的空间。我不想复制文件。只需连接它们。

文件系统非常适合处理文件碎片。我们不能使用这个机制合并文件吗?

The*_*nce 9

你可以这样做:

cat file2 file3 [...] filen >> file1
Run Code Online (Sandbox Code Playgroud)

这将连接file2, file3,...,filenfile1就地结束。该>>运营商告诉shell写入到文件尾

您想利用文件系统来“处理文件碎片”。不幸的是,没有任何通用的方法可以做到这一点。这是因为“文件系统”比磁盘上的文件系统更通用——例如,您有NFSFUSE和许多其他机制,可以让您将任何类型的资源(不仅仅是块设备,如硬盘)公开为文件系统层次。即使对于基于块设备的文件系统,也没有标准机制可以做到这一点,我也不知道任何特定于实现的机制。