我很想知道是什么让Robocopy(强大的文件复制)如此快速和强大。任何机构都知道什么是用于Robocopy的API / Algo?有人研究过Robocopy吗?
我问,因为我必须编写一个方法(在.NET / C#中),它将快速复制目录/文件而没有错误...数据量可以达到15Gb而且我不能简单地调用Robocopy进行各种操作的原因。
谢谢!
答案 0 :(得分:13)
使用一个简单的C#程序可以非常接近Robocopy的速度,该程序使用带有64K缓冲区的标准FileStream
进行异步读写。较大的缓冲区大小可达256K,性能略有提升。大于256K将使事情降低到令人惊讶的程度。在我的测试中,使用512K缓冲区的时间几乎是使用256K缓冲区复制的两倍。
这个想法非常简单:
Read the first buffer from the source file
do
{
start asynchronous write to destination file.
Read the next buffer from the source file
wait for asynchronous write to complete
} while not end of file
写一个非常简单的事情。我执行此操作的程序几乎与Robocopy一样快,并且当您从服务器复制非常大(100 GB)的文件时,不会导致problems that Robocopy causes种类。
A bit more info关于大文件复制问题。
请注意,如果您正在读取和写入同一物理磁盘,则此异步读/写操作对性能没有太大作用。当源和目标位于不同的驱动器上时,它最有效。