Планировщик задач Windows 8.1 не будет выполнять Rsync/SSH без входа в систему
Я создал и запланировал пакетный файл в Windows 8.1 (для выполнения резервного копирования rsync через туннель SSH) и могу запустить его:
- вручную
- через планировщик задач вручную, когда я щелкаю правой кнопкой мыши -> Выполнить
- через планировщик задач автоматически, когда я вошел в систему, и он запланирован для запуска в указанное время
... но когда я не вошел в систему, он просто сидит в "Running", хотя я установил его следующим образом:
- пользователь = я (я являюсь членом группы администраторов)
- запустить независимо от того, вошли в систему или нет
- работать с самыми высокими привилегиями
Я вижу в диспетчере задач, что 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 ответа
Когда я столкнулся с этой проблемой в Windows Server 2012 R2, я обнаружил, что SSH.exe обнаружил ошибку разрешений при попытке создать файл known_hosts, несмотря на то, что задача выполнялась с учетными данными администратора и с самыми высокими привилегиями.
Решение состояло в том, чтобы указать на существующий пользовательский файл known_hosts, используя UserKnownHostsFile
Опция SSH:
rsync -e "ssh -i sshkey -o UserKnownHostsFile path/to/known_hosts" source dest
Кажется, это проблема с домашним каталогом и неинтерактивной средой в запланированных заданиях в более новой версии Windows (начиная с Server 2008 и Vista?). Я нахожу это в нескольких обсуждениях, но с небольшим количеством информации, чтобы решить это:
- http://answers.google.com/answers/threadview/id/528721.html
- Rsync для Windows не может работать в планировщике задач
- https://serverfault.com/questions/207118/cwrsync-on-server-2008-r2-as-a-scheduled-task
- https://superuser.com/questions/368828/rsync-on-windows-xp-works-fine-on-demand-but-hangs-when-run-as-a-scheduled-task
Мое решение было:
- установить задачу для запуска под пользователем, который, как доказано, может завершить 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