我正在尝试使用robocopy将文件移动到远程计算机。这是在Windows机器上通过在Git Bash中执行的文件script.sh
完成的。
首先我使用net use
添加共享目录:
NET USE \\\\$DEPLOY_SERVER\\$DEPLOY_SHARE /user:$DEPLOY_SERVER\\$DEPLOY_USER $DEPLOY_PASS
这很好用。
然后我用robocopy
复制文件:
robocopy . \\\\$DEPLOY_SERVER\\$DEPLOY_SHARE\\$DEPLOY_DIR /MIR
因错误代码16 而失败。
从the robocopy docs开始,16是Serious error. Robocopy did not copy any files.Either a usage error or an error due to insufficient access privileges on the source or destination directories.
在没有/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
输出中的“Source”和“Dest”路径不正确,但它们对我来说是正确的。
我不知道为什么我会去那个git
目录并寻找MIR
,或者为什么它不只是正确地解析选项。此外,我检查了MIR
内部C:/Users/<my user>/AppData/Local/Programs/Git/
不存在。
其他类似的但对我没有帮助的问题:
任何帮助将不胜感激!我也愿意使用robocopy
之外的其他内容,但它需要使用远程计算机,可以从shell脚本运行,支持镜像,而不是使用ssh
({{1}适用于robocopy,所以理想情况下就像其他东西一样。)
答案 0 :(得分:1)
在需要管理员privileges/
或弹出将文件创建到该目录时会发生
因此,尝试建立一个log/temp
目录,并尝试将log
文件添加到该log
目录
mkdir log\
e.g: robocopy . \\\\$DEPLOY_SERVER\\$DEPLOY_SHARE\\$DEPLOY_DIR
/log:"\\$ServerShare\log\copy_log.log"
答案 1 :(得分:0)
我最后只使用了一个不同的工具,该工具是脚本用于
的更大系统的一部分答案 2 :(得分:0)
我通过用一个额外的正斜杠转义/ MIR参数来使其工作:
robocopy "C:\source" "C:\destination" //MIR
希望这会有所帮助;)