我正在尝试运行批处理脚本,将文件从本地 Windows 服务器复制到远程 Linux 服务器(利用 rsync 和 Cygwin),作为计划任务。
如果我以管理员身份手动运行批处理脚本(以管理员身份运行)批处理脚本成功执行,目标文件被复制到远程服务器。
如果我手动运行批处理脚本,且没有提升权限,则批处理脚本只有一部分运行。批处理脚本的 rsync 部分会失败。
因此,我设置了一个计划任务。用户是域管理员组的成员,并且该任务还选中了“以最高权限运行”选项。
但是,当我通过计划任务运行任务时,它实现的效果与我在没有管理员权限的情况下手动运行批处理脚本时的效果相同,但我不明白为什么。
计划任务对用户做了什么可能会阻止批处理脚本的 rsync 部分执行?
需要澄清的是,脚本使用的所有资源都是本地的,除了远程服务器。远程服务器在 rsync 命令中指定为 IP 地址:username@ipaddress:/remotedirectory/
此外,我应该解释一下,因为 rsync 作为 Cygwin 的一部分运行,所以本地驱动器被引用为 /cygdrive/d/directory/ 等。计划任务是否可能难以解释这些目录?
答案1
经过一番深思熟虑,我意识到任务计划程序在运行 rsync 命令时遇到了困难。我突然想到这可能与访问 Cygwin 有关。
虽然我已将 Cygwin 应用程序添加到 %PATH% 变量,并且可以按需运行 rsync,但仍然需要告知任务计划程序在 bash 中运行脚本。
将任务操作更改为运行“bash -l -c“/cygdrive/driveletter/directory/file”已允许任务计划程序成功运行该任务。
功劳确实应该归于这里:http://www.davidjnice.com/cygwin_scheduled_tasks.html