通过system()调用rsync命令失败

时间:2011-05-18 18:11:01

标签: c system rsync

这是我正在使用的命令:

rsync --partial --timeout=60 --rsh='/usr/bin/ssh -i /root/.ssh/id_rsa' /path/file user@host:/remote_path/

当我在命令行上运行它时,这是有效的,但是当我在C程序中使用system()时,它不起作用。

更正:无论程序运行多长时间,此调用在启动后都不起作用。如果程序重新启动,无论程序运行多少次,它都会一直工作。

status = system("rsync --partial --timeout=60 --rsh='/usr/bin/ssh -i /root/.ssh/id_rsa' /path/file user@host:/remote_path/");

rsync的返回值为12:rsync协议数据流出错。

1 个答案:

答案 0 :(得分:1)

原来问题是环境变量。 HOME在启动时设置为'/'而不是'/ user'。 ssh无法找到known_hosts文件,因此自动登录失败,导致rsync失败。