我想使用 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
文件中,并从我自己的用户文件中复制出来。