我正在尝试将网络共享上的文件从一个文件夹复制到另一个文件夹,因此我只是进行复制和粘贴,我安装了 TeraCopy,它显示的速度为 2KB/s 到 7KB/s。
我在家工作,通过 VPN 访问共享。
我的问题是,这就像在我自己的机器上进行正常复制吗?文件是否从文件夹 A 移动到文件夹 B 而不经过我的计算机?我应该通过目标机器上的终端启动复制操作吗?如果是这样,我如何启动复制操作并让它继续运行,即使我断开连接/关闭终端窗口?
答案1
我的问题是,这是否像在我自己机器上正常复制一样?文件是否从文件夹 A 移动到文件夹 B,而无需经过我的计算机?
这取决于所使用的软件和协议。运行“任务管理器”并查看网络使用情况图表以找出原因 - 如果您复制一个大文件并在“网络”图表中看到峰值,则该文件正在通过您的计算机。
SMBv3(标准 Windows 文件共享)支持选修的“服务器端复制”,其中 SMB 客户端可以告诉服务器从 A 复制到 B,这一切都在服务器端进行。但是,这是一个可选功能,并不保证每个服务器都支持,在这种情况下,唯一剩下的选择就是在客户端进行所有复制,您的计算机必须从 A 下载所有内容,然后上传回 B。
此外,“服务器端复制”仅在客户端软件专门使用手术– 例如,Windows 内置的复制功能可以,但 TeraCopy可能没有(此类工具故意从头开始实现复制,以使本地速度更快,但缺点是它们经常忽略或忘记此类优化。)
因此,如果 TeraCopy 使用传统方法复制文件(从 A 读取,写入 B,从 A 读取,写入 B),那么所有内容确实会首先通过您的计算机,然后再返回到服务器,双向通过 VPN。
(它也可能是运行不支持服务器端复制的过时软件的旧服务器或 NAS,甚至可能是使用过时的 SMBv1 的服务器,在这种情况下,复制再次需要通过您的计算机,因为没有其他方法可以做到。)
我是否应该通过目标计算机上的终端启动复制操作?如果是,我该如何启动复制操作并让它继续运行,即使我断开连接/关闭终端窗口?
对于 Linux 或 BSD 服务器,有两个选项:
如果您只是想要一种即发即弃的方法,请运行复制命令
nohup <cmd> &
(例如nohup cp -av /this /that &
)。如果您想要一些持久的东西(以便稍后检查),请首先运行,
tmux
或者screen
如果其中任何一个已安装,则在里面运行您的命令 - 它会创建一个持久会话,您可以稍后重新连接以查看状态/进度(例如tmux a[ttach]
或screen -R
)。
我不确定 Windows 服务器是否有任何等效选项可以通过 SSH 或 PS-Remoting 运行分离进程,但如果您通过远程桌面连接,那么断开连接后副本应该继续运行。
(除非服务器特意设置为断开连接后注销,在这种情况下您实际上无能为力。)
您还可以从当地的终端使用robocopy \\nas\old \\nas\new /e
(robocopy 工具是 Windows 内置的)。