![ROBOCOPY 从远程计算机复制目录:错误“未找到网络路径”](https://linux22.com/image/1400874/ROBOCOPY%20%E4%BB%8E%E8%BF%9C%E7%A8%8B%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%A4%8D%E5%88%B6%E7%9B%AE%E5%BD%95%EF%BC%9A%E9%94%99%E8%AF%AF%E2%80%9C%E6%9C%AA%E6%89%BE%E5%88%B0%E7%BD%91%E7%BB%9C%E8%B7%AF%E5%BE%84%E2%80%9D.png)
我正在尝试使用 ROBOCOPY 从远程计算机复制文件夹
我正在使用以下内容:
NET USE \\192.168.10.90\IPC$ /u:server\[username] [password]
ROBOCOPY \\192.168.10.90\home\lgr\ \\C:\LGR_Back_Up\LGR_A\ /Z
NET USE \\192.168.10.90\IPC$ /D
如果我逐行运行该命令,则在第一行之后我会得到“命令已成功完成”,然后在输入 Robocopy 命令后得到“未找到网络路径”。
我想这是因为我处在错误的位置。
当我使用 SSH 登录到计算机 192.168.10.90 时,我会使用我指定的用户名登录到用户的文件夹。此文件夹包含在目录中home
,因此路径为home/user
。我要从中复制文件的位置是home/lgr/
。
是否有可能,一旦我使用第一行脚本从命令行登录,我就会被带到用户文件夹,以便我的脚本正在寻找该文件夹home/user/lgr/
? 如果是这样,我如何向上导航一级?
我希望这是有道理的。
答案1
\\C:\LGR_Back_Up\LGR_A\
不是有效的网络路径。
如果LGR_Backup
在本地驱动器上,则使用C:\LGR_Back_Up\LGR_A\
。
如果LGR_Backup
是远程计算机 C: 根目录中的文件夹,并且您尝试通过 C$ 管理共享访问它,那么您可以使用\\Remote_Computer\C$\LGR_Back_Up\LGR_A\
答案2
最后,这是我要编写的脚本:
rem # Script to connect:
NET USE \\192.168.10.90\IPC$
rem # Script to copy:
ROBOCOPY \192.168.10.90\lgrdata\ \ICOS\Analyser_backups\LGR_Flux\ /NP /TEE /E /dcopy:T /Z
rem # Script to disconnect:
NET USE \\192.168.10.90\IPC$ /D
感谢您的帮助。我认为这是一个复杂而具体的问题,因为我们的仪器的文件夹结构。我只是无法弄清楚我想要复制的数据在哪里,然后我在使用原始脚本中的以下内容时也遇到了问题:
\\C:\LGR_Back_Up\LGR_A\ /Z
正如Techie007所说,这不是有效的网络路径。
答案3
好的,你错过了一些 net use 命令
[遗漏了连接网络存储的驱动器号]
快速指南
1> Net use X:\\服务器DNS或IP\Network.Share\to\connect\to\specified\drive\letter /user:服务器DNS*(注1)\用户名密码*(注2)
2> Robocopy X: [或指定的驱动器号]\*.* C:\location\of\backup\directory [不要忘记事先用 mkdir 创建目录
3> net use X: /del /y [断开共享而不询问确认]
(注 1)如果需要,可以使用 ip,但这可能有点棘手,通常需要 Winbind 名称或 DNS,它们是不同的,google 启用 winbind ubuntu(或您的 Linux 版本),大多数情况下非常容易。我交替使用 FQDN 和 winbind 名称,但命令的用户部分中的 IP 几乎总是失败。
(注 2):出于安全考虑,不要输入密码,脚本会在运行 net use 命令并连接后停止并要求您输入密码,然后一旦您输入密码并按下回车键,它将继续执行脚本。这不需要您将密码留在纯文本脚本文件中以获得更高的安全性,但有时您需要让脚本不停止(即登录脚本)
此外,我认为您可能正在尝试这种奇怪的方法 [它只是需要比 VPN 更多的设置和努力]。如果是我,从 Windows 客户端连接到 *nix 主机,我会建议使用 OpenVPN 之类的 VPN 服务器,然后您可以使用桥接设置并成为网络上的另一个客户端 [使用 SSH,您可以直接连接到服务器,并且需要通过 SSH 设置端口转发以使服务直接传递到您的物理客户端],但暂时忘掉这一点,您似乎没有正确运行 net use,因此如果这可行,请继续阅读并使用您当前的设置应该可行
Net use 用于设置驱动器号尝试:NET USE X: [或任何未使用的驱动器号] \\192.168.10.90\home\lgr /user:server[用户名] [密码]
如果您希望 Windows 不像 Linux 或 Unix 或 Mac OS X 那样关心大小写,您可以在所有较低级别运行 net use。
但请注意,您不想弄乱 IPC$,它被隐藏是有原因的,它处理 Windows 机器上所有应用程序之间的所有通信 [和所有网络事务] 早在 NT 4 时代,我感到无聊并删除了惹恼我的人的 IPC$ 共享,为什么?您将失去一切,我的意思是所有网络通信期间 [更不用说程序之间的剪贴板访问之类的任何东西了。要了解它有多完整,请参见:http://msdn.microsoft.com/en-us/library/windows/desktop/aa365574(v=vs.85).aspx 您永远不需要连接到 IPC$,请参见下面的 NET Use,您指定一个驱动器号,它会自动检查 IPC$ 以确保您的凭据有效。我再说一遍,我警告过您有关 IPC$ 的问题,除非您知道自己在做什么,而且确实必须接触它,否则不要乱动它。
好的,所以在警告之后:首次运行:NET USE X:[或任何未使用的驱动器号] \\192.168.10.90\home\lgr /user:server[用户名] [密码] [请注意,我们正在使用 CIFS [SAMBA,因此目录的引用方式与在 Winblows 中相同]]
然后
Robocopy X:\File.ext [或类似 *.txt 的模式] C:\some\directory\to\save\to\file.ext
因此,缩写 Net Use 实际上是用简单的英语表示网络位置的 Net 使用驱动器号,因此不要忘记实际指定驱动器号 [没有驱动器号,它确实会测试连接,但不会告诉您您确实没有正确使用 net use]。
然后我们使用 robocopy 从现在使用的驱动器号(现在指向我们告诉它的网络位置)进行复制,然后从那里复制到本地 [或另一个网络位置,您应该使用 net use 将第二个网络位置映射到第二个驱动器号:-O ]。
当所有操作完成后断开 net use x: /del /y [net use on x: delete yes delete without quiry me] 或 net use * /del /y 将会终止所有连接的网络共享
而在 Windows 中,只需使用 net use 即可列出您已打开的连接,虽然它只会连接到一个计算机名称,但这更像是一种直接确认的点对点但仍然是基于网络的连接。net use 的目的是采取 \\a really\long\network\share 路径并将其分配给驱动器号,因此 \my.server\net\share\somewhere 变为 X:\ [或 A: 和 Z 之间的任何空闲位置 [我不会使用 A: B: C: D:] 这些是为软盘保留的 A 和 B C: 主驱动器 Windows 从中加载,而 D: 通常是 CD/DVD 驱动器 [这不是一成不变的,可以有所不同,但通常是这样的] 所以我建议使用字母表中较低的字母,如 L - Z,但完全由您决定。
答案4
抱歉,无法直接回复,所以必须创建一个新的答案,这是简短的形式,如果有兴趣,我的更长的回复会有更多的细节,所以我会保留两者......
他的问题是,对于 Windows 主机nix 主机 [不知道是 Linux 还是 Unix 可能是 Linux] 所以 /home/在大多数情况下,Windows 中的共享将是 \\IP 或 FQDN 或 WindBind 地址 [通常是 FQDN 或 IP,因为 Linux 默认情况下不处理 Windbind,除非您手动启用它]
因此在 Windows 和 Linux 中,使用默认设置的情况更多
net use X:\\192.168.10.90\home\lgr /user:服务器的 IP [或 FQDN,如果 IP 失败]\用户名
[以我的经验来看,Windows 不能很好地处理用户语句中的 IP,因为指定要进行身份验证的主机通常必须是 FQDN [完整 DNS,如 server.local,而不仅仅是服务器,几乎所有 DNS 客户端都默认设置 name.local,如果您只知道 Windows 主机名,则添加 .local 它可能对您有用,或者 winbind 也可以,但 IP 有时也可以工作]
Robocopy X:\*.* C:\LGR_Back_UP\LGR_A /s /e /z [复制所有文件(包括子目录),即使目录为空,在可重启模式下 [如果传输中出错,重新复制文件] 如果命令失败,则删除 /z 并重试]
net use x: /del /y [断开驱动器号 X 上的网络共享,而不要求交互式确认 [因为您使用脚本,所以您会需要这个]]
抱歉,回复上述帖子,但也包括我会在你的情况下使用的 robocopy 命令 [如果它使用 /z 失败 [可重启模式,以防在复制过程中发生某些事情有时在某些设置下不起作用,只需将其关闭] /s = 复制所有子目录 /e = 包括任何空子目录。
这应该更容易与您的具体情况相匹配,并参考我上面的较长的帖子以了解更多详细信息。
哦,对于您其他的问题,请从您当前的问题处“返回”或上一级目录
光盘 ..
然后按回车键 .. 在所有操作系统中始终指的是上述目录 [如果我有 C:\some\directory 并且我在目录中运行我的脚本,您也可以在脚本中使用类似的方法,如果我确实复制 ..\file.ext C:\some\directory 它会将名为 some 的目录中的文件复制到名为 directory 的目录中,当您在命令行的目录中运行该命令时:-)
或者
光盘 /
在 Windows 中,它会带你进入你所在驱动器的根目录,所以如果我从
c:\some\long\directory\that\takes\a\long\time\to\cd ..\from> cd /
我会得到
目录:\>
非常喜欢命令行:-D