这是我正在使用的命令:
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协议数据流出错。
答案 0 :(得分:1)
原来问题是环境变量。 HOME在启动时设置为'/'而不是'/ user'。 ssh无法找到known_hosts文件,因此自动登录失败,导致rsync失败。