Windows 8.1任务计划程序不会在未登录的情况下执行Rsync / SSH

时间:2014-10-09 08:18:34

标签: windows ssh rsync cwrsync

我已经在Windows 8.1中创建并安排了批处理文件(通过SSH隧道执行rsync异地备份),我可以运行它:

  • 手动
  • 当我点击右键时,
  • 手动通过任务计划程序 - >运行
  • 在我登录时自动通过任务计划程序并计划在给定时间运行

...但是当我没有登录时,它只是在"运行"即使我将其设置如下:

  • user = me(我是管理员组的成员)
  • 运行是否已登录
  • 以最高权限运行

我可以在任务管理器中看到rsync.exe和ssh.exe正在运行,因此它必须挂在rsync / ssh调用上。这让我相信问题在于,即使我已经明确设置了用户名,有些东西 真的像我一样运行吗? (侧边栏:我还尝试以SYSTEM用户身份运行任务 - 也没有运气)

我发出的命令如下:

rsync --archive --verbose --human-readable --hard-links --delete --exclude '*.log' --exclude '*log*.*' -e  "%CWRSYNCBIN%\ssh -p 22103 -i C:\Users\test\.ssh\id_rsa" "/cygdrive/c/Users/test/Downloads" admin@1.2.3.4:/path/to/remote 1> %REPORTLOG% 2> %ERRORLOG%

有什么想法吗? (谢谢!)

2 个答案:

答案 0 :(得分:0)

在较新的Windows版本(从Server 2008和Vista开始?)的预定作业中,主目录和非交互式环境似乎存在问题。我在很少的讨论中找到它,但没有太多信息可以解决它:

我的解决方案是:

  • 将任务设置为在已证明能够完成rsync的用户下运行,每当用户登录时设置运行,我也设置为不保存密码,
  • 在此用户下找到.ssh文件夹的位置(在他的主目录中),
  • 将.ssh复制到更简单的路径以在HOME变量(SET HOME=D:\CWRSYNC\HOME),
  • 中使用它
  • 使用以下脚本运行rsync:



    @ECHO OFF
    SETLOCAL
    SET CWRSYNCHOME=D:\CWRSYNC
    SET HOME=D:\CWRSYNC\HOME
    SET CWOLDPATH=%PATH%
    SET PATH=%CWRSYNCHOME%;%PATH%
    rsync.exe -rtvz --delete /cygdrive/b/ user@192.168.1.2:/volume1/NetBackup/ >> D://nas-backup-log.txt

答案 1 :(得分:0)

当我在Windows Server 2012 R2上遇到此问题时,我发现在尝试创建known_hosts文件时,SSH.exe遇到了权限错误,尽管该任务以管理员凭据和最高权限运行。

解决方案是使用UserKnownHostsFile SSH选项指向用户现有的known_hosts文件:

rsync -e "ssh -i sshkey -o UserKnownHostsFile path/to/known_hosts" source dest