Windows 7 任务计划程序中的 Bash 脚本失败

Windows 7 任务计划程序中的 Bash 脚本失败

为了使用,rsync我创建了一个 Bash 脚本。它在 Win 7 中的 Cygwin 32 位 shell 中运行良好,但在 Win 7 任务计划程序中运行时失败。我的任务计划程序脚本很简单:

c:\cygwin\bin\bash.exe -l -c "/home/user/rsync_Windows_Backup >> /home/user/Documents_cron.log 2>&1"

该作业的初始目录设置为C:\Cygwin\bin

我的 Bash 脚本很典型rsync [options] SRC DEST,并且有一些相关的管理功能。

rsync我的 Bash 脚本中的命令是rsync_Windows_Backup

/bin/time -f "\nElapse (hh:mm:ss.ss) %E" \ 
rsync.exe -ravuz --copy-links "$SRC" "$DEST" >> "$LOG" \ 
2 >> "$LOG"

我从 Cygwin 命令行测试了该脚本。它按预期运行,即

$ ./rsync_Windows_Backup - succeeds.  

但是,任务计划程序作业失败,因为它找不到 Bash 脚本引用的 DEST 文件夹。当我cd DEST从 BASH 命令行执行时,该文件夹可用,也可以写入。

我应该补充一些细节,发送方是一个 Win 7 桌面,它通过驱动器映射映射到 Vista 桌面接收方J:。Bash 脚本启动但失败:

rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: mkdir "/cygdrive/J/DocumentsBackup" failed: No such file or directory (2) rsync error:  error in file IO (code 11)

我可以通过在任务计划程序属性的常规选项卡中将配置更改为 Windows 7 来消除第一个错误。我不明白为什么mkdir无法看到共享J:

为了检查 LAN 连接,我还做了net use J: \\server\share。它连接良好,并允许列出和写入等。

当我在 Windows Vista 中运行相同的任务计划程序时工作正常。

这是 Windows 7 上的一些更精细的 NTLM 问题还是其他权限问题?我现在很困惑。

答案1

现在,我已在 Win 7 中通过任务计划程序实现了此功能,正如我所料。感谢 @netubsi 和 @firerat 提出的解决方案建议。

这是我所做的:

cmd /c net use T: '\\server\share' # 为 Cygwin 创建单独的临时共享
DEST="/cygdrive/T/User/FolderBackup/" # 在目标中使用临时共享
rsync -avuz --copy-links "$SRC" "$DEST" # 执行备份
cmd /c net use T: /delete # 删除临时共享

看来在 WIN 7 中,如果从 Win 7 任务计划程序启动 Cygwin 脚本,则 Windows 中创建的共享不可用。如果从 Cygwin 命令行启动脚本,则可以使用。看来在 Win Vista 中这也不是问题。

我觉得这很奇怪。也许还有其他我没理解的解释。不过我很高兴这个能用!!

相关内容