文件复制速度太慢

3

我正在尝试将一个大小为1.5G的文件从本地文件夹A复制并粘贴到共享驱动器文件夹B和另一个本地文件夹C。使用file.copy的速度太慢,需要花费大约5-10分钟时间。有什么其他的建议可以提高性能吗?


2
我想这与R或其file.copy函数几乎没有任何关系,它只是调用了一个系统函数来进行复制。 - thelatemail
1
同意@thelatemail的看法,这可能是一个关于底层操作系统/系统复制过程的问题。最好去https://superuser.com询问...你能否详细说明一下你所在的操作系统,共享驱动器的位置(物理位置),例如网络连接类型等? 在Google上搜索“慢速复制到共享驱动器”会出现很多关于Windows复制的相关信息。 - Ben Bolker
当我手动使用ctrl c和ctrl v时,一切正常,但是使用R语言复制和粘贴时,速度明显比手动慢。这就是为什么我猜测问题出在file.copy函数上的原因。 - C_Mu
1
非常抱歉,我只是假设R的file.copy调用了一个.Internal函数,认为它是一个标准的系统调用。显然,我有些过于自信了! - thelatemail
你能多说一些关于你的操作系统吗?像@user26055553的回答应该可以,但在Windows上需要做一些变化(并且可能会因操作系统版本而异?) - Ben Bolker
我的电脑是Windows 10专业版,我尝试了@user26055553的答案,但在代码运行后没有任何反应,也没有显示错误信息。 - C_Mu
2个回答

2

我不确定为什么会发生这种情况,但您始终可以使用操作系统的本机命令。例如,假设您正在使用macOS或Linux:

system(sprintf('cp %s %s', source, target))

其中source和target是您的文件路径。


这值得一试。几乎可以肯定地显示出操作系统底层的复制操作是问题所在,而不是 file.copy() - Ben Bolker
1
我不确定。看起来R有自己的副本,并且在某些情况下会出现缓存等问题。例如:https://dev59.com/JVUL5IYBdhLWcg3wt6IK - user2605553
1
好的,每天都有新的学习!也许在你的回答中加上那个问题的链接会更有帮助?(仍然需要了解原帖作者的系统的更多信息) - Ben Bolker
@BenBolker - 好吧,我现在感觉像个傻瓜! :-D - thelatemail
谢谢您的帖子,我尝试了您的代码,但它并没有运行,没有错误显示,但文件也没有被移动,就好像什么也没有发生一样。这是我的代码:system(sprintf('cp %s %s', "C:/Users/myname/Documents/filename.accdb", "W:/path/Archive/filename.accdb"))。有什么建议吗? - C_Mu
我给你的示例在 macOS/Linux 中工作。看起来你正在使用Windows。你需要使用 Windows 命令替换 sprintf 内部的命令: https://www.computerhope.com/copyhlp.htm - user2605553

0

如果您使用的是Windows系统,请使用PowerShell:

comm.cp <- paste0("powershell -command Copy-Item ",source," ", target, " -Force"  );
copied <- system(comm.cp, wait = TRUE);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接