首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行文件复制

并行文件复制
EN

Server Fault用户
提问于 2010-06-18 01:08:29
回答 5查看 17.9K关注 0票数 11

我有一个在Linux系统上复制的文件列表--每个文件的大小从10到100 in不等。

我只想复制到本地文件系统。是否有一种方法可以以一种简单的方式并行地执行--每个进程负责复制一个文件?

我可以很容易地编写一个多线程程序来完成这个任务,但是我想知道是否有一个低级的Linux方法来完成这个任务。

EN

回答 5

Server Fault用户

发布于 2010-06-22 10:59:41

如果您的系统没有被它破坏(例如,文件可能在缓存中),那么GNU并行http://www.gnu.org/software/parallel/可能适用于您:

代码语言:javascript
复制
find . -type f -print0 | parallel -0 -j10 cp {} destdir

这将运行10个并发的cps。

赞成:阅读起来很简单。

Con: GNU并行在大多数系统上并不是标准的,所以您可能需要安装它。

如果您想保持目录结构:

代码语言:javascript
复制
find . -type f -print0 |
  parallel -0 -j10 mkdir -p destdir/{//}';' cp {} destdir/{//}

观看介绍视频以获得更多信息:http://www.youtube.com/watch?v=OpaiGYxkSuQ

关于并行磁盘I/O的讨论,请参见https://oletange.wordpress.com/2015/07/04/parallel-disk-io-is-it-faster/

票数 15
EN

Server Fault用户

发布于 2010-06-18 01:16:09

由于一个非常简单的原因,没有这样做的低级机制:这样做会破坏您的系统性能。与盘驱动器,每写将争夺位置的头部,导致大量的I/O等待。使用SSD,这将最终使一个或多个系统总线饱和,从而导致其他问题。

票数 3
EN

Server Fault用户

发布于 2010-06-18 02:43:30

唯一不会破坏机器响应的答案不是“副本”,而是非常快的。如果您不会在新的或旧的位置编辑这些文件,那么硬链接实际上就像一个副本,而且(只有)如果您在同一个文件系统上,它们就会很快创建。

检查一下cp -l,看看它是否对你有用。

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/152331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档