Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
shell脚本中的Robocopy“无效参数”_Shell_Remote Access_Git Bash_Remote Server_Robocopy - Fatal编程技术网

shell脚本中的Robocopy“无效参数”

shell脚本中的Robocopy“无效参数”,shell,remote-access,git-bash,remote-server,robocopy,Shell,Remote Access,Git Bash,Remote Server,Robocopy,我正在尝试使用robocopy将文件移动到远程计算机。这是通过在Git Bash中执行的文件script.sh在Windows计算机上完成的 出身背景 首先,我使用net use添加共享目录: NET USE \\\\$DEPLOY_SERVER\\$DEPLOY_SHARE /user:$DEPLOY_SERVER\\$DEPLOY_USER $DEPLOY_PASS 这个很好用 问题 然后我用robocopy复制文件: 失败,错误代码为16 从,16是严重错误。Robocopy未复制任何文

我正在尝试使用robocopy将文件移动到远程计算机。这是通过在Git Bash中执行的文件script.sh在Windows计算机上完成的

出身背景 首先,我使用net use添加共享目录:

NET USE \\\\$DEPLOY_SERVER\\$DEPLOY_SHARE /user:$DEPLOY_SERVER\\$DEPLOY_USER $DEPLOY_PASS
这个很好用

问题 然后我用robocopy复制文件:

失败,错误代码为16

从,16是严重错误。Robocopy未复制任何文件。可能是使用错误,也可能是由于对源目录或目标目录的访问权限不足而导致的错误

在没有/MIR的情况下运行它可以正常工作,没有错误

错误日志 使用/MIR运行时,我得到错误:

-------------------------------------------------------------------------------
ROBOCOPY     ::     Robust File Copy for Windows
-------------------------------------------------------------------------------    
Started : Mon Dec 18 15:46:26 2017    
Source - C:\<path to current dir>\
 Dest - \\<deploy server>\<deploy share>\<deploy dir>\    
Files :
Options : /COPY:DAT /R:1000000 /W:30    
------------------------------------------------------------------------------    
ERROR : Invalid Parameter #3 : "C:/Users/<my user>/AppData/Local/Programs/Git/MIR"    
   Simple Usage :: ROBOCOPY source destination /MIR    
         source :: Source Directory (drive:\path or \\server\share\path).
    destination :: Destination Dir  (drive:\path or \\server\share\path).
           /MIR :: Mirror a complete directory tree.    
For more usage information run ROBOCOPY /?    
****  /MIR can DELETE files as well as copy them !
进一步的错误描述 对于任何选项都会发生这种情况,而不仅仅是/MIR,这只是最简单的错误形式

我读过很多类似的问题,常见的答案是在有空格的情况下用双引号引上你的路径。我的路径没有空格,但我也尝试过,并得到了相同的错误。此外,这将导致robocopy输出中的源路径和目标路径不正确,但它们对我来说是正确的

我不知道为什么我会去那个git目录寻找MIR,或者为什么它不只是正确解析选项。此外,我还检查了C:/Users//AppData/Local/Programs/Git/中没有MIR

研究 其他类似但对我没有帮助的问题:

结论
任何帮助都将不胜感激!我也愿意使用robocopy以外的东西,但它需要与远程机器一起工作,可以从shell脚本运行,支持镜像,并且不使用sshnet use works for robocopy,所以理想的情况是使用其他类似的东西。

当需要管理员权限/或pop将文件创建到该目录时,就会发生这种情况

因此,尝试拥有一个log/temp目录,并尝试将日志文件添加到该日志目录中

mkdir log\
e.g: robocopy . \\\\$DEPLOY_SERVER\\$DEPLOY_SHARE\\$DEPLOY_DIR 
/log:"\\$ServerShare\log\copy_log.log"

我通过用一个额外的正斜杠转义/MIR参数使其工作:

robocopy "C:\source" "C:\destination" //MIR

希望这有帮助

标签和外壳脚本的措辞通常不用于有关Windows的问题——正如描述所述,包含该标签的问题通常是关于UNIXlike操作系统上的POSIX系列外壳。也许你应该贴标签,或者视情况而定?或者,如果这是在Cygwin或msys bash中运行的,请明确指定它。@charlesduff谢谢!我将它添加到顶部,这是在Windows计算机上运行的,但它是在Git Bash中运行的,或者使用sh.exe。这两个中的哪一个?即使/bin/sh与Git Bash在同一个二进制文件中,当以该名称启动时,它也会在POSIX模式下运行,因此它是一个不同的特性集。@CharlesDuffy无论哪种方式都会发生错误,但对于我使用Git Bash的问题,如果运行Bash-x yourscript,问题也会相应地更新,输出是否与您预期的有实质性差异?例如,如果日志显示它正在传递$'/MIR\r'而不是/MIR,那么这就是一个可能导致此问题的差异示例,并且暗示您的脚本是使用DOS换行符而不是UNIX换行符保存的;顺便说一句,这是在询问有问题的代码之前,在本节中要检查的第一件事。
robocopy "C:\source" "C:\destination" //MIR