2

我在 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%

有任何想法吗?(谢谢!)

4

2 回答 2

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

于 2015-09-18T14:16:25.037 回答
0

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

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

rsync -e "ssh -i sshkey -o UserKnownHostsFile path/to/known_hosts" source dest
于 2016-02-04T12:10:35.067 回答