我正在使用rsync命令创建一个用于保存图像的新目录,该命令为"rsync -ave --rsync-path='mkdir -p " + path + " && rsync' " + filePath + " ubuntu@" + LocalhostIp + ":" + path
,但是在运行我的代码时,该命令会给我一个错误,错误是
错误:
退出状态14:rsync:执行失败--rsync-path = mkdir:没有此类文件或目录(2)
rsync错误:pipe.c(85)[sender = 3.1.2]处IPC代码(代码14)错误
rsync:连接意外关闭(到目前为止已收到0个字节)[发送方]
rsync错误:io.c(235)[sender = 3.1.2]处IPC代码(代码14)错误
修改
func CopyUploadedFileToAppServers(filePath, path string) {
ExecuteCommand("rsync -ave --rsync-path='mkdir -p " + path + " && rsync' " + filePath + " ubuntu@" + LocalhostIp + ":" + path)
}
func ExecuteCommand(command string) error{
cmd := exec.Command("sh", "-c",command)
var out bytes.Buffer
var stderr bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &stderr
err := cmd.Run()
if err != nil {
fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
return err
}
fmt.Println("Result: " + out.String())
return nil
}
如何解决此错误?
答案 0 :(得分:0)
您需要删除-e
选项,因为这需要以下工作(--rsync-path=...
)代替ssh命令。例如,
$ rsync -ave --x_x /tmp/a abc@localhost:/tmp/y
rsync: Failed to exec --x_x: No such file or directory (2)
只需使用-av
。