【问题标题】:Copy file between remote file systems using windows PowerShell使用 Windows PowerShell 在远程文件系统之间复制文件
【发布时间】:2021-01-27 01:10:45
【问题描述】:

我使用的是企业 VPN。我可以访问两个具有 Windows 映射路径的远程文件共享。我可以在 Windows 资源管理器中查看这两个文件共享。我的目标是将 1.8 gb .csv 文件从一个共享复制到另一个共享。只需使用 Windows 资源管理器,我就可以毫无问题地复制更小的文件。但是,对于大约 300mb 或更大的文件,我在复制文件时遇到错误。该文件以正确的大小出现在目标文件共享中,但将其读入 python 确认并未复制所有 csv 行。

我现在尝试使用 Windows 10 PowerShell 复制文件,以打开对复制操作的更多控制的大门,而不是通过 Windows 10 桌面环境执行的 GUI 复制命令。 (我正在替换真实的路径名,以保护隐私)

当我跑步时:Copy-Item \\sourcePath\aFile.csv \\destinationPath\aFile.csv -Verbose -Force

我得到了错误

Copy-Item : An unexpected network error occurred.
At line:1 char:1
+ Copy-Item '\\sourcePath\ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], IOException
    + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.CopyItemCommand

我希望在 powershell 中有一些方法可以使复制操作对 VPN 带宽/连接稳定性限制更加健壮,或者将我的客户端计算机从复制操作中删除,并命令源文件共享直接复制文件到目标机器,而我的机器没有充当两者之间的中间人中继。从我的网络流量中可以清楚地看出,当失败的复制操作运行时,我的机器正在下载然后上传文件。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    您是否要替换远程路径中的相同项目?

    Copy-Item -path \\sourcePath\aFile.csv -destination \\destinationPath\aFile.csv\ -Verbose -Force
    

    很可能是因为您使用的是 VPN,因此您必须双跳。

    【讨论】:

    • 我想替换目标中的文件是的。我一直在部分复制它,所以有必要覆盖之前写入的文件。凭证似乎不太可能,因为这会导致完全失败,而不是不完整的写入,我想。这里问题的核心是文件写入不完整
    • 所以它确实复制了?只是不是 csv 的全部内容? robocopy 有什么不同吗?
    • 您也可以调用命令在要复制的服务器上运行操作,也可以复制到要复制的服务器。这样就可以避免你用尽带宽
    【解决方案2】:

    一种解决方案是使用 robocopy 复制文件。

    robocopy “\\aSourcePath\\” “\\aDestinationPath\\” “aFileInSourcePath.something” /mt /z
    

    在文件传输之前一直运行,对似乎会导致标准 Windows Explorer 复制/粘贴失败的 VPN 中断具有稳健性。

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多