【发布时间】:2013-09-12 12:38:39
【问题描述】:
为了使用 rsync,我创建了一个 BASH 脚本。它从 WIN 7 中的 Cygwin shell 运行良好,但从 WIN 7 任务计划程序运行时失败。我的任务计划程序脚本很简单:
c:\cygwin\bin\bash.exe -l -c "~user/rsync_Windows_Backup 2>&1 >> ~user/Documents_cron.log"
初始目录设置为 C:\Cygwin\bin。
我的 BASH 脚本是一个典型的 rsync 命令,带有 [options] SRC DEST 和一些相关的内务管理。
“rsync_Windows_Backup”BASH 脚本中的 rsync 命令是:
/bin/time -f "\nElapse (hh:mm:ss.ss) %E" \
rsync.exe -v -rltz --chmod=a=rw,Da+x -u "$SRC" "$DEST" >> "$LOG" \
2 >> "$LOG"
$ ./rsync_Windows_Backup - succeeds.
但任务计划程序作业失败,因为它找不到 BASH 脚本引用的 DEST 文件夹。当我从 BASH 命令行执行“cd DEST”时,文件夹可用并且可以写入。
我应该添加更多细节,发送者是一个 WIN 7 桌面,它映射到一个带有驱动器映射 J: 的 Vista 桌面接收器。 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)
假设这是问题的根源,我尝试了几种方法来影响 WIN 7 处理映射和权限的方式。到目前为止,似乎没有任何帮助。
另一个特点是完全相同的 BASH 脚本和任务计划程序作业在 WIN Vista 商业版中确实成功了。所以我假设我在 WIN 7 中缺少某些东西。
我很困惑,可以使用一些指导。
谢谢。
【问题讨论】:
-
你确定应该是
~user/rsync_Windows_Backup而不是~/rsync_Windows_Backup吗? -
感谢您的反馈。我明白你的意思,我也可以尝试这种语法。不过它确实像在 Vista 中编写的那样工作。
-
使用 ./ 没有帮助。还是被难住了。
-
不应该是
~/。 -
我发布了一个答案。我希望它澄清。