Windows XP 上的 Rsync 按需运行良好,但作为计划任务运行时会挂起

Windows XP 上的 Rsync 按需运行良好,但作为计划任务运行时会挂起

我想使用 Rsync 将网站备份到 Windows XP 系统,该系统每晚都会备份到磁带上。我查看了 cwRsync 和 Grsync,只要我在登录 Windows 时运行它们,它们都可以正常工作。我可以在 Windows 中设置计划任务并按需运行该任务,这样也可以正常工作。

但是当我尝试在注销时运行计划任务时,它会挂起。当我下次登录时,任务显示仍在运行,我可以看到 RSYNC.EXE 和 SSH.EXE 进程正在运行。我必须停止任务,然后终止这两个进程。同时没有文件被传输。每次都是这样。

我已经添加了尽可能多的日志记录,但是日志在 Rsync 命令处停止:

opening connection using: ssh -l user domain.com rsync --server --sender -vvnlogDtpre.iLs . /home/user/backups/site-backup.tar 

为了排除任务调度程序的问题,我创建了一个简单的批处理作业,对其进行了调度,然后注销。当我稍后再次登录时,任务已按预期运行,输出也符合预期。

主机系统是 Linux 共享托管服务器。我设置了一个 CRON 作业,首先使用 mysqldump 转储所有数据库,然后创建一个 TAR 文件,其中包含我需要从主机备份的所有文件夹。这部分工作得非常好。

正如我所说,在 Windows 上运行 Rsync 来获取 TAR 文件也很好用,我特别喜欢它使用增量复制来仅移动不同的位的方式。这节省了大量流量,这也是我首先想要使用 Rsync 的主要原因之一。

答案1

我也遇到过这个问题,升级我的 Cygwin 也没有解决问题。

我最终将问题归咎于启动 rsync 的脚本;该脚本包含以下几行:

REM Set HOME variable to your windows home directory. That makes sure 
REM that ssh command creates known_hosts in a directory you have access.
SET HOME=%HOMEDRIVE%%HOMEPATH%

似乎在 Windows Scheduler 下,HOMEDRIVE 和 HOMEPATH 未初始化,因此未设置 HOME,并且 ssh.exe 在要求接受远程密钥时挂起。

将 HOME 初始化为已知目录后,它开始正常工作。

答案2

我遇到了同样的问题...我首先从 rsync.net 更新了我的 Windows 版 Rsync 版本,但这没有帮助。

于是我查看了他们的 bat 示例文件。我注意到路径不适合 Windows 2008。

我刚刚打开了系统的环境变量并添加了以下内容......

冷水机组同步=C:\Program Files (x86)\cwRsync

赛格威=非安全

路径----- < 只是示例批处理中的 REM 没有添加到环境变量

*小路=C:\Program Files (x86)\cwRsync\bin

*在 ; 之后添加到已经很长的 PATH 中

然后我只需要删除批处理文件中设置的所有路径,除了 设置主页=C:\RSYNC <--- 我将 SSH 文件夹和文件的公钥和私钥移动到此目录,并确保在运行此程序的计算机中将此文件夹的安全性设置为所有人,因为该任务是以服务帐户而不是管理员身份运行的。当时我正试图消除失败的原因。

  • 我所说的示例 bat 是随安装一起提供的Rsync.net对于 rsync - 这是一个较旧的版本,但对我来说很有用(3.1)(我之前的版本是 2.6,我试图尽可能少地进行更改)

Rsync 现在在 Windows Server 2008 R2 中作为计划任务运行,没有问题。每 30 分钟

源码中 Rsync 的最新版本(不是我用的,但应该没什么坏处)

http://sourceforge.net/projects/sereds/files/cwRsync

我希望这能帮助那些陷入这个问题的人,这非常令人沮丧!!!

答案3

问题解决了。我重新安装 Cygwin 以获取最新版本的 SSH 和 RSYNC,现在一切运行正常。

答案4

在 2018 年 Windows 10 上遇到同样的问题后,我发现问题的根源在于 SYSTEM 帐户(运行任务的帐户)不信任目标 SSH 服务器,因此 SSH 会在无头终端会话中不断提示信任、批准或取消连接。

为了解决这个问题,我将服务器添加到 SYSTEM 帐户的~/.ssh/known_hosts文件中,并从我自己的用户文件中复制出来。

相关内容