并行文件复制

Jon*_*Jon 10 linux copying

我有一个需要在 Linux 系统上复制的文件列表 - 每个文件的大小范围为 10 到 100GB。

我只想复制到本地文件系统。有没有办法以简单的方式并行执行此操作 - 多个进程每个负责复制文件?

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

Ole*_*nge 13

如果您的系统没有受到影响(例如,文件可能在缓存中),那么 GNU Parallel http://www.gnu.org/software/parallel/可能适合您:

find . -print0 | parallel -0 -j10 cp {} destdir
Run Code Online (Sandbox Code Playgroud)

这将运行 10 个并发cps。

优点:读起来很简单。

缺点:GNU Parallel 在大多数系统上都不是标准配置——因此您可能必须安装它。

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

另请参阅https://oletange.wordpress.com/2015/07/04/parallel-disk-io-is-it-faster/以了解并行磁盘 I/O 的讨论。


Ign*_*ams 4

没有低级机制可以做到这一点,原因很简单:这样做会破坏系统性能。对于盘片驱动器,每次写入都会争夺磁头的位置,从而导致大量 I/O 等待。对于 SSD,这最终会使一个或多个系统总线饱和,从而导致其他问题。

  • 饱和的巴士是快乐的巴士。空闲带宽是浪费的带宽。 (2认同)