整个目录的有效复制

我想将一个目录及其下的两个文件复制到共享存储的另一个共享位置。 是否可以将三个(一个目录和两个文件)作为连续文件写入,并在另一侧分解以节省成本? 我仅限于c语言和Unix / Linux。 我正在考虑用inode信息创build一个结构,并在接收器处获取数据。

谢谢!

rsync是你在找什么。 或者如果你觉得像在另一边的外壳工作焦油。

您可以做的最好的优化是使用大缓冲区的副本。 如果这还不够,那么将数据重组为一个文件而不是目录中的两个文件。 下一步是获得更快的硬件。

Unix / Linux有很多常用的文件系统,你需要为它们编写一个自定义的复制算法。 即使是单个文件也很少保证连续的块,更不用说两个了。 赔率也是好的,你的块复制例程会绕过,比现有的文件系统优化效率低。

在写出之前将整个文件读入内存将在寻找时间最小化方面提供更多的好处,而不是打开更少的文件,至少对于超过一定大小的文件。 并不是所有的硬件都受到寻找时间的困扰。

出于某种原因, cpio通常比tar更受欢迎。

例如,您可以将cpio传输到远程运行cpio的ssh会话。